클라우드(AWS)/DVA-C03

[AWS] CloudFormation 실수로 리소스를 삭제하는 것을 방지하는 방법 (CloudFormation DeletionPolicy, Stack Policy)

찌르비 2024. 11. 7. 18:15
반응형

https://repost.aws/knowledge-center/cloudformation-accidental-updates

 

Restrict user ability to delete or update resources in a CloudFormation stack

I don't want users to delete or update the resources in my AWS CloudFormation stack.

repost.aws

 

 

 

DeletionPolicy attribute

DeletionPolicy

DeletionPolicy는 스택(Stack)에서 리소스를 삭제할 때의 동작을 정의하는 Policy이다.

DeletionPolicy 을 통해 리소스가 스택에서 삭제될 때, 삭제 대신 다른 동작을 하도록 설정할 수 있다.

데이터를 저장하는 리소스(예: RDS 데이터베이스, S3 버킷)에 주로 사용된다. (실수로 데이터를 다 날려보내면 안되니까)

 

 

DeletionPolicy options

DeletionPolicy 주요 옵션:

Retain- 스택이 삭제되어도 해당 리소스를 그대로 유지한다.
Snapshot- 스택이 삭제될 때 리소스의 Snapshot을 생성하여 데이터 복구를 가능하게 한다.
Delete- 리소스를 삭제한다 (default, 기본 값으로 설정되어있다)

 

[YAML 파일 예시]

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain

 

즉, DeletionPolicy는 중요한 리소스를 실수로 삭제하는 것을 방지하거나, 삭제 시 백업(스냅샷)을 생성하여 데이터 손실을 막기 위해 사용된다.

 

공식 문서: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html

 

DeletionPolicy attribute - AWS CloudFormation

DeletionPolicy attribute With the DeletionPolicy attribute you can preserve, and in some cases, backup a resource when its stack is deleted. You specify a DeletionPolicy attribute for each resource that you want to control. If a resource has no DeletionPol

docs.aws.amazon.com

 

 

 

CloudFormation stack policies

Stack Policy

Stack Policy는 특정 AWS 리소스에 대한 변경(업데이트나 삭제)을 제어하여, 실수로 인해 중요한 리소스가 수정되거나 삭제되는 것을 방지하는 정책이다.

  • Stack Policy를 설정함으로써 개발 팀이 AWS 리소스를 업데이트하는 것을 제한 할 수 있다.
  • 이로써 스택을 업데이트하는 동안 의도치 않은 리소스를 변경이나 재생성을 방지할 수 있다
  • Stack Policy는 특정 동작을 Allow하거나 Deny할 수 있다.

 

Configuring stack policies

Stack Policy 예시

Stack Policy를 설정할 때, Effect, Action, Principal, Resource를 포함해야된다.
(선택적으로 Condition추가 가능)

 

MyDatabase라는 RDS 리소스에 대해 모든 업데이트를 거부하는 Stack Policy

{
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "Update:*",
      "Principal": "*",
      "Resource": "LogicalResourceId/MyDatabase"
    }
  ]
}

 

 

 

공식 문서: https://docs.aws.amazon.com/prescriptive-guidance/latest/least-privilege-cloudformation/cloudformation-stack-policies.html

 

CloudFormation stack policies - AWS Prescriptive Guidance

CloudFormation stack policies Stack policies can help prevent stack resources from being unintentionally updated or deleted during a stack update. A stack policy is a JSON document that defines the update actions that can be performed on designated resourc

docs.aws.amazon.com

 

 


🤔 문제

개발팀이 하나의 AWS CloudFormation 템플릿을 사용하여 웹 애플리케이션을 유지 관리하고 있습니다. 이 템플릿에는 웹 서버와 Amazon RDS 데이터베이스가 정의되어 있습니다. 팀은 이 CloudFormation 템플릿을 사용해 서로 다른 환경에 스택을 배포하고 있습니다. 최근의 애플리케이션 배포 중 개발자가 주 개발 데이터베이스를 삭제하고 재생성하는 실수를 하여 데이터 손실이 발생했습니다. 팀은 앞으로 이러한 데이터베이스의 실수로 인한 삭제를 방지할 필요가 있습니다.
데이터베이스의 의도치 않은 삭제를 방지하기 위한 해결책을 선택하세요. (정답 2개)

  1. 데이터베이스 리소스에 Retain 값을 가진 CloudFormation Deletion Policy 속성을 추가합니다.
  2. CloudFormation stack policy을 업데이트하여 데이터베이스에 대한 업데이트를 방지합니다.
  3. 데이터베이스를 Multi-AZ 배포로 수정합니다.
  4. 웹 애플리케이션과 데이터베이스 배포를 위한 CloudFormation 스택 세트를 생성합니다.
  5. 스택에 Retain 값을 가진 CloudFormation Deletion Policy 속성을 추가합니다.

정답

더보기

정답. 1번, 2번

5번이 틀린 이유는 Deletion Policy는 개별의 리소스에 추가하는 것이다.  Stack 전체에는 추가하지 않는다.

 

 

728x90
반응형