Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS IAM实例配置文件,用于使用该配置文件管理EC2实例_Amazon Web Services_Amazon Iam - Fatal编程技术网

Amazon web services AWS IAM实例配置文件,用于使用该配置文件管理EC2实例

Amazon web services AWS IAM实例配置文件,用于使用该配置文件管理EC2实例,amazon-web-services,amazon-iam,Amazon Web Services,Amazon Iam,我有一个IAM用户,它启动一个包含 -带有 -与应用程序关联的IAM实例配置文件 -IAM角色 在AWS::CloudFormation::Init块中,EC2实例执行一些操作,这些操作要求它调用一些EC2:*API操作。但是,该实例应该只能为该实例本身调用这些操作 启动堆栈的用户仅具有附加一组预定义策略和创建角色的权限。像这样的 "CloudFormationStackLauncher": { "Type": "AWS::IAM::ManagedPolicy", "Properties

我有一个IAM用户,它启动一个包含 -带有 -与应用程序关联的IAM实例配置文件 -IAM角色

在AWS::CloudFormation::Init块中,EC2实例执行一些操作,这些操作要求它调用一些EC2:*API操作。但是,该实例应该只能为该实例本身调用这些操作

启动堆栈的用户仅具有附加一组预定义策略和创建角色的权限。像这样的

"CloudFormationStackLauncher": {
  "Type": "AWS::IAM::ManagedPolicy",
  "Properties": {
    "Description": "Allows attached entity to attach and detach required policies from roles it creates.",
    "PolicyDocument": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:AttachRolePolicy",
            "iam:DetachRolePolicy"
          ],
          "Resource": "*",
          "Condition": {
            "ArnEquals": {
              "iam:PolicyArn": [
                "arn:aws:iam:::policy/InstanceThatCanManageItself",                    
              ]
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:CreateRole"
          ],
          "Resource": "*"
        }
      ]
    }
  }
}
因此,我需要一个策略实例CanManager本身的定义(需要具有完全管理权限的用户提前定义)。理想情况下,它看起来像:

    {
        "Effect": "Allow",
        "Action": [
            "ec2:*"
        ],
        "Resource": [
            "${ec2:SourceInstanceARN}"
        ]
    }
但它表示此策略无效,因为策略变量ec2:SourceInstanceARN的格式不是有效的ARN。我曾尝试在EC2实例上使用标记并向策略添加条件,但当条件是动态的时,它似乎不起作用,如下所示:

   {
        "Effect": "Allow",
        "Action": [
            "ec2:*"
        ],
        "Resource": [
            "*"
        ],
        "Condition": {
            "StringLike": {
                "ec2:ResourceTag/role" : "${aws:userid}"
            }
        }
    }
在上面,我将动态地向启动的EC2实例添加一个标记,其格式为“RoleId:InstanceId”,正如为{aws:userid}指定的值所定义的格式,基于以下描述:。这种方法进行验证,但不起作用……要么因为它是动态的……要么因为操作类型不支持ResourceTag上下文键

有没有办法做到这一点


谢谢。

基于资源标签的授权仅适用于某些操作。例如,请参见:。例如,不支持所有描述操作,必须通过单独的策略声明进行许可。
作为支持资源标记的操作示例,附加/分离卷(有关支持的操作及其要求,请参见上面的同一链接),因此以下策略将起作用:

{
"Version": "2012-10-17",
"Statement": [        
    {
        "Effect": "Allow",
        "Action": [
            "ec2:AttachVolume",
            "ec2:DetachVolume"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "ec2:ResourceTag/policyuser": "${aws:userid}"
            }
        }
    }
]
}
,前提是卷和ec2实例都被标记为标签“policyuser”,并且值等于角色id:ec2实例id(请参阅),其中角色id是角色的唯一标识符,通过例如

aws iam get-role --role-name rolename

这应该是您缺少了“2”{“Effect”:“Allow”,“Action”:[“ec2:*”],“Resource”:[“${ec2:SourceInstanceARN}”]}与当前问题无关…不会更改结果