IAM 정책 버전 관리
IAM 정책 버전 관리
IAM 고객 관리형 정책을 변경하거나 AWS가 AWS 관리형 정책을 변경하면, 변경된 정책이 기존 정책을 덮어쓰지 않아요. 대신 IAM이 관리형 정책의 새 버전을 만들어요. IAM은 고객 관리형 정책을 최대 5개 버전까지 저장해요. IAM은 인라인 정책에 대해서는 버전 관리를 지원하지 않아요.
출처: 문서
본문
고객 관리형 정책의 버전 관리를 다이어그램으로 보면, 예를 들어 버전 1~4가 저장돼 있어요. IAM에는 최대 5개의 관리형 정책 버전을 저장할 수 있어요. 여섯 번째 저장 버전을 만들게 되는 정책을 편집할 때는 어떤 이전 버전을 더 이상 저장하지 않을지 선택할 수 있어요. 나머지 네 개의 저장된 버전 중 어떤 것으로든 언제든 되돌릴 수 있어요.
정책 버전(policy version)은
Version정책 요소와는 달라요.Version정책 요소는 정책 내부에서 사용되며 정책 언어의 버전을 정의해요. 자세한 내용은 IAM JSON 정책 요소: Version을 참고하세요.
버전을 사용해 관리형 정책의 변경을 추적할 수 있어요. 예를 들어 관리형 정책을 변경한 뒤 그 변경이 의도하지 않은 영향을 일으켰다는 걸 발견할 수 있어요. 이 경우 이전 버전을 기본 버전으로 설정해 관리형 정책의 이전 버전으로 롤백할 수 있어요.
이 페이지에서는 관리형 정책에 버전 관리를 사용하는 방법을 설명해요.
- 버전 한도
- 버전으로 변경 롤백
- 정책 기본 버전 설정 권한
- 고객 관리형 정책의 기본 버전 설정
버전 한도 (Version limits)
관리형 정책은 최대 5개 버전을 가질 수 있어요. AWS CLI나 AWS API에서 5개 버전을 넘어 변경해야 한다면 기존 버전을 하나 이상 먼저 삭제해야 해요. AWS Management Console을 사용하면 정책을 편집하기 전에 버전을 삭제할 필요가 없어요. 여섯 번째 버전을 저장하면 대화 상자가 나타나 정책의 기본이 아닌 버전을 하나 이상 삭제하라고 안내해요. 각 버전의 JSON 정책 문서를 보고 결정할 수 있어요. 이 대화 상자에 대한 자세한 내용은 IAM 정책 편집을 참고하세요.
기본 버전을 제외한 관리형 정책 버전은 원하는 대로 삭제할 수 있어요. 버전을 삭제해도 남은 버전의 버전 식별자는 변하지 않아요. 그래서 버전 식별자가 연속적이지 않을 수 있어요. 예를 들어 관리형 정책의 v2와 v4를 삭제하고 새 버전 두 개를 추가하면 남은 버전 식별자가 v1, v3, v5, v6, v7이 될 수 있어요.
버전으로 변경 롤백 (Use versions to roll back changes)
고객 관리형 정책의 기본 버전을 설정해 변경을 롤백할 수 있어요. 예를 들어 다음 시나리오를 생각해 보세요.
- AWS Management Console로 특정 Amazon S3 버킷을 관리할 수 있게 하는 고객 관리형 정책을 만든다. 생성 시 정책에는 v1으로 식별되는 버전이 하나뿐이므로 그 버전이 자동으로 기본으로 설정된다. 정책은 의도대로 동작한다.
- 나중에 두 번째 Amazon S3 버킷을 관리할 권한을 추가하려고 정책을 업데이트한다. IAM은 변경 사항을 담은 v2로 식별되는 정책의 새 버전을 만든다. v2를 기본으로 설정했는데 얼마 지나지 않아 사용자들이 Amazon S3 콘솔을 사용할 권한이 없다고 보고한다. 이 경우 의도대로 동작하는 정책의 v1으로 롤백할 수 있다. v1을 기본 버전으로 설정하면 사용자들은 원래 버킷을 관리하기 위해 Amazon S3 콘솔을 다시 사용할 수 있다.
- 나중에 정책 v2의 오류를 확인하고 다시 정책을 업데이트해 두 번째 Amazon S3 버킷을 관리할 권한을 추가한다. IAM은 v3으로 식별되는 새 버전을 만든다. v3을 기본으로 설정하면 이 버전이 의도대로 동작한다. 이 시점에서 정책의 v2를 삭제한다.
정책 기본 버전 설정 권한
정책의 기본 버전을 설정하는 데 필요한 권한은 해당 작업의 AWS API 작업에 대응돼요. 정책의 기본 버전을 설정하려면 CreatePolicyVersion 또는 SetDefaultPolicyVersion API 작업을 사용할 수 있어요. 기존 정책의 기본 정책 버전을 설정하도록 허용하려면 iam:CreatePolicyVersion 작업이나 iam:SetDefaultPolicyVersion 작업에 대한 액세스를 허용하면 돼요. iam:CreatePolicyVersion은 정책의 새 버전을 만들고 그 버전을 기본으로 설정할 수 있게 해요. iam:SetDefaultPolicyVersion은 기존 정책 버전 중 어떤 것이든 기본으로 설정할 수 있게 해요.
중요
사용자가 정책의 기본 버전을 변경하지 못하게 하려면
iam:CreatePolicyVersion과iam:SetDefaultPolicyVersion둘 다를 거부해야 해요.
다음 정책을 사용해 사용자가 기존 고객 관리형 정책을 변경하지 못하게 거부할 수 있어요.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"iam:CreatePolicyVersion",
"iam:SetDefaultPolicyVersion"
],
"Resource": "arn:aws:iam::*:policy/POLICY-NAME"
}
]
}
고객 관리형 정책의 기본 버전 설정
관리형 정책의 버전 중 하나가 기본 버전으로 설정돼요. 정책의 기본 버전은 운영 버전이에요. 즉 관리형 정책이 연결된 모든 principal 엔티티(IAM 사용자, IAM 그룹, IAM 역할)에 적용되는 버전이에요.
고객 관리형 정책을 만들면 정책은 v1으로 식별되는 단일 버전으로 시작해요. 단일 버전만 있는 관리형 정책의 경우 그 버전이 자동으로 기본으로 설정돼요. 버전이 여러 개인 고객 관리형 정책은 어떤 버전을 기본으로 설정할지 직접 선택해요. AWS 관리형 정책은 기본 버전이 AWS에 의해 설정돼요. 고객 관리형 정책의 기본 버전을 설정하면 정책이 연결된 모든 IAM 아이덴티티(사용자, 사용자 그룹, 역할)에 해당 버전이 적용돼요. AWS 관리형 정책이나 인라인 정책의 기본 버전은 설정할 수 없어요.
고객 관리형 정책의 기본 버전 설정 (콘솔)
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.
- 탐색 창에서 Policies 를 선택합니다.
- 정책 목록에서 기본 버전을 설정할 정책의 이름을 선택합니다. 검색 상자로 필터링할 수 있습니다.
- Policy versions 탭을 선택합니다. 기본 버전으로 설정할 버전 옆의 확인란을 선택하고 Set as default 를 선택합니다.
AWS CLI나 AWS API에서 고객 관리형 정책의 기본 버전을 설정하는 방법은 IAM 정책 편집 (AWS CLI)을 참고하세요.