Amazon web services can';基于标签限制访问时,不能访问其他角色
我希望允许我的角色仅访问具有特定标记的角色。因此,我创建了一个策略:Amazon web services can';基于标签限制访问时,不能访问其他角色,amazon-web-services,amazon-cloudformation,amazon-iam,Amazon Web Services,Amazon Cloudformation,Amazon Iam,我希望允许我的角色仅访问具有特定标记的角色。因此,我创建了一个策略: "Statement": [ { "Action": [ "iam:GetRole" ], "Resource": "*", "Effect": "Allow", "Condition": { "StringLike":
"Statement": [
{
"Action": [
"iam:GetRole"
],
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringLike": {
"iam:ResourceTag/key": "value"
}
}
}
]
}
对于每个相关角色,我都添加了属性为-key-value的标记
但是,当我使用特定角色时,我会不断出现以下错误:
AccessDenied。用户没有调用iam:GetRole的权限
有什么想法吗 我用这个json创建了一个策略,并将其附加到一个角色,我使用lambda运行该角色。我成功地获得了IAM:Role的arn,该角色具有键值标记,而对一个没有键值标记的角色的访问被拒绝。可能您没有正确附加策略,或者您试图使用其他角色执行操作,请尝试创建实例配置文件并将其附加到ec2,然后从那里或通过lambda运行命令。 太长,读不下去了json很好,问题出在其他地方
{
"Version": "2012-10-17",
"Statement": [
{
"Condition": {
"StringLike": {
"iam:ResourceTag/key": "value"
}
},
"Action": [
"iam:GetRole"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
这是我使用的完整CF堆栈。这是yaml,显然原则应该根据您的需要而改变
Resources:
Role:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
- edgelambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- !Ref Policy
Policy:
Type: AWS::IAM::ManagedPolicy
Properties:
ManagedPolicyName: Get_Role_With_Tag__Policy
Path: /
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- iam:GetRole
Condition:
StringLike:
iam:ResourceTag/key: "value"
Resource: "*"
非常感谢您的回复。不确定还有什么可能出错-我正在通过控制台附加策略,并通过控制台添加标记。所以这应该是相当琐碎的。我通过受信任的实体拥有我正在使用的角色。这可能会引起问题吗?您能否在问题中提供更多细节?是一个人在运行这个服务还是一个服务,这个服务是aws的一部分?基本上,试着解释一下你在做什么,因为我是一只又大又挑剔的野兽,要真正掌握它需要很多时间。我知道这看起来应该很简单,但事实并非如此。没有什么非常复杂的东西——我在vpc中有一个角色,拥有一个受信任的实体。从另一个实体中,我试图使用这个角色来更新堆栈(例如更新lambda函数的代码)。每个lambda都有执行角色,我已经在其中添加了提到的标记。由于某种原因,它不起作用。如果我已经消除了这个条件,它确实有效。我希望这能更好地解释问题。如果呼叫来自ec2,则角色需要将ec2.amazonaws.com作为受信任的实体。如果您在我的回答中编辑了“服务原则”,请以云的形式运行它,并将角色附加到您试图从中执行此操作的实例上,它应该会起作用。该呼叫是作为用户的请求发出的。我已将受信任的实体添加到执行请求的帐户中。事实上,当移除该条件时,它是有效的。所以它一定与我使用的条件/标记有关。不确定原因,但使用“条件”:{“ForAllValues:StringEquals”:{“iam:ResourceTag/key”:“value”}解决了这个问题。