解决方法如下所示:
首先,您需要使用 AWS CLI 或 AWS 控制台创建一个 IAM 策略,以允许仅指定的角色访问 Secrets Manager 密钥。
以下是一个示例 IAM 策略,假设您只允许名为 "AllowedRole" 的角色访问密钥:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowOnlyAllowedRole",
"Effect": "Deny",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:userid": "AROAJKXXXXXXXXX:role/AllowedRole"
}
}
}
]
}
请注意,上述策略将拒绝除 "AllowedRole" 以外的所有角色的 GetSecretValue 和 DescribeSecret 操作。
接下来,您需要将上述策略附加到 Secrets Manager 密钥上。
aws secretsmanager tag-resource --secret-id your-secret-id --tags Key=iam:policy,Value=your-policy-arn
将 "your-secret-id" 替换为您的 Secrets Manager 密钥的 ID,并将 "your-policy-arn" 替换为上面创建的 IAM 策略的 ARN。
使用 AWS 管理控制台,在 Secrets Manager 密钥的 "Permissions" 选项卡下,单击 "Add IAM Policy"。
将上述 IAM 策略的 JSON 内容粘贴到 "Policy Document" 字段中。
单击 "Add" 以附加策略。
现在,只有被允许的角色才能访问该 Secrets Manager 密钥。其他角色将被拒绝访问。
请注意,以上示例仅适用于 GetSecretValue 和 DescribeSecret 操作。如果需要其他操作的访问控制,请相应地修改 IAM 策略。