관리형 정책과 인라인 정책 - AWS Identity and Access Management

관리형 정책과 인라인 정책

IAM에서 자격 증명에 대한 권한을 설정해야 할 경우 AWS 관리형 정책, 고객 관리형 정책 또는 인라인 정책 중 어느 것을 사용할지를 결정해야 합니다. 다음 단원에서는 각 자격 증명 기반 정책 유형과 사용 시기에 대해 자세히 살펴보겠습니다.

AWS 관리형 정책

AWS 관리형 정책은 AWS에서 생성 및 관리하는 독립적인 정책입니다. 여기에서 독립적인 정책이란 정책 스스로 정책 이름이 포함된 Amazon 리소스 이름(ARN)을 갖고 있다는 것을 의미합니다. 예를 들어 arn:aws:iam::aws:policy/IAMReadOnlyAccess는 AWS 관리형 정책입니다. ARN에 대한 자세한 내용은 IAM ARN 섹션을 참조하세요.

AWS 관리형 정책은 여러 가지 일반 사용 사례에서 권한을 제공할 목적으로 설계되었습니다. AmazonDynamoDBFullAccessIAMFullAccess와 같은 전체 액세스 AWS 관리형 정책은 서비스에 대한 전체 액세스 권한을 부여하여 서비스 관리자에 대한 권한을 정의합니다. AWSCodeCommitPowerUserAWSKeyManagementServicePowerUser와 같은 파워 사용자 AWS 관리형 정책은 파워 사용자용으로 설계되었습니다. AmazonMobileAnalyticsWriteOnlyAccessAmazonEC2ReadOnlyAccess와 같은 부분 액세스 AWS 관리형 정책은 권한 관리 액세스 수준 권한을 허용하지 않고 AWS 서비스에 대한 특정 액세스 수준을 제공합니다. AWS 관리형 정책을 사용하면 정책을 직접 작성하는 것보다 쉽게 사용자, 그룹 및 역할에 적절한 권한을 할당할 수 있습니다.

AWS 관리형 정책에서 특히 유용한 범주 중 하나로, 직무 기능에 대한 범주를 들 수 있습니다. 이러한 정책은 IT 업계에서 일반적으로 사용되는 직무 기능과 긴밀하게 연결됩니다. 이러한 일반적인 직무 기능에 대한 권한 부여를 쉽게 만들기 위해서입니다. 직무 정책을 사용하는 큰 장점 중 하나는 새로운 서비스와 API 작업이 도입될 때마다 AWS가 이를 유지하고 업데이트할 수 있다는 점입니다. 예를 들어 AdministratorAccess 직무는 AWS의 모든 서비스 및 리소스에 대한 모든 액세스 권한 및 작업 권한을 위임합니다. 이 정책은 계정 관리자에게만 사용하는 것이 좋습니다. IAM 및 조직에 대해서는 제한적인 액세스 권한만 있으면 되지만 그 밖의 모든 서비스에 대해 모든 액세스 권한이 필요한 고급 사용자의 경우, PowerUserAccess 직무를 사용하세요. 직무 정책의 목록과 설명은 직무에 관한 AWS 관리형 정책 섹션을 참조하세요.

AWS 관리형 정책에 정의되어 있는 권한은 변경할 수 없습니다. AWS가 AWS 관리형 정책에서 정의한 권한을 간혹 업데이트합니다. AWS에서 업데이트할 경우 정책이 추가되어 있는 모든 보안 주체 엔터티(사용자, 그룹 및 역할)에게도 업데이트가 적용됩니다. 새로운 AWS 제품을 실행하거나 새로운 API 호출을 기존 서비스에 이용하는 경우 AWS가 AWS 관리형 정책을 업데이트할 가능성이 높습니다. 예를 들어 ReadOnlyAccess라는 이름의 AWS 관리형 정책은 모든 AWS 서비스 및 리소스에 대한 읽기 전용 액세스 권한을 제공합니다. AWS에서 새로운 서비스가 실행될 때는 AWS가 ReadOnlyAccess 정책을 업데이트하여 새로운 서비스에 대한 읽기 전용 권한을 추가합니다. 이렇게 업데이트된 권한은 정책이 추가되는 모든 보안 주체 엔터티에게 적용됩니다.

다음은 AWS 관리형 정책을 나타낸 다이어그램입니다. 다이어그램을 보면 AdministratorAccess, PowerUserAccess, 그리고 AWSCloudTrailReadOnlyAccess 등 3개의 AWS 관리형 정책이 있습니다. 다이어그램에도 나와있지만 단일 AWS 관리형 정책을 다른 AWS 계정의 보안 주체 엔터티에 추가할 수도 있고, 단일 AWS 계정의 다른 보안 주체 엔터티에 추가할 수도 있습니다.


        AWS 관리형 정책의 다이어그램

고객 관리형 정책

독립적인 정책은 사용자 자신의 AWS 계정에서 관리하도록 생성할 수도 있습니다. 이러한 정책을 고객 관리형 정책이라고 합니다. 이렇게 생성된 정책은 AWS 계정에 속한 다수의 보안 주체 엔터티에 추가할 수 있습니다. 정책을 보안 주체 엔터티에 추가할 경우 정책에서 정의한 권한까지 엔터티에게 부여하게 됩니다.

고객이 관리하는 정책을 생성하는 좋은 방법은 AWS에서 관리하는 기존의 정책을 복사하여 시작하는 것입니다. 이렇게 하면 시작 시 올바른 정책으로 시작하므로 해당 환경에 맞게 사용자 지정만 하면 됩니다.

다음은 고객 관리형 정책을 나타낸 다이어그램입니다. 각 정책은 자체적으로 정책 이름이 포함된 Amazon 리소스 이름(ARN)을 갖고 있는 IAM 엔터티입니다. 다이어그램을 보면 동일한 정책을 여러 보안 주체 엔터티에 추가할 수 있습니다. 예를 들어 동일한 DynamoDB-books-app 정책이 두 개의 다른 IAM 역할에 추가됩니다.


        고객 관리형 정책의 다이어그램

AWS 관리형 정책으로 권한 사용 시작

최소 권한 부여 또는 작업 수행에 요구되는 권한만 부여하는 정책을 사용하는 것이 좋습니다. 최소 권한을 부여하는 가장 안전한 방법은 팀에 필요한 권한만 있는 고객 관리형 정책을 작성하는 것입니다. 필요한 경우 팀에서 추가 권한을 요청할 수 있는 프로세스를 만들어야 합니다. 팀이 필요한 권한만 제공하는 IAM 고객 관리형 정책을 생성하는 데는 시간과 전문 지식이 필요합니다.

IAM 자격 증명(사용자, 사용자 그룹 및 역할)에 대한 권한을 추가하려면 AWS 관리형 정책을 사용할 수 있습니다. AWS 관리형 정책은 최소 권한을 부여하지 않습니다. 보안 주체가 작업을 수행하는 데 필요한 것보다 더 많은 권한을 부여할 경우 보안 위험을 고려해야 합니다.

AWS 관리형 정책(작업 기능 포함)을 모든 IAM 자격 증명에 연결할 수 있습니다. 최소 권한으로 전환하려면 AWS Identity and Access Management Access Analyzer를 실행하여 AWS 관리형 정책으로 보안 주체를 모니터링합니다. 사용 권한을 학습한 후 사용자 지정 정책을 작성하거나 팀에 필요한 권한만 있는 정책을 생성할 수 있습니다. 이는 덜 안전하지만 팀에서 AWS를 어떻게 사용하는지 학습할 수록 더 많은 유연성을 제공합니다..

AWS 관리형 정책은 여러 가지 일반 사용 사례에서 권한을 제공할 목적으로 설계되었습니다. 특정 작업 기능을 위해 설계된 AWS 관리형 정책에 대한 자세한 내용은 직무에 관한 AWS 관리형 정책 섹션을 참조하세요.

인라인 정책

인라인 정책은 IAM 자격 증명(사용자, 그룹 또는 역할)에 포함되는 정책입니다. 즉, 정책은 자격 증명의 고유한 부분입니다. 자격 증명을 생성하거나 이후에 생성할 때 정책을 생성하여 자격 증명에 삽입할 수 있습니다.

다음은 인라인 정책을 나타낸 다이어그램입니다. 각 정책은 사용자, 그룹 또는 역할에서 내재된 부분입니다. 다이어그램을 보면 2개의 역할에 동일한 정책(the DynamoDB-books-app 정책)이 추가되어 있지만, 단 하나의 정책도 공유하지 않고 역할마다 자체적으로 정책 사본을 갖고 있습니다.


        인라인 정책의 다이어그램

관리형 정책과 인라인 정책의 선택

정책 유형이 다르면 사용 사례도 다릅니다. 대부분 경우 인라인 정책보다는 관리형 정책의 사용을 권장합니다.

관리형 정책은 다음과 같은 기능을 제공합니다.

재사용성

단일 관리형 정책은 다수의 보안 주체 개체(사용자, 그룹 및 역할)에 추가할 수 있습니다. 실제로 정책 라이브러리를 생성하여 AWS 계정에 유용한 권한을 정의한 다음 필요에 따라 생성한 정책을 보안 주체 엔터티에 추가하는 것이 가능합니다.

중앙 변경 관리

관리형 정책 변경 시 정책이 추가되어 있는 모든 보안 주체 엔터티에 변경 사항이 적용됩니다. 예를 들어 AWS API 권한을 추가할 경우 관리형 정책을 업데이트하여 권한을 추가할 수 있습니다. (AWS 관리형 정책을 사용할 때는 AWS가 정책을 업데이트합니다) 정책이 업데이트되면 정책이 추가되어 있는 모든 보안 주체 엔터티에 변경 사항이 적용됩니다. 이와는 대조적으로 인라인 정책을 변경하려면 정책이 추가되어 있는 자격 증명을 일일이 편집해야 합니다. 예를 들어 그룹과 역할에 모두 동일한 인라인 정책이 추가되어 있더라도 정책을 변경하기 위해서는 두 보안 주체 개체를 개별적으로 편집해야만 합니다.

버전 관리 및 롤백

고객 관리 정책을 변경할 경우 변경된 정책은 기존 정책을 덮어쓰지 않습니다. 대신 IAM에서 관리형 정책의 새 버전을 생성합니다. IAM은 고객 관리형 정책을 최대 5개 버전까지 저장합니다. 정책 버전은 필요에 따라 정책을 이전 버전으로 되돌리는 데도 사용됩니다.

참고

정책 버전은 Version 정책 요소와 다릅니다. Version 정책 요소는 정책 내에서 사용되며 정책 언어의 버전을 정의합니다. 정책 버전에 대한 자세한 정보는 IAM 정책 버전 관리 섹션을 참조하세요. Version 정책 요소에 대한 자세한 정보는 IAM JSON 정책 요소: Version을 참조하세요.

권한 위임 관리

정책으로 정의한 권한을 지속적으로 제어하면서 AWS 계정에 속한 사용자가 정책을 추가 및 분리하도록 허용할 수 있습니다. 실제로 일부 사용자에게는 전체 관리자 권한을 위임할 수 있습니다. 다시 말해, 전체 관리자란 정책을 생성, 업데이트 및 삭제할 수 있는 것을 말합니다. 제한된 관리자로서 다른 사용자를 지정할 수 있습니다. 다시 말해, 관리자는 다른 보안 주체 개체에게 정책을 추가할 수 있지만 이때 정책은 추가가 허용된 정책으로 제한됩니다.

권한 위임 관리에 대한 자세한 내용은 정책에 대한 액세스 제어 섹션을 참조하세요.

AWS 관리형 정책의 자동 업데이트

AWS는 AWS 관리형 정책을 유지하면서 필요에 따라 자동으로 업데이트하기 때문에(예를 들어 새로운 AWS 서비스 권한을 추가하기 위해) 직접 변경할 필요가 없습니다. 업데이트는 AWS 관리형 정책을 추가한 보안 주체 엔터티에게 자동으로 적용됩니다.

인라인 정책 사용

인라인 정책은 정책과 정책이 추가된 자격 증명을 정확히 1대 1 관계로 유지할 때 유용합니다. 예를 들어 정책 권한을 의도하지 않은 자격 증명에 실수로 할당하는 일을 배제하려고 합니다. 이때 인라인 정책을 사용하면 정책 권한이 잘못된 자격 증명에 실수로 추가되는 일이 사라집니다. 그 밖에도 AWS Management Console을 사용하여 자격 증명을 삭제할 경우 자격 증명에 삽입된 정책 역시 삭제됩니다. 정책도 보안 주체 개체의 일부이기 때문입니다.

인라인 정책을 관리형 정책으로 변환하기

계정에 인라인 정책이 있는 경우 이를 관리형 정책으로 변환할 수 있습니다. 이렇게 하려면 정책을 새 관리형 정책에 복사합니다. 그런 다음 인라인 정책이 있는 자격 증명에 새 정책을 연결합니다. 그런 다음 인라인 정책을 삭제합니다. 아래 지침을 사용하여 이 작업을 수행할 수 있습니다.

인라인 정책을 관리형 정책으로 변환하려면

  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 사용자 그룹, 사용자 또는 역할을 선택합니다.

  3. 목록에서 제거할 정책이 있는 사용자 그룹, 사용자 또는 역할 이름을 선택합니다.

  4. 권한(Permissions) 탭을 선택합니다.

  5. 사용자 그룹의 경우 제거할 인라인 정책의 이름을 선택합니다. 사용자 및 역할에 대해 필요한 경우 Show n more(n개 더 표시)를 선택한 다음 제거할 인라인 정책 옆에 있는 화살표를 선택합니다.

  6. 정책에 대한 JSON 정책 문서를 복사합니다.

  7. 탐색 창에서 정책(Policies)을 선택합니다.

  8. 정책 생성을 선택한 후 JSON 탭을 선택합니다.

  9. 기존 텍스트를 JSON 정책 텍스트로 바꾸고 정책 검토를 선택합니다.

  10. 정책 이름을 입력하고 정책 생성을 선택합니다.

  11. 탐색 창에서 사용자 그룹, 사용자 또는 역할을 선택한 다음 제거하려는 정책이 있는 사용자 그룹, 사용자 또는 역할의 이름을 다시 선택합니다.

  12. 사용자 그룹의 경우 권한 탭을 선택합니다. 사용자 및 역할의 경우 권한 추가를 선택합니다.

  13. 사용자 그룹에 대해 새 정책 이름 옆의 확인란을 선택한 다음 권한 추가정책 연결을 차례로 선택합니다. 사용자 또는 역할의 경우 권한 추가를 선택합니다. 다음 페이지에서 기존 정책 직접 연결을 선택하고 새 정책 이름 옆의 확인란을 선택한 다음 다음: 검토를 선택하고 권한 추가를 선택합니다.

    사용자 그룹, 사용자 또는 역할에 대한 요약 페이지로 돌아갑니다.

  14. 사용자 그룹의 경우 제거할 인라인 정책 옆의 확인란을 선택한 다음 제거를 선택합니다. 사용자 또는 역할의 경우 제거할 인라인 정책 옆의 X를 선택합니다.