Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 CloudFormation-IAM-带标签的访问控制_Amazon Web Services_Amazon Cloudformation_Amazon Iam - Fatal编程技术网

Amazon web services CloudFormation-IAM-带标签的访问控制

Amazon web services CloudFormation-IAM-带标签的访问控制,amazon-web-services,amazon-cloudformation,amazon-iam,Amazon Web Services,Amazon Cloudformation,Amazon Iam,我需要创建一个可供开发人员使用的角色。我们只有一个Dev和Prod帐户(我知道不推荐)。创建的资源用dev或prod标记,以标识环境。要求开发人员可以在两种环境上都具有ReadOnlyAccess,但只能对标记为“dev”的资源进行完全访问 因此,如果开发人员想要创建一个资源,他应该用dev标记它。此外,他可以修改其他用户创建的其他资源,这些资源也用dev标记。从AWS文档中,我创建了一个CloudFormation模板,其中包含以下代码段,但我注意到只允许ReadOnlyAccess。开发人员

我需要创建一个可供开发人员使用的角色。我们只有一个Dev和Prod帐户(我知道不推荐)。创建的资源用dev或prod标记,以标识环境。要求开发人员可以在两种环境上都具有ReadOnlyAccess,但只能对标记为“dev”的资源进行完全访问

因此,如果开发人员想要创建一个资源,他应该用dev标记它。此外,他可以修改其他用户创建的其他资源,这些资源也用dev标记。从AWS文档中,我创建了一个CloudFormation模板,其中包含以下代码段,但我注意到只允许ReadOnlyAccess。开发人员无法创建带有“dev”标记的资源,也无法修改已具有“dev”标记的资源。任何指示都会有帮助

我想使用PowerUseAccess,这是一个托管策略,但不知道如何在托管策略之上提供条件

RoleDeveloper:
Type: AWS::IAM::Role
Properties:
  RoleName: DeveloperRole
  AssumeRolePolicyDocument:
    Version: 2012-10-17
    Statement: 
      - Effect: Allow
        Principal:
          AWS: !Sub arn:aws:iam::${UserAccountId}:root
        Action:
          - 'sts:AssumeRole'
  Path: /      
  Policies:
    - PolicyName: FullDeveloperAccessWithDevTag
      PolicyDocument:
        Version: 2012-10-17
        Statement: 
          - Effect: Allow
            Action: "*"
            Resource: "*"
            Condition:
              StringEquals:
                aws:ResourceTag/env:
                  - dev
  ManagedPolicyArns:
    - arn:aws:iam::aws:policy/ReadOnlyAccess

通配符不是问题所在。相反,问题是不是每个API调用都会遵守该条件

例如,
s3:ListBucket
不将标记作为条件。
dynamodb:ListTables也没有

此外,虽然一些命令(我称之为操作)将接受条件,但它们不一定接受标记作为条件

以下是显示DynamoDB的条件的文档:。我看不到任何对标签的引用

但是,标记可用作Amazon EC2的条件键:


因此,有些服务和API调用根本不受标记的限制。

很可能该条件仅适用于某些操作,因为并非所有操作都支持该条件。你能告诉我们一个他们试图做什么但被拒绝的例子吗?另外,请告诉我们他们如何尝试执行该操作(控制台、AWS CLI命令、API调用),以便我们可以尝试重现这种情况。@JohnRotenstein您的意思是
操作的通配符
不适用于条件吗?举个例子,我可以说DynamoDB。开发人员应该使用标记env:dev创建一个表,或者使用该标记轻松地修改现有表。但事实并非如此。访问是使用控制台进行的。同样,我在
操作中使用了通配符,因为我应该根据开发人员的标记限制他们对所有资源的访问。谢谢。这是有道理的。