관리형 정책과 인라인 정책
관리형 정책과 인라인 정책 (Managed policies and inline policies)
IAM에서 아이덴티티의 권한을 설정할 때 AWS 관리형 정책, 고객 관리형 정책, 또는 인라인 정책 중 무엇을 쓸지 결정해야 해요. 다음 주제들은 아이덴티티 기반 정책의 각 유형과 언제 쓰는지에 대한 정보를 제공해요.
출처: 문서
본문
다음 표는 이 정책들을 정리해요.
| 정책 유형 | 설명 | 정책을 관리하는 주체 | 권한 수정 | 정책이 적용되는 프린시펄 수 |
|---|---|---|---|---|
| AWS 관리형 정책 | AWS가 만들고 관리하는 독립형 정책 | AWS | 아니요 | 다수 |
| 고객 관리형 정책 | 특정 사용 사례를 위해 우리가 만들고, 원할 때마다 변경·갱신할 수 있는 정책 | 우리 | 예 | 다수 |
| 인라인 정책 | 단일 IAM 아이덴티티(사용자·그룹·역할)를 위해 만들어진 정책으로, 정책과 아이덴티티 사이에 엄격한 일대일 관계를 유지 | 우리 | 예 | 하나 |
역할과 이 정책들을 만드는 방법은 역할 생성 및 정책 연결(콘솔)을 참고하세요.
다루는 주제
- AWS 관리형 정책
- 고객 관리형 정책
- 인라인 정책
- 관리형 정책과 인라인 정책 중 선택
- 인라인 정책을 관리형 정책으로 변환
- 폐기된 AWS 관리형 정책
AWS 관리형 정책
AWS 관리형 정책은 AWS가 만들고 관리하는 독립형(standalone) 정책이에요. 독립형 정책은 정책 이름을 포함한 자체 ARN(Amazon Resource Name)을 갖는다는 뜻이에요. 예를 들어 arn:aws:iam::aws:policy/IAMReadOnlyAccess는 AWS 관리형 정책이에요. ARN에 대한 자세한 내용은 IAM ARN을 참고하세요. AWS 서비스용 AWS 관리형 정책 목록은 AWS 관리형 정책을 참고하세요.
AWS 관리형 정책은 사용자, IAM 그룹, 역할에 적절한 권한을 편리하게 할당하게 해줘요. 직접 정책을 쓰는 것보다 빠르고, 많은 일반적인 사용 사례의 권한을 포함해요.
AWS 관리형 정책에 정의된 권한은 변경할 수 없어요. AWS는 때때로 AWS 관리형 정책에 정의된 권한을 업데이트해요. AWS가 이렇게 하면, 그 정책이 연결된 모든 프린시펄 엔터티(IAM 사용자·IAM 그룹·IAM 역할)에 업데이트가 영향을 줘요. AWS는 새 AWS 서비스가 출시되거나 기존 서비스에 새 API 호출이 가능해질 때 AWS 관리형 정책을 업데이트할 가능성이 가장 높아요. 예를 들어 ReadOnlyAccess라는 AWS 관리형 정책은 모든 AWS 서비스와 리소스에 읽기 전용 접근을 제공해요. AWS가 새 서비스를 출시하면 AWS는 ReadOnlyAccess 정책을 업데이트해 새 서비스의 읽기 전용 권한을 추가해요. 업데이트된 권한은 정책이 연결된 모든 프린시펄 엔터티에 적용돼요.
- 전체 접근 AWS 관리형 정책 — 서비스 관리자를 위해 서비스에 대한 전체 접근을 부여하는 권한을 정의해요. 예:
AmazonDynamoDBFullAccessIAMFullAccess
- 파워 유저 AWS 관리형 정책 — AWS 서비스와 리소스에 전체 접근을 제공하지만 사용자와 IAM 그룹 관리는 허용하지 않아요. 예:
AWSCodeCommitPowerUserAWSKeyManagementServicePowerUser
- 부분 접근 AWS 관리형 정책 — 권한 관리 접근 수준의 권한을 허용하지 않고 AWS 서비스에 특정 수준의 접근을 제공해요. 예:
AmazonMobileAnalyticsWriteOnlyAccessAmazonEC2ReadOnlyAccess
- 직무 기능 AWS 관리형 정책 — IT 업계에서 흔히 쓰는 직무 기능과 밀접하게 정렬되어, 이 직무 기능에 권한을 부여하기 쉽게 해줘요. 직무 기능 정책을 사용하는 핵심 장점은 새 서비스·API 작업이 도입될 때 AWS가 이를 유지·업데이트한다는 거예요. 예를 들어
AdministratorAccess직무 기능은 AWS의 모든 서비스·리소스에 전체 접근과 권한 위임을 제공해요. 이 정책은 계정 관리자에게만 사용하길 권장해요. IAM과 AWS Organizations에 대한 제한된 접근을 제외한 모든 서비스에 전체 접근이 필요한 파워 유저에게는PowerUserAccess직무 기능을 사용하세요. 직무 기능 정책의 목록과 설명은 직무 기능용 AWS 관리형 정책을 참고하세요.
다음 그림은 AWS 관리형 정책을 보여줘요. AdministratorAccess, PowerUserAccess, AWSCloudTrail_ReadOnlyAccess 세 개의 AWS 관리형 정책을 보여줘요. 단일 AWS 관리형 정책이 서로 다른 AWS 계정의 프린시펄 엔터티에, 그리고 단일 AWS 계정의 서로 다른 프린시펄 엔터티에 연결될 수 있다는 점에 주목하세요.
고객 관리형 정책
자체 AWS 계정에 프린시펄 엔터티(IAM 사용자·IAM 그룹·IAM 역할)에 연결할 수 있는 독립형 정책을 만들 수 있어요. 이 고객 관리형 정책을 특정 사용 사례를 위해 만들고, 원할 때마다 변경·갱신할 수 있어요. AWS 관리형 정책과 마찬가지로, 정책을 프린시펄 엔터티에 연결하면 그 엔터티에 정책에 정의된 권한을 부여해요. 정책의 권한을 업데이트하면 그 변경이 정책이 연결된 모든 프린시펄 엔터티에 적용돼요.
고객 관리형 정책을 만드는 좋은 방법은 기존 AWS 관리형 정책을 복사해서 시작하는 거예요. 그러면 처음에 정책이 올바르다는 걸 알 수 있고, 우리 환경에 맞게 커스터마이즈만 하면 되거든요.
다음 그림은 고객 관리형 정책을 보여줘요. 각 정책은 정책 이름을 포함한 자체 ARN을 가진 IAM의 엔터티예요. 같은 정책이 여러 프린시펄 엔터티에 연결될 수 있다는 점에 주목하세요 — 예를 들어 같은 DynamoDB-books-app 정책이 두 개의 서로 다른 IAM 역할에 연결돼요.
자세한 내용은 고객 관리형 정책으로 커스텀 IAM 권한 정의를 참고하세요.
인라인 정책
인라인 정책은 단일 IAM 아이덴티티(사용자, 사용자 그룹, 역할)를 위해 만들어진 정책이에요. 인라인 정책은 정책과 아이덴티티 사이에 엄격한 일대일 관계를 유지해요. 아이덴티티를 삭제하면 인라인 정책도 삭제돼요. 아이덴티티를 만들 때 또는 나중에 정책을 만들어 아이덴티티에 내장할 수 있어요. 정책이 하나 이상의 엔터티에 적용될 수 있다면 관리형 정책을 쓰는 게 더 좋아요.
다음 그림은 인라인 정책을 보여줘요. 각 정책은 사용자·그룹·역할의 고유한 일부예요. 두 역할이 같은 정책(DynamoDB-books-app 정책)을 포함하지만 단일 정책을 공유하는 것은 아니라는 점에 주목하세요. 각 역할은 그 정책의 자체 복사본을 가져요.
더 알아보기 (Learn more)
- 관리형 정책과 인라인 정책 중 선택 — 언제 어떤 정책을 쓸지 정하는 방법을 확인해 보세요.
- 인라인 정책을 관리형 정책으로 변환 — 인라인 정책을 관리형 정책으로 옮기는 방법을 살펴보세요.
- 고객 관리형 정책 — IAM 접근 관리의 기본 개념을 참고하세요.