我在AWS有一个要求。非管理员用户需要在AWS Secrets Manager中写入某些机密。AWS管理员不应访问这些机密。
在这里,AWS 管理员是对用户附加“AdministratorAccess”策略的人,而非管理员是由管理员创建的用户,并且仅授予对某些服务的有限访问权限。
我想将我的应用程序的“用户名和密码”存储在机密管理器中。AWS Lambda也将使用相同的凭证。
我可以写以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:*",
"Principal": {"AWS": "arn:aws:iam::123456789011:user/app-admin-user"},
"Resource": "*"
},
{
"Effect": "Deny",
"Action": "secretsmanager:*",
"Principal": {"AWS": "arn:aws:iam::123456789011:user/aws-admin-user"},
"Resource": "*"
}
]
}
但此政策仅拒绝单个用户。我想在单一策略中拒绝账户中的所有 AWS 管理员。
而不是Principal
我尝试NotPrincipal
只写app-admin-user
如下:
{
"Effect": "Deny",
"Action": "secretsmanager:*",
"NotPrincipal": {"AWS": "arn:aws:iam::123456789011:user/app-admin-user"},
"Resource": "*"
}
但这给出了一个AccessDeniedException
说法User does not have permission to specify explicit deny
,因为用户app-admin-user
不是 AWS 管理员。
我附上这个政策文件和我正在创建的秘密。
除了使用AWS Secrets Manager来解决此问题之外,请建议是否有任何替代解决方案可用。