amazon-web-services - AWS IAM ARN 和通配符
问题描述
从https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html的 AWS IAM ARN 文档中,我可以看到如下所示的通配符使用,这非常令人困惑。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManageRichardAccessKeys",
"Effect": "Allow",
"Action": [
"iam:*AccessKey*",
"iam:GetUser"
],
"Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard"
},
{
"Sid": "ListForConsole",
"Effect": "Allow",
"Action": "iam:ListUsers",
"Resource": "*"
}
]
}
在第一个语句中"Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard"
,为什么我们不指定帐号而只是用通配符“*”代替 - 我知道在 S3 的上下文中这是留空的,但在这里它是通配符 - 这里的通配符到底是什么意思? 通配符似乎赋予它“任何帐户”之类的含义,但这不正确吗?
另外,对于第二个语句"Resource": "*"
,这是否意味着任何资源的 ListUsers?这没有任何意义 - 这不应该类似于arn:aws:iam::123456789012:
指示此 AWS 账户 (123456789012) 的列表用户吗?
解决方案
假设查询确实有效(我没有测试它们):
- 是的,省略帐号是一个“小”危险,因为它还允许具有此策略的用户管理不同帐户中同名用户的访问密钥,但接收帐户不会接受请求,所以这是安全的。
- 该
ListUsers
命令实际上并不需要很多参数(只是一个前缀),所以它实际上是一个“全有或全无”的 API 调用。请注意,它仅适用于请求用户列表,没有别的。(也就是说,没有调用“ListUsers for a resource”的概念。)
请参阅:Identity and Access Management 的操作、资源和条件键 - AWS Identity and Access Management
推荐阅读
- javascript - 是否可以使用带有 Javascript 的 HTML 的 CANVAS 上下文(ctx)来制作字体选择器?
- android - Admob 广告停止工作 - iOS14 是否也影响 android 版本控制?
- kotlin - 在接口方法中获取当前事务句柄
- c - * 之间有什么区别
和 * 在 C 中? - mysql - mysql 日志文件的文件位置
- arrays - 将 2 个数组合并为 1 个数组并过滤这个合并的数组,
- python-3.x - 如何根据组将值归入异常单元格?
- html - 在 CSS 对齐方面需要帮助
- python-3.x - Python:以块的形式读取大型 CSV
- kamailio - 如何制作 kamailio 串行分叉?