

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CloudFormation에 대한 ID 기반 정책 샘플
<a name="sample-id-policies-for-cloudformation"></a>

이 섹션에는 CloudFormation에서 권한을 부여하고 권한을 거부하는 방법을 보여주는 ID 기반 정책 샘플이 포함되어 있습니다. 이러한 샘플 정책을 사용하여 최소 권한 원칙을 준수하는 자체 정책 설계를 시작할 수 있습니다.

CloudFormation별 작업 및 조건 목록은 [Actions, resources, and condition keys for AWS CloudFormation](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html) 및 [AWS CloudFormation 조건](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#using-iam-template-conditions)을 참조하세요. 조건과 함께 사용할 리소스 유형 목록은 [AWS 리소스 및 속성 유형 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)를 확인하세요.

**Topics**
+ [보기 액세스 허용](#sample-allow-view-access)
+ [템플릿을 기반으로 스택 생성 허용](#sample-allow-stack-creation-based-on-template)
+ [스택 업데이트 또는 삭제 거부](#sample-deny-stack-changes)

## 보기 액세스 허용
<a name="sample-allow-view-access"></a>

보기 액세스는 CloudFormation에 대한 최소 권한 액세스 유형입니다. 이러한 종류의 정책은 AWS 계정의 모든 CloudFormation 스택을 보려는 IAM 위탁자에게 적합할 수 있습니다. 다음 정책 샘플은 계정에 있는 CloudFormation 스택의 세부 정보를 볼 권한을 부여합니다.

```
{ 
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:DescribeStacks",
        "cloudformation:DescribeStackEvents",
        "cloudformation:DescribeStackResource",
        "cloudformation:DescribeStackResources"
      ],
      "Resource": "*"
    }
  ]
}
```

## 템플릿을 기반으로 스택 생성 허용
<a name="sample-allow-stack-creation-based-on-template"></a>

다음 샘플 정책에서는 IAM 위탁자가 특정 Amazon Simple Storage Service(Amazon S3) 버킷에 저장된 CloudFormation 템플릿만 사용하여 스택을 생성할 수 있도록 허용합니다. 버킷 이름은 `my-CFN-templates`입니다. 승인된 템플릿을 이 버킷에 업로드할 수 있습니다. 정책의 `cloudformation:TemplateUrl` 조건 키는 IAM 위탁자가 다른 템플릿을 사용하여 스택을 생성하지 못하도록 방지합니다.

**중요**  
IAM 위탁자가 이 S3 버킷에 대한 읽기 전용 액세스 권한을 갖도록 허용합니다. 이렇게 하면 IAM 위탁자가 승인된 템플릿을 추가, 제거 또는 수정하지 못하게 방지할 수 있습니다.

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:CreateStack"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "cloudformation:TemplateUrl": "https:// my-CFN-templates.s3.amazonaws.com/*"
        }
      }
    }
  ]
}
```

## 스택 업데이트 또는 삭제 거부
<a name="sample-deny-stack-changes"></a>

비즈니스 크리티컬 AWS 리소스를 프로비저닝하는 특정 CloudFormation 스택을 보호하기 위해 해당 특정 스택에 대한 업데이트 및 삭제 작업을 제한할 수 있습니다. 이러한 작업은 소수의 지정된 IAM 위탁자에 대해서만 허용하고 환경의 다른 IAM 위탁자에 대해서는 작업을 거부할 수 있습니다. 다음 정책 문은 특정 AWS 리전 및에서 특정 CloudFormation 스택을 업데이트하거나 삭제할 수 있는 권한을 거부합니다 AWS 계정.

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "cloudformation:DeleteStack",
        "cloudformation:UpdateStack"
      ],
      "Resource": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/<stack_ID>"
    }
  ]
}
```

이 정책 문은 `us-east-1` AWS 리전 및에 있는 `MyProductionStack` CloudFormation 스택을 업데이트하거나 삭제할 수 있는 권한을 거부합니다`123456789012` AWS 계정. 스택 ID는 CloudFormation 콘솔에서 확인할 수 있습니다. 다음은 사용 사례에 맞게 이 명령문의 `Resource` 요소를 수정하는 방법에 대한 몇 가지 예제입니다.
+ 이 정책의 `Resource` 요소에서 여러 CloudFormation 스택 ID를 추가할 수 있습니다.
+ `arn:aws:cloudformation:us-east-1:123456789012:stack/*`를 사용하여 IAM 보안 주체가 `us-east-1` AWS 리전 및 `123456789012` 계정에 있는 스택을 업데이트하거나 삭제하지 못하도록 할 수 있습니다.

이 명령문을 포함해야 하는 정책을 결정하는 것이 중요합니다. 다음 정책에 이 명령문을 추가할 수 있습니다.
+ **IAM 위탁자에게 연결된 ID 기반 정책** - 이 정책에 명령문을 추가하면 특정 IAM 위탁자가 특정 CloudFormation 스택을 생성하거나 삭제하는 것이 제한됩니다.
+ **IAM 위탁자에게 연결된 권한 경계** - 이 정책에 명령문을 배치하면 권한 가드레일이 생성됩니다. 둘 이상의 IAM 위탁자가 특정 CloudFormation 스택을 생성하거나 삭제하는 것을 제한하지만 환경의 모든 위탁자를 제한하지는 않습니다.
+ **계정, 조직 단위 또는 조직에 연결된 SCP** - 이 정책에 명령문을 배치하면 권한 가드레일이 생성됩니다. 대상 계정, 조직 단위 또는 조직의 모든 IAM 위탁자가 특정 CloudFormation 스택을 생성하거나 삭제하지 못하도록 제한합니다.

  그러나 *권한이 있는 위탁자*인 IAM 위탁자 한 명 이상의 CloudFormation 스택 업데이트 또는 삭제를 허용하지 않으면 필요한 경우이 스택을 통해 프로비저닝된 리소스를 변경할 수 없습니다. 사용자 또는 개발 파이프라인(권장)은 이 권한이 있는 위탁자를 수임할 수 있습니다. 제한을 SCP로 배포하려면 대신 다음 정책 명령문을 사용하는 것이 좋습니다.

  ```
  {
    "Version": "2012-10-17",		 	 	 		 	 	 
    "Statement": [
      {
        "Effect": "Deny",
        "Action": [
          "cloudformation:DeleteStack",
          "cloudformation:UpdateStack"
        ],
        "Resource": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/<stack_ID>",
        "Condition": {
          "ArnNotLike": {
            "aws:PrincipalARN": [
              "<ARN of the allowed privilege IAM principal>"
            ]
          }
        }
      }
    ]
  }
  ```

  이 명령문에서 `Condition` 요소는 SCP에서 제외되는 IAM 위탁자를 정의합니다. 이 명령문은 IAM 위탁자의 ARN이 `Condition` 요소의 ARN과 일치하지 않는 한 CloudFormation 스택을 업데이트하거나 삭제할 수 있는 IAM 위탁자 권한을 거부합니다. `aws:PrincipalARN` 조건 키는 목록을 수락합니다. 즉, 환경에 필요한 경우 제한에서 둘 이상의 IAM 위탁자를 제외할 수 있습니다. CloudFormation 리소스 수정을 방지하는 유사한 SCP는 [SCP-CLOUDFORMATION-1](https://aws-samples.github.io/aws-iam-permissions-guardrails/guardrails/scp-guardrails.html#scp-cloudformation-1)(GitHub)을 참조하세요.