将 AWS Secrets Manager 中的资源访问限制为一个组

Restrict access to ressources from AWS Secrets Manager to a group

我的 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 字段,我可以列出所有这些。

我也尝试使用标签添加条件,但我仍然可以在没有标签的情况下列出机密。

要么我可以访问所有机密,要么none。

它对我有用。

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

  • 创建了一个前缀为 Test/
  • 的 Secret
  • 使用此策略(没有其他权限)创建一个 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/前缀中添加了一个not的secret,然后我unablelist-secrets 如上所示。然后我删除了那个额外的秘密,仍然无法列出秘密(可能是因为秘密需要 7 天才能删除)。