【问题标题】:Restrict access to ressources from AWS Secrets Manager to a group将 AWS Secrets Manager 对资源的访问限制为组
【发布时间】:2021-10-11 06:13:41
【问题描述】:

我的 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/*"
        }
    ]
}

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-secrets-manager aws-policies


    【解决方案1】:

    它对我有用。

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

    • 创建了一个前缀为 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 的秘密,然后我无法list-secrets,如上所示。然后我删除了那个额外的秘密,并且仍然无法列出秘密(可能是因为秘密需要 7 天才能被删除)。

    【讨论】:

    • 好吧,我只是再试了一次,几个小时后没有做任何更改,现在它可以工作了。等待规则生效是否有延迟?
    • IAM 可能会有一点延迟,但不会超过一分钟左右。
    猜你喜欢
    • 2019-11-28
    • 2020-09-28
    • 2021-01-19
    • 2023-01-01
    • 2021-11-26
    • 2020-04-24
    • 2018-11-20
    • 2020-06-16
    • 2021-10-03
    相关资源
    最近更新 更多