StackPolicies
1 CloudFormation Stack Policies
- CloudFormation Stack Policies는 스택의 리소스를 보호하기 위해 적용할 수 있는 규칙 집합입니다.
- 이를 통해 의도하지 않은 리소스 변경을 방지할 수 있습니다.
- 이번 포스트에서는 Stack Policies의 개념과 사용법에 대해 알아보겠습니다.
2 Stack Policies란?
- Stack Policies는 CloudFormation 스택의 리소스를 보호하기 위해 사용됩니다.
- 특정 리소스에 대한 업데이트를 허용하거나 거부하는 규칙을 정의할 수 있습니다.
- 이를 통해 중요한 리소스가 실수로 수정되거나 삭제되는 것을 방지할 수 있습니다.
3 Stack Policies 사용법
{
"Statement": [
{
"Effect": "Deny",
"Action": "Update:Modify",
"Principal": "*",
"Resource": "LogicalResourceId/MyImportantResource"
}
]
}
- Stack Policies는 JSON 형식으로 정의되며,
AWS::CloudFormation::Stack리소스의StackPolicy속성에 적용됩니다. - Stack Policy를 적용하려면 스택을 생성하거나 업데이트할 때 정책을 포함해야 합니다.
- 위 예제는
MyImportantResource라는 논리적 리소스 ID에 대한 업데이트를 거부하는 Stack Policy를 정의합니다.
4 Stack Policies의 주요 요소
Effect: 정책의 효과를 정의합니다.Allow또는Deny값을 가질 수 있습니다.Action: 정책이 적용되는 액션을 정의합니다. 예를 들어,Update:Modify는 리소스의 수정을 의미합니다.Principal: 정책이 적용되는 주체를 정의합니다.*은 모든 주체를 의미합니다.Resource: 정책이 적용되는 리소스를 정의합니다. 논리적 리소스 ID를 사용합니다.
5 Stack Policies 예시
5.1 특정 리소스 업데이트 금지 예시
{
"Statement": [
{
"Effect": "Deny",
"Action": "Update:Modify",
"Principal": "*",
"Resource": "LogicalResourceId/MyImportantResource"
}
]
}
- 위 정책은
MyImportantResource리소스에 대한 모든 업데이트를 거부합니다.
5.2 특정 리소스 삭제 금지 예시
{
"Statement": [
{
"Effect": "Deny",
"Action": "Update:Delete",
"Principal": "*",
"Resource": "LogicalResourceId/MyCriticalResource"
}
]
}
- 위 정책은
MyCriticalResource리소스에 대한 삭제를 거부합니다.
5.3 여러 리소스 보호 예시
{
"Statement": [
{
"Effect": "Deny",
"Action": "Update:*",
"Principal": "*",
"Resource": [
"LogicalResourceId/Resource1",
"LogicalResourceId/Resource2"
]
}
]
}
- 위 정책은
Resource1과Resource2리소스에 대한 모든 업데이트를 거부합니다.
6 Stack Policies 적용 방법
- AWS Management Console, AWS CLI, 또는 AWS SDK를 사용하여 Stack Policy를 적용할 수 있습니다.
- 스택을 생성하거나 업데이트할 때
--stack-policy-body또는--stack-policy-url옵션을 사용하여 Stack Policy를 지정할 수 있습니다.
6.1 AWS CLI를 통한 Stack Policy 적용 예시
aws cloudformation create-stack --stack-name my-stack --template-body file://template.json --stack-policy-body file://policy.json
- 위 명령어는
template.json템플릿을 사용하여my-stack스택을 생성하고,policy.json파일에 정의된 Stack Policy를 적용합니다.
7 요약
- Stack Policies는 CloudFormation 스택의 리소스를 보호하기 위해 사용됩니다.
- 특정 리소스에 대한 업데이트나 삭제를 허용하거나 거부하는 규칙을 정의할 수 있습니다.
- 이를 통해 중요한 리소스가 실수로 수정되거나 삭제되는 것을 방지할 수 있습니다.