amazon-web-services - 为什么 sts:AssumeRole 在信任策略中而不是角色的权限策略中?
问题描述
我是 AWS 新手,但据我了解,角色包含权限策略和信任策略。权限政策似乎很简单——你能做什么。IE:
"iam:CreatePolicy",
"iam:GetRole",
"iam:GetPolicy",
"iam:DeletePolicy",
"iam:CreateRole",
"iam:DeleteRole",
...
另一方面,信任策略是“允许谁做”IE:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::000000000000:role/My-Role"
},
**"Action": "sts:AssumeRole"**
}
]
}
AssumeRole 听起来像是“你能做什么”,那么为什么它总是属于信任策略而不是权限策略。继续下去,我了解到 sts:TagSession 也属于信任策略而不是权限策略。我是否遗漏了什么,或者只是 sts 类型的操作属于信任策略?
解决方案
角色的信任策略描述了允许谁或哪个服务担任该角色。通过调用 sts:AssumeRole 来承担角色。
明确说明该操作的原因是 AWS IAM 策略的工作方式。信任策略是一种资源策略,即附加到资源(在本例中为 IAM 角色),它定义了谁可以使用该资源做什么。
假设一个角色总是需要两个策略一起发挥作用:
委托人(例如 IAM 用户)需要为该角色调用 sts:AssumeRole 的权限,并且该角色必须具有信任策略,允许来自委托人的 sts:AssumeRole。只有当这两个条件都具备时,校长才能担任该角色。必须明确允许委托人,并且角色必须明确信任委托人。
推荐阅读
- java - 如何在 Redis 中使用 Jedis 中的多个键?二级索引
- java - 用于在 Android 中下载 Web 内容的 AysncTask
- java - SonarQube Scanner 执行期间出错错误:“您必须为‘未知’定义以下强制属性:sonar.projectKey”
- azure - Azure Devops:如何通过 Rest API 检索发布工件的版本?
- php - laravel 等价顺序随机
- excel - 是否有易于使用的应用程序/脚本在扫描二维码后弹出图像?
- javascript - 反应不要使用字符串文字在单元格中呈现空值
- python - Python Matplotlib:为旋转的 PatchCollection 设置动画
- python - django rest 框架序列化器允许额外的字段
- vegan - 素食包装中的 NMDS