CloudFormation YAML - 带有条件语句的 IAM 策略

Kli*_*ker 5 yaml amazon-web-services aws-cloudformation amazon-iam

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

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

{
    "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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Statement:
  - Effect: Allow
    Action: kms:DecryptSecretValue
    Resource: arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602
Run Code Online (Sandbox Code Playgroud)

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

Azi*_*ize 17

对于 json 策略的每个级别,您在 yaml 上添加缩进。
Condition处于同一水平Effect。是从 缩进的。是从 缩进的。ResourceAction
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"
Run Code Online (Sandbox Code Playgroud)