【问题标题】:CloudFormation YAML - IAM policy with a statement that has a conditionCloudFormation YAML - 带有条件语句的 IAM 策略
【发布时间】:2021-07-31 21:24:36
【问题描述】:

我有一个在 AWS 控制台中创建另一个资源时自动创建的 IAM 策略。我正在尝试将其添加到现有的 CloudFormation 堆栈中。

该策略具有以下语句,其中包含“条件”属性:

{
    "Sid": "DecryptSecretValue",
    "Action": [
        "kms:Decrypt"
    ],
    "Effect": "Allow",
    "Resource": [
        "arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602"
    ],
    "Condition": {
        "StringEquals": {
            "kms:ViaService": "secretsmanager.eu-west-1.amazonaws.com"
        }
    }
}

这应该如何在 CloudFormation YAML 模板中构建?到目前为止,我有:

Statement:
  - Effect: Allow
    Action: kms:DecryptSecretValue
    Resource: arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602

但我不知道如何包含“条件”属性。有什么想法吗?

【问题讨论】:

    标签: amazon-web-services yaml amazon-cloudformation amazon-iam


    【解决方案1】:

    对于每个级别的 json 策略,您在 yaml 上添加一个缩进。
    所以ConditionEffectResourceAction 处于同一级别。
    StringEqualsConditions 缩进。
    kms:ViaServiceStringEquals 缩进。

    由于kms:ViaService 名称中有冒号(:),所以需要在引号之间加上。

    Statement:
      - Effect: Allow
        Action: "kms:DecryptSecretValue"
        Resource: "arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602"
        Condition:
          StringEquals:
            "kms:ViaService": "secretsmanager.eu-west-1.amazonaws.com"
    

    【讨论】:

    • 答案很棒。但请提供解释。您只发布代码会使 OP 和未来的 commers 复制并粘贴您的答案,而不了解答案背后的逻辑。请提供一些解释的答案。谢谢!
    • 太好了,谢谢。我搞错了!Equals 函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2020-11-09
    • 1970-01-01
    • 2018-04-13
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多