Skip to main content
所有云提供商
  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure
  • 所有云提供商
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

设置Cloud Volumes ONTAP以在 AWS 中使用客户管理的密钥

贡献者 netapp-manini

如果要将 Amazon Web Services (AWS) 加密与 Cloud Volumes ONTAP 结合使用,则需要设置 AWS Key Management Service (KMS)。

客户主密钥 (CMK) 可以由 AWS 或客户管理。它可以与 NetApp Console 和 Cloud Volumes ONTAP 位于同一 AWS 账户中,也可以位于不同的 AWS 账户(共享账户)中。AWS 仅通过 AWS Console 启用密钥管理。有关详细信息,请参阅 "AWS 密钥管理服务"

开始之前
  • 确保您拥有有关 NetApp Console 代理身份和访问管理 (IAM) 角色(适用于 AWS)的信息。

  • 请确保有一个有效的 CMK。

为单个帐户设置客户管理的 KMS 密钥

当控制台代理和 Cloud Volumes ONTAP 位于同一个 AWS 帐户中时,请完成以下步骤:

步骤
  1. 为 Console 代理的 IAM 角色授予 S3 加密权限。将 `s3:PutEncryptionConfiguration`操作添加到 IAM 角色策略:

    {
      "Sid": "cvoServicePolicy",
      "Effect": "Allow",
      "Action": [
        "s3:PutEncryptionConfiguration"
      ],
      "Resource": "*"
    }
  2. 允许 Console 代理访问客户管理的加密密钥 (CMEK)。在 AWS Console 上使用以下方法之一:

将角色添加为关键用户(推荐)
  1. 在 AWS Console 上,转到 KMS > Customer managed keys,然后选择您的 CMEK 密钥。

  2. 在*主要用户*部分,选择*添加*。

  3. 选择您的 Console 代理实例角色,例如, occm-role,然后单击*添加*。

  4. 保存更改。

更新 KMS 密钥策略
  1. 在 AWS Console 上,转到 KMS,然后搜索您的密钥。

  2. 选择*密钥策略*选项卡,然后选择*编辑*。

  3. 搜索允许访问密钥的语句, `AllowUseOfTheKey`并将 Console 代理角色 Amazon Resource Name (ARN) 附加到 `Principal`数组。将以下示例中的占位符替换为您的值:

    • YOUR-ACCOUNT-ID:您的 12 位 AWS 帐户 ID

    • YOUR-AGENT-ROLE-NAME:Console 代理的 IAM 角色的名称

      {
        "Sid": "AllowUseOfTheKey",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::`YOUR-ACCOUNT-ID`:role/`YOUR-AGENT-ROLE-NAME`"
          ]
        },
        "Action": [
          "kms:Encrypt",
          "kms:Decrypt",
          "kms:ReEncrypt*",
          "kms:GenerateDataKey*",
          "kms:CreateGrant",
          "kms:DescribeKey",
          "kms:ListKeys"
        ],
        "Resource": "*"
      }
  4. 保存更改。

为共享帐户设置客户管理的 KMS 密钥

当 Console 代理在一个 AWS 帐户(帐户 A)中运行,且 Cloud Volumes ONTAP 部署在另一个 AWS 帐户(帐户 B)中时,请先完成帐户 A 的所有单帐户步骤,然后再完成这些步骤。

步骤
  1. 将 `s3:PutEncryptionConfiguration`操作添加到帐户 B 的假定角色。这是必需的,因为 FabricPool 存储桶加密调用在帐户 B 的假定角色下运行。此权限涵盖在用于分层的 S3 存储桶上启用默认加密。

    {
      "Sid": "cvoServicePolicy",
      "Effect": "Allow",
      "Action": [
        "s3:PutEncryptionConfiguration"
      ],
      "Resource": "*"
    }
  2. 如果 CMEK 密钥存储在账户 B 中,则账户 A 的代理角色需要直接访问才能使用该密钥。账户 B 中的 KMS 密钥策略授予跨账户访问权限。

    1. 在帐户 B 的 AWS Console 上,转到 KMS > Customer managed keys,然后选择用于 Cloud Volumes ONTAP 部署的 CMEK 密钥。

    2. 打开*密钥策略*选项卡并选择*编辑*。

    3. 添加一个语句,授予 Account A 的 IAM 角色对密钥的访问权限:

      {
        "Sid": "Allow use of the key from the agent account",
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::ACCOUNT-A-ID:role/`YOUR-AGENT-ROLE-NAME`"
        },
        "Action": [
          "kms:Encrypt",
          "kms:Decrypt",
          "kms:ReEncrypt*",
          "kms:GenerateDataKey*",
          "kms:CreateGrant",
          "kms:DescribeKey",
          "kms:ListKeys",
          "kms:ListAliases"
        ],
        "Resource": "*"
      }
      备注 帐户 B 的密钥策略控制是否可以信任帐户 A 的 Console 代理角色来使用密钥。除了帐户 A 的 IAM 策略之外,还需要此策略声明。
  3. 更新账户 A 的 Console 代理的 IAM 策略,以允许对账户 B 的密钥进行 KMS API 调用。

    1. 在帐户 A 的 AWS Console 上,转到 IAM > Roles,然后选择 Console 代理角色,例如, occm-roleNetAppCloudManagerRole

    2. 添加或更新帐户 B 密钥的 KMS 权限:

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "kms:List*",
              "kms:Describe*",
              "kms:Encrypt",
              "kms:Decrypt",
              "kms:ReEncrypt*",
              "kms:GenerateDataKey*",
              "kms:CreateGrant"
            ],
            "Resource": [
              "arn:aws:kms:*:ACCOUNT-B-ID:key/*",
              "arn:aws:kms:*:ACCOUNT-B-ID:alias/*"
            ]
          }
        ]
      }
      备注 帐户 B 中的密钥策略控制对密钥的访问。帐户 A 中的 IAM 策略允许 Console 代理角色进行 KMS API 调用。如果任何一个帐户缺少配置,AWS 将限制访问权限。
  4. 在帐户 B 的 CMEK 上将帐户 A 添加为允许的外部 AWS 帐户。

    1. 在账户 B 的 AWS KMS 控制台上,打开目标 KMS 密钥并找到 Other AWS accounts 部分。

    2. 选择 Add other AWS accounts 并输入 Account A 的 AWS 账户 ID。

      此屏幕截图显示了 AWS KMS 控制台中的“添加其他 AWS 账户”按钮。

    此屏幕截图显示了 AWS KMS 控制台中的“其他 AWS 账户”对话框。