

# SEC03-BP02 최소 권한 액세스 부여
<a name="sec_permissions_least_privileges"></a>

특정 조건에서 특정 AWS 리소스에 대한 특정 작업과 관련한 액세스를 허용하여 자격 증명에 필요한 액세스 권한만 부여합니다. 개별 사용자에 대한 권한을 정의하는 대신, 그룹 및 자격 증명 속성을 사용하여 대규모로 권한을 동적으로 설정합니다. 예를 들어 개발자 그룹이 자체 프로젝트에 대한 리소스만 관리하도록 액세스 권한을 허용할 수 있습니다. 이렇게 하면 특정 개발자를 그룹에서 제거했을 때 액세스 정책을 변경할 필요 없이 해당 그룹을 액세스 제어에 사용한 모든 리소스에서 이 개발자에 대한 액세스가 취소됩니다.

 **일반적인 안티 패턴:** 
+ 사용자에게 기본적으로 관리자 권한을 부여합니다. 
+ 일상적인 활동에 루트 계정을 사용합니다. 

 **이 모범 사례가 확립되지 않을 경우 노출되는 위험의 수준:** 높음 

## 구현 가이드
<a name="implementation-guidance"></a>

원칙으로 [최소 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 을 확립하면 사용 가능성과 효율성을 적절하게 절충하면서 자격 증명이 특정 작업을 처리하는 데 필요한 최소한의 기능 세트만 수행하도록 할 수 있습니다. 이 원칙에 따라 운영하면 의도치 않은 액세스를 제한하고, 누가 어떤 리소스에 액세스할 수 있는지 감사할 수 있습니다. AWS에서는 루트 사용자를 제외하고는 기본적으로 자격 증명에 권한이 없습니다. 루트 사용자의 보안 인증은 엄격하게 제어되어야 하며 [특정 작업](https://docs.aws.amazon.com/general/latest/gr/aws_tasks-that-require-root.html)에만 사용해야 합니다. 

IAM 또는 리소스 엔터티(예: 페더레이션형 ID, 시스템 또는 리소스(예: S3 버킷)에서 사용하는 IAM 역할)에 연결된 권한을 명시적으로 부여하는 경우 정책을 사용합니다. 정책을 생성하여 연결할 때 서비스 작업, 리소스는 물론 AWS가 액세스를 허용하려면 참이어야 하는 조건을 지정할 수 있습니다. AWS는 다양한 조건을 지원하여 액세스 범위를 축소할 수 있도록 도와줍니다. 예를 들어, `PrincipalOrgID` [조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)를 사용하면 AWS Organizations의 식별자를 확인하므로 AWS Organization 내에서만 액세스를 허용할 수 있습니다.

또한 AWS CloudFormation에서 AWS Lambda 함수를 생성하는 등 AWS 서비스가 사용자를 대신하여 수행하는 요청을 `CalledVia` 조건 키를 사용하여 제어할 수도 있습니다. 계정 내 전체 권한을 효과적으로 제한하기 위해 다른 정책 유형 간 계층을 지정해야 합니다. 예를 들어, 애플리케이션 팀에서 자체적으로 IAM 정책을 생성하도록 허용할 수 있지만 [권한 경계](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/) 를 사용하여 이들이 허용할 수 있는 최대 권한을 제한해야 합니다. 

권한 관리를 확장하고 최소 권한의 원칙을 준수하는 데 도움이 되는 다양한 AWS 기능이 있습니다. [속성 기반 액세스 제어](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/) 를 통해 리소스의 *[태그](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)* 를 기준으로 권한을 제한할 수 있으며, 이를 통해 리소스 및 호출하는 IAM 보안 주체에 적용된 태그를 기준으로 권한 부여 결정을 내릴 수 있습니다. 이렇게 하면 태그 지정과 권한 정책을 결합하여 여러 사용자 지정 정책 없이도 세분화된 리소스 액세스를 달성할 수 있습니다.

최소 권한 정책 생성을 가속화하는 또 다른 방법은 활동 실행 후 CloudTrail 권한을 기반으로 정책을 수립하는 것입니다. [IAM Access Analyzer는 활동을 기반으로 IAM 정책을 자동으로 생성할 수 있습니다](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/). 또한 조직 또는 개별 계정 수준에서 IAM Access Advisor를 사용하여 [특정 정책에 대해 마지막 액세스 정보를 추적](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html)할 수 있습니다.

이러한 세부 정보를 검토하고 불필요한 권한을 제거할 주기를 설정할 수 있습니다. AWS 조직 내 권한 가드레일을 설정하여 모든 멤버 계정 내에서 최대 권한을 제어해야 합니다. 서비스, 즉 [AWS Control Tower는 권장 관리형 예방 제어 기능](https://docs.aws.amazon.com/controltower/latest/userguide/guardrails.html) 이 있어 자체적인 제어를 정의할 수 있습니다. 

## 리소스
<a name="resources"></a>

 **관련 문서:** 
+  [IAM 엔터티의 권한 경계](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) 
+  [최소 권한 IAM 정책 작성 기법](https://aws.amazon.com/blogs/security/techniques-for-writing-least-privilege-iam-policies/) 
+  [IAM Access Analyzer를 통해 액세스 활동에 기반한 IAM 정책을 생성하여 보다 쉽게 최소 권한을 구현](https://aws.amazon.com/blogs/security/iam-access-analyzer-makes-it-easier-to-implement-least-privilege-permissions-by-generating-iam-policies-based-on-access-activity/) 
+  [마지막 액세스 정보를 사용하여 권한 수정](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) 
+  [IAM 정책 유형과 사용 시기](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 
+  [IAM 정책 시뮬레이터로 IAM 정책 테스트](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html) 
+  [AWS Control Tower의 가드레일](https://docs.aws.amazon.com/controltower/latest/userguide/guardrails.html) 
+  [제로 트러스트 아키텍처: AWS의 철학](https://aws.amazon.com/blogs/security/zero-trust-architectures-an-aws-perspective/) 
+  [CloudFormation StackSets로 최소 권한의 원칙을 구현하는 방법](https://aws.amazon.com/blogs/security/how-to-implement-the-principle-of-least-privilege-with-cloudformation-stacksets/) 

 **관련 동영상:** 
+  [차세대 권한 관리](https://www.youtube.com/watch?v=8vsD_aTtuTo) 
+  [제로 트러스트: AWS의 철학](https://www.youtube.com/watch?v=1p5G1-4s1r0) 
+  [권한 경계를 사용하여 IAM 사용자 및 역할을 제한하고 권한 승격을 방지하려면 어떻게 해야 하나요?](https://www.youtube.com/watch?v=omwq3r7poek) 

 **관련 예시:** 
+  [실습: 역할 생성을 위임하는 IAM 권한 경계](https://wellarchitectedlabs.com/Security/300_IAM_Permission_Boundaries_Delegating_Role_Creation/README.html) 