将 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,然后我unable到list-secrets
如上所示。然后我删除了那个额外的秘密,仍然无法列出秘密(可能是因为秘密需要 7 天才能删除)。
我的 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,然后我unable到list-secrets
如上所示。然后我删除了那个额外的秘密,仍然无法列出秘密(可能是因为秘密需要 7 天才能删除)。