本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程: 访问 AWS Secrets Manager 账户之间的密钥
您可以使用 AWS Secrets Manager 在密钥的整个生命周期内轮换、管理和检索密钥,例如数据库凭证和 API 密钥。此外,您可以通过将基于资源的策略附加到密钥来跨 AWS 账户使用这些密钥。例如,您可以管理一个 AWS 账户中的密钥,并授予其他 AWS 账户中的员工或应用程序使用这些密钥的权限。同样,您可以与业务合作伙伴 (如托管服务提供商 (MSP)) 共享密钥,而无需通过电子邮件和手写备注等渠道传输密钥。基于资源的策略还使您能够控制谁可以管理密钥的权限。例如,您可以授予员工管理特定密钥的权限。
默认情况下,IAM 委托人(用户和角色)无权访问密钥。除了附加到您的账户中的 IAM 委托人的策略之外,您还可以使用基于资源的策略来控制 AWS 账户内或跨账户的访问。当您授予对密钥的访问权限时,IAM 委托人还需要访问用于加密密钥的加密密钥。因此,要启用跨账户访问,您必须授予 权限以访问密钥以及用于加密密钥的加密密钥。
本教程演示了向一个 AWS 账户中的员工授予使用另一个账户中的密钥的权限。使用 AWS Secrets Manager 控制台,您可以向 PRODUCTION
账户、应用程序账户中的 IAM 角色授予权限,以及从您的 CENTRAL_SECURITY
账户(管理密钥的账户)检索密钥。使用占位符 MY_TEST_SECRET
表示现有密钥,使用占位符 MY_CMK
表示用于加密 MY_TEST_SECRET
的自定义主密钥 (CMK),使用占位符 PRODUCTION_SECRET_ROLE
表示用于授予访问权限的 IAM 角色。此过程需要四个步骤:
-
创建基于资源的策略并将其添加到
CENTRAL_SECURITY
账户中的密钥。 -
在
CENTRAL_SECURITY
中更新 CMK 的密钥策略 -
授予 IAM 角色在
PRODUCTION
账户中检索此密钥的权限。 -
通过在
PRODUCTION
账户中检索密钥来验证访问权限。
步骤 1: 为 CENTRAL_SECURITY
账户创建并附加资源策略
-
登录到 AWS Secrets Manager 控制台 (https://console.amazonaws.cn/secretsmanager/
)。 -
选择
MY_TEST_SECRET
。 -
在 Resource Permissions(optional) (资源权限(可选)) 部分中选择 Edit Permissions (编辑权限)。
-
剪切以下策略并将其粘贴到 JSON 字段中:
{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::PRODUCTION:role/PRODUCTION_SECRET_ROLE"}, "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": {"ForAnyValue:StringEquals": {"secretsmanager:VersionStage": "AWSCURRENT"}} } ] }
-
选择 Save (保存)。
您已成功更新此密钥的权限。
步骤 2: 更新您的 CENTRAL_SECURITY
账户中的密钥策略
Secrets Manager默认情况下, 会加密密钥,并允许您在要使用 解密密钥时检索密钥MY_CMK
-
https://console.amazonaws.cn/kms
使用 CENTRAL_SECURITY
账户。 -
选择
MY_CMK
。 -
在 Key policy (密钥策略) 旁边,选择 Edit (编辑)。
-
剪切以下代码并将其粘贴到现有策略中:
"Sid": "AllowUseOfTheKey", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::PRODUCTION:role/PRODUCTION_SECRET_ROLE"}, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-2:CENTRAL_SECURITY:key/MY_CMK" }
这增加了将
Decrypt
和DescribeKey
命令用于MY_CMK
的功能。
步骤 3: 向 Production
IAM 角色授予检索密钥的权限
以 IAM 管理员身份在 PRODUCTION
账户中执行后续步骤。要从 CENTRAL_SECURITY
账户检索密钥,跨账户角色还需要 IAM 权限才能检索密钥并使用中央安全 CMK 解密密钥。
-
使用 https://console.amazonaws.cn/iam/
账户登录 IAM 控制台 Production
。 -
从左侧导航窗格中,选择 Roles (角色)。
-
选择 Production (生产) 角色。
-
在权限选项卡上,选择添加内联策略。
-
选择 JSON 选项卡,然后粘贴以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": " arn:aws:secretsmanager:us-east-1:CENTRAL_SECURITY:secret:SECURITY_SECRET" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:CENTRAL_SECURITY:key/SECURITY_CMK" } ] }
您需要将
CENTRAL_SECURITY
替换为您的安全账户 ID、将SECURITY_SECRET
替换为密钥 ID,并将SECURITY_CMK
替换为您的安全 CMK 的 CMK ID。 -
选择查看策略。
-
将策略命名为
Central_Security_Security-Secret-Access
并选择 Create Policy (创建策略)。
步骤 4: 测试从 SECURITY_SECRET
账户对 PRODUCTION
的访问
-
使用
PRODUCTION_ROLE
凭证运行get-secret-value
命令。 -
返回的输出应该类似于以下示例:
$aws secretsmanager get-secret-value --secret-id SECURITY_SECRET --version-stage AWSCURRENT { “ARN”: “arn:aws:secretsmanager:us-east-1:CENTRAL_SECURITY:secret:SECURITY_SECRET”, “Name”: “SECURITY_SECRET”, “SecretString”: “TheSecretString”, “CreatedDate”: 123456789, “VersionId”: “64c4250d-0b81-42e0-9a0c-e189d3c9aea8”, “VersionsStages”: [ “AWSCURRENT” ] }
您还可以通过选择密钥,然后选择 Resource Permissions (optional) (资源权限(可选)) 来验证 控制台中的资源策略。