首页 > 解决方案 > 将 AWS Secrets Manager 中的资源访问权限限制为组

问题描述

我的 AWS Secrets Manager 中有一些需要使用以下命令从 EC2 实例访问的密钥: aws secretsmanager get-secret-value --secret-id Test/Dev-key

我创建了一个仅用于此目的的 IAM 用户,并创建了一个 IAM 组来应用我创建的 SecretManagerPolicy。我希望这个用户只能访问Test/他们名字中的密钥。所以这是我制定的政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Resource": "arn:aws:secretsmanager:*:*:secret:Test/*"
        }
    ]
}

我的用户无法访问任何密钥或列出它们。如果我用秘密的完整 arn 替换 Resource 字段,我可以列出所有这些。

我还尝试使用标签添加条件,但我仍然可以列出没有标签的秘密。

要么我可以访问所有秘密,要么没有。

标签: amazon-web-servicesamazon-ec2aws-secrets-manageraws-policies

解决方案


它对我有用。

为了重现您的情况,我执行了以下操作:

  • 创建了一个 Secret 前缀为Test/
  • 使用此策略创建一个 IAM 用户(没有其他权限):
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Resource": "arn:aws:secretsmanager:*:*:secret:Test/*"
        }
    ]
}
  • 使用来自该 IAM 用户的凭证运行这些命令:
aws secretsmanager get-secret-value --secret-id Test/bob --profile stack
{
    "ARN": "arn:aws:secretsmanager:ap-southeast-2:123456789012:secret:Test/bob-zWgaQW",
    "Name": "Test/bob",
    "VersionId": "...",
    "SecretString": "{\"foo\":\"bar\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": "2021-08-06T21:07:20.083000+10:00"
}

aws secretsmanager list-secrets --profile stack                         
{
    "SecretList": [
        {
            "ARN": "arn:aws:secretsmanager:ap-southeast-2:123456789012:secret:Test/bob-zWgaQW",
            "Name": "Test/bob",
            "LastChangedDate": "2021-08-06T21:07:20.089000+10:00",
            "LastAccessedDate": "2021-08-06T10:00:00+10:00",
            "Tags": [],
            "SecretVersionsToStages": {
                "...": [
                    "AWSCURRENT"
                ]
            },
            "CreatedDate": "2021-08-06T21:07:20.042000+10:00"
        }
    ]
}

然后我添加了一个不在Test/前缀中的秘密,然后我无法如上所示list-secrets。然后我删除了那个额外的秘密,但仍然无法列出秘密(可能是因为秘密需要 7 天才能删除)。


推荐阅读