我想与其他 AWS 账户共享我的 AWS Secrets Manager 密钥。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
您必须创建和指定 AWS Key Management Service (AWS KMS) 密钥才能在账户之间共享密钥。在账户之间共享密钥时,您不能使用默认 KMS 密钥。默认 KMS 密钥由在 AWS KMS 上运行的 AWS 服务代表您创建、管理和使用。它是您的账户及所在的 AWS 区域所独有的,您只能将其与创建它的服务一起使用。有关详细信息,请参阅 AWS KMS 密钥。
配置拥有密钥的账户
如果您没有密钥,请创建 Secrets Manager 密钥。确保在密钥的 KMS 密钥 ID 参数中指定 Amazon 资源名称 (ARN)。
如果您有使用别名的现有密钥,请修改密钥。确保在密钥的 KMS 密钥 ID 参数中指定 KMS 密钥 ARN。您必须使用完整的 KMS 密钥 ARN 才能从其他账户访问密钥。
重要事项:在以下策略中,将主体 ARN 替换为目标账户的 ARN,将 SecretARN 为来源账户的 ARN,将 KMS 密钥 ARN 替换为来源账户的 ARN。另外将 YOUR-REGION 替换为您的区域。
将以下语句添加到密钥策略中,然后将示例值替换为您的值:
{ "Sid": "AllowUseOfTheKey",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::444455556666:user/username"
},
"Action": [
"kms:Decrypt"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "secretsmanager.YOUR-REGION.amazonaws.com"
},
"StringLike": {
"kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:YOUR-REGION:111122223333:secret:secretname??????"
}
}
}
然后,附加基于资源的策略,以便向 AWS Identity and Access Management (IAM) 角色授予访问密钥的权限。
基于秘密资源的策略示例:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::444455556666:user/username"
},
"Action": "secretsmanager:GetSecretValue",
"Resource": "*"
}
]
}
在需要密钥的其他账户中配置权限
IAM 用户必须拥有 secretsmanager:GetSecretValue 权限才能检索密钥。此外,当使用 KMS 密钥加密密钥时,IAM 用户必须具有解密权限。
将 secretsmanager:GetSecretValue 权限附加到您要检索密钥的 IAM 身份。
策略示例:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGetSecretValue",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": [
"arn:aws:secretsmanager:your-region:777788889999:secret:secretname-??????"
]
},
{
"Sid": "AllowKMSDecrypt",
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:YOUR-REGION:777788889999:key/secretnameKMS_id"
]
}
]
}
然后,运行以下 get-secret-value 命令以检索密钥作为源密钥值:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:YOUR-REGION:777788889999:secret:secretname --version-stage AWSCURRENT --region YOUR-REGION
相关信息
从其他账户访问 AWS Secrets Manager 密钥
How to access secrets across AWS accounts by attaching resource-based policies(如何通过附加基于资源的策略来跨 AWS 账户访问密钥)
在我尝试检索加密的 Secrets Manager 密钥后,如何解决 AWS KMS 密钥访问错误?