SEC03-BP02 최소 권한 액세스 부여 - AWS Well-Architected Framework

SEC03-BP02 최소 권한 액세스 부여

구체적인 조건에서 특정 리소스에 대해 일정한 작업을 수행하기 위해 자격 증명이 필요한 액세스 권한만 부여하는 것이 좋습니다. 개별 사용자에 대한 권한을 정의하는 대신, 그룹 및 자격 증명 속성을 사용하여 대규모로 권한을 동적으로 설정합니다. 예를 들어 한 개발자 그룹에 자체 프로젝트에 대한 리소스만 관리하도록 액세스 권한을 허용할 수 있습니다. 이렇게 하면 특정 개발자가 프로젝트에서 빠지게 될 경우 기본 액세스 정책을 변경하지 않고도 해당 개발자의 액세스 권한이 자동으로 해지됩니다.

원하는 결과: 사용자는 작업을 수행하는 데 필요한 권한만 가지고 있어야 합니다. 사용자는 제한된 시간 안에 특정 작업을 수행할 수 있는 프로덕션 환경에 액세스할 권한만 부여받아야 하며, 해당 작업이 완료된 후에는 액세스 권한이 해지되어야 합니다. 사용자가 다른 프로젝트에 착수하거나 직무를 옮기는 등 액세스 권한이 더 이상 필요하지 않으면 권한은 해지되어야 합니다. 관리자 권한은 신뢰할 수 있는 소수의 관리자 그룹에만 주어져야 합니다. 권한을 정기적으로 검토하여 권한이 잘못 부여되어 있는 상황이 없도록 해야 합니다. 시스템 또는 시스템 계정에는 작업을 완료하는 데 필요한 최소 권한 집합이 부여되어야 합니다.

일반적인 안티 패턴:

  • 사용자에게 기본적으로 관리자 권한을 부여합니다.

  • 일상적인 활동에 루트 사용자를 이용합니다.

  • 전체 관리자 권한은 아니지만 과도하게 허용적인 정책을 생성합니다.

  • 최소 권한 액세스를 허용하는지를 확인하기 위해 권한을 검토하지 않습니다.

이 모범 사례를 따르지 않을 경우 노출되는 위험의 수준: 높음

구현 가이드

최소 권한의 원칙은 자격 증명을 부여할 때 특정 작업을 완수하는 데 필요한 최소한의 활동만 수행하도록 부여해야 한다고 규정합니다. 이를 통해 사용 편의성, 효율성 및 보안의 균형을 이룰 수 있습니다. 이 원칙에 따라 운영하면 의도하지 않은 액세스를 제한하고 누가 어떤 리소스에 액세스했는지 추적하는 데 도움이 됩니다. IAM 사용자 및 역할에는 기본적으로 권한이 없습니다. 루트 사용자는 기본적으로 전체 액세스 권한을 가지므로, 루트 사용자는 루트 액세스가 필요한 작업에만 엄격하게 제어, 모니터링 및 사용되어야 합니다.

IAM 정책은 IAM 역할 또는 특정 리소스에 대한 권한을 명시적으로 부여하는 데 사용됩니다. 예를 들어, 자격 증명 기반 정책은 IAM 그룹에 연결하는 한편 S3 버킷은 리소스 기반 정책으로 제어할 수 있습니다.

IAM 정책을 생성할 때 AWS에서 액세스를 허용하거나 거부하려면 ‘참’이어야 하는 서비스 작업, 리소스 및 조건을 지정할 수 있습니다. AWS에서는 액세스 범위를 줄일 수 있도록 다양한 조건을 지원합니다. 예를 들어, PrincipalOrgID 조건 키를 사용하면 요청자가 AWS 조직에 속하지 않는 경우 요청자의 작업을 거부할 수 있습니다.

또한 CalledVia 조건 키를 사용하여 AWS Lambda 함수를 생성하는 AWS CloudFormation(와)과 같이, AWS 서비스가 사용자를 대신하여 수행하는 요청을 제어할 수 있습니다. 다양한 정책 유형을 계층화하여 심층 방어를 설정하고 사용자의 권한 전반을 제한해야 합니다. 나아가 어떤 조건에서 어떤 권한을 허용할지도 제한할 수도 있습니다. 예를 들어 애플리케이션 팀이 구축하는 시스템에 대해 자체 IAM 정책을 만들도록 허용하되, 권한 경계를 적용하여 시스템이 수신할 수 있는 최대 권한을 제한할 수 있습니다.

구현 단계

  • 최소 권한 정책 구현: IAM 그룹 및 역할에 최소 권한 액세스 정책을 적용하여 사용자별로 정의한 역할 또는 기능을 반영합니다.

    • API 사용에 대한 기본 정책: AWS CloudTrail 로그를 검토하여 필요한 권한을 결정합니다. 이 검토를 통해 사용자가 AWS 내에서 실제로 수행하는 작업에 맞게 조정된 권한을 만들 수 있습니다. IAM Access Analyzer는 활동을 기반으로 IAM 정책을 자동으로 생성할 수 있습니다. 조직 또는 계정 수준에서 IAM Access Advisor를 사용하여 특정 정책에 대해 마지막으로 액세스한 정보추적할 수 있습니다.

  • 직무 역할에 따른 AWS 관리형 정책 사용을 고려해 보세요. 세분화된 권한 정책을 어디서부터 만들어야 할지 알기 어려울 수 있습니다. AWS에서는 결제 관리자, 데이터베이스 관리자 및 데이터 사이언티스트와 같은 일반적인 작업 역할에 대한 관리형 정책을 관리합니다. 이러한 정책은 최소 권한 정책을 구현하는 방법을 결정하는 동시에 사용자의 액세스 범위를 좁히는 데 도움이 될 수 있습니다.

  • 불필요한 권한 제거: 필요하지 않은 권한을 제거하고 과도하게 허용적인 정책을 축소합니다. IAM Access Analyzer 정책 생성을 사용하면 권한 정책을 세밀하게 조정할 수 있습니다.

  • 사용자의 프로덕션 환경 액세스 제한: 사용자는 유효한 사용 사례가 있는 프로덕션 환경에만 액세스할 수 있어야 합니다. 사용자가 프로덕션 액세스 권한이 필요한 특정 작업을 수행한 후에는 액세스 권한을 해지해야 합니다. 프로덕션 환경에 대한 액세스를 제한하면 예기치 않게 프로덕션에 영향을 미치는 이벤트를 방지하고 의도하지 않은 액세스의 영향 범위를 줄일 수 있습니다.

  • 권한 경계 고려: 권한 경계는 자격 증명 기반 정책을 통해 IAM 엔터티에 부여할 수 있는 최대 권한을 설정하는 관리형 정책을 사용하는 기능입니다. 엔터티의 권한 경계는 자격 증명 기반 정책과 권한 경계 모두에서 허용되는 작업만 수행하도록 허용합니다.  

  • 권한 리소스 태그 고려: 리소스 태그를 사용하는 속성 기반 액세스 제어 모델을 활용하면 리소스 목적, 소유자, 환경 또는 기타 기준에 따라 액세스 권한을 부여할 수 있습니다. 예를 들어, 리소스 태그를 사용하여 개발 환경과 프로덕션 환경을 구분할 수 있습니다. 이러한 태그를 사용하여 개발자의 권한을 개발 환경으로 제한할 수 있습니다. 태그 지정 정책과 권한 정책을 결합하면 모든 직무에 대해 복잡한 사용자 지정 정책을 정의할 필요 없이 세분화된 리소스 액세스 제어가 가능합니다.

  • AWS Organizations 서비스 제어 정책을 사용해 보세요. 서비스 제어 정책은 조직의 멤버 계정에 대해 사용 가능한 최대 권한을 중앙에서 제어합니다. 중요한 점은 서비스 제어 정책을 사용하여 멤버 계정의 루트 사용자 권한을 제한할 수 있다는 사실입니다. AWS Organizations(을)를 보다 풍부하게 활용할 수 있도록 권장 관리 제어 기능을 제공하는 AWS Control Tower(을)를 사용하는 것도 고려해 보세요. Control Tower 내에서 자체 제어 기능을 정의할 수도 있습니다.

  • 조직의 사용자 수명 주기 정책 설정: 사용자 수명 주기 정책은 사용자가 AWS에 온보드되어 있을 때, 작업 역할 또는 범위를 변경했을 때, 또는 AWS에 더 이상 액세스할 필요가 없을 때 각각 수행할 작업을 정의합니다. 사용자 수명 주기의 각 단계에서 권한 검토를 수행하여 권한이 적절하게 제한되는지 확인하고 권한이 잘못 부여되어 있는 상황이 없도록 해야 합니다.

  • 권한을 검토하고 불필요한 권한을 제거하기 위한 정기 예약 설정: 사용자 액세스를 정기적으로 검토하여 사용자에게 과도하게 허용되는 액세스 권한이 없는지 확인해야 합니다. AWS Config 및 IAM Access Analyzer는 사용자 권한을 감사할 때 유용합니다.

  • 작업 역할 매트릭스 설정: 작업 역할 매트릭스는 AWS 기반 내에서 필요한 여러 역할 및 액세스 수준을 시각화합니다. 작업 역할 매트릭스를 바탕으로 조직 내 사용자 책임에 따라 권한을 정의하고 분리할 수 있습니다. 개별 사용자 또는 역할에 직접 권한을 적용하는 대신 그룹을 사용하세요.  

리소스

관련 문서:

관련 동영상:

관련 예시: