Amazon Web Services 한국 블로그

AWS IAM Access Analyzer 업데이트: 사용자 지정 정책 검사 및 지침에 따른 해지 확대

AWS는 IAM Access Analyzer를 더욱 강력하게 만들고, 사용자 지정 정책 검사를 확대하고, IAM 정책을 미세 조정하는 데 도움이 되는 지침에 대한 간편한 액세스를 추가하고 있습니다. 이 두 가지 새로운 기능은 모두 re:Invent 2023에서 출시된 사용자 지정 정책 검사와 미사용 액세스 분석을 기반으로 합니다. 출시되는 기능은 다음과 같습니다.

  • 새로운 사용자 지정 정책 검사 – 새로운 검사는 자동화된 추론 기능을 사용하여 특정 중요 AWS 리소스에 대한 액세스 권한을 부여하거나 모든 유형의 퍼블릭 액세스 권한을 부여하는 정책을 탐지하는 데 도움이 됩니다. 두 검사 모두 CI/CD 파이프라인의 일부로 배포 전에 사용되도록 설계되었으며 조직의 보안 관행 및 정책을 준수하지 않는 업데이트를 사전에 탐지하는 데 도움이 됩니다.
  • 지침에 따른 해지 – 이제 IAM Access Analyzer는 개발자가 실제로 필요하지 않은 액세스 권한을 부여하는 권한을 회수할 수 있도록 개발자와 공유할 수 있는 지침을 제공합니다. 여기에는 미사용 역할, 미사용 권한이 있는 역할, IAM 사용자의 미사용 액세스 키, IAM 사용자의 미사용 암호가 포함됩니다. 지침에는 추가 항목을 제거하거나 더 제한적인 항목으로 바꾸는 데 필요한 단계가 포함되어 있습니다.

새 사용자 지정 정책 검사
API 함수를 직접적으로 호출하거나 명령줄에서 새 정책 검사를 간접적으로 호출할 수 있습니다. 요청의 일부로 제공된 정책 문서를 검사하여 PASS 또는 FAIL 값을 반환합니다. 두 경우 모두 PASS는 정책 문서가 지정된 액세스를 적절하게 허용하지 않음을 나타내고, FAIL은 정책이 일부 또는 모든 권한을 허용할 수 있음을 나타냅니다. 새로운 검사는 다음과 같습니다.

퍼블릭 액세스 없음 검사 – 이 검사는 리소스 정책에 대해 수행되며 정책이 지정된 리소스 유형에 대한 퍼블릭 액세스 권한을 부여하는지 검사합니다. 예를 들어 AWS::S3::Bucket 리소스 유형을 지정하여 S3 버킷에 대한 퍼블릭 액세스를 허용하는지 정책을 검사할 수 있습니다. 유효한 리소스 유형에는 DynamoDB 테이블 및 스트림, EFS 파일 시스템, OpenSearch 도메인, Kinesis 스트림 및 스트림 소비자, KMS 키, Lambda 함수, S3 버킷 및 액세스 포인트, S3 Express 디렉터리 버킷, S3 Outposts 버킷 및 액세스 포인트, Glacier, Secrets Manager 보안 암호, SNS 주제 및 대기열, 역할을 수임하는 IAM 정책 문서가 포함됩니다. 유효한 리소스 유형 목록은 시간이 지남에 따라 확장될 예정이며 CheckNoPublicAccess 문서에서 확인할 수 있습니다.

실수로 Amazon Simple Queue Service(Amazon SQS) 대기열에 대한 퍼블릭 액세스 권한을 부여하는 정책이 있다고 가정해 보겠습니다. 이를 검사하는 방법은 다음과 같습니다.

$ aws accessanalyzer check-no-public-access --policy-document file://resource.json \
  --resource-type AWS::SQS::Queue --output json

결과는 다음과 같습니다.

{
    "result": "FAIL",
    "message": "The resource policy grants public access for the given resource type.",
    "reasons": [
        {
            "description": "Public access granted in the following statement with sid: SqsResourcePolicy.",
            "statementIndex": 0,
            "statementId": "SqsResourcePolicy"
        }
    ]
}

정책을 편집하여 액세스 권한 부여를 제거한 후 다시 시도하니 이번에는 검사가 통과되었습니다.

{
    "result": "PASS",
    "message": "The resource policy does not grant public access for the given resource type."
}

액세스 권한 미부여 검사 – 이 검사는 한 번에 하나의 리소스 정책 또는 ID 정책에 대해 수행됩니다. 또한 IAM 정책의 일부로 허용되는 형식의 작업 및 리소스 목록을 수락합니다. 이 검사는 정책이 나열된 작업을 통해 목록의 리소스에 의도하지 않은 액세스 권한을 부여하는지 확인합니다. 예를 들어, 이 검사를 사용하여 정책이 중요한 CloudTrail 추적 삭제를 허용하지 않는지 확인할 수 있습니다.

$ aws accessanalyzer check-access-not-granted --policy-document file://ct.json \
  --access resources="arn:aws:cloudtrail:us-east-1:123456789012:trail/MySensitiveTrail" \
  --policy-type IDENTITY_POLICY --output json

IAM Access Analyzer가 검사에 실패했음을 나타냅니다.

{
    "result": "FAIL",
    "message": "The policy document grants access to perform one or more of the listed actions or resources.",
    "reasons": [
        {
            "description": "One or more of the listed actions or resources in the statement with index: 0.",
            "statementIndex": 0
        }
    ]
}

정책을 수정하고 다시 시도하니 이번에는 검사가 통과되어 정책에서 나열된 리소스에 대한 액세스 권한을 부여하지 않음을 나타냅니다.

{
    "result": "PASS",
    "message": "The policy document does not grant access to perform the listed actions or resources."
}

지침에 따른 해지
이전 게시물에서는 IAM Access Analyzer가 실제로 필요하지 않은 액세스 권한을 부여하는 IAM 항목을 검색하고 나열하는 방법을 보여드렸습니다. 오늘 출시를 통해 이제 사용자 또는 개발자 팀이 이러한 조사 결과를 해결하는 데 도움이 되는 지침이 제공됩니다. 제 AWS 계정의 최신 조사 결과는 다음과 같습니다.

이 중 일부는 서비스를 미리 사용해보고 블로그에 포스팅할 수 있도록 서비스 대한 액세스 권한이 주어졌을 때 남은 것이고, 다른 일부는 클라우드 관리자로서 제가 전반적으로 무능했기 때문입니다. 어느 쪽이든 정리할 필요가 있습니다. 두 번째 조사 결과인 미사용 액세스 키부터 시작하겠습니다. 항목을 클릭하면 하단에 새로운 권장 사항 섹션이 표시됩니다.

단계에 따라 액세스 키를 삭제하거나 아카이브를 클릭하여 활성 조사 결과 목록에서 조사 결과를 제거하고 아카이빙된 항목 목록에 추가할 수 있습니다. 향후 비슷한 조사 결과에 대해 동일한 작업을 수행하는 아카이브 규칙을 생성할 수도 있습니다. 미사용 IAM 사용자, IAM 역할 및 암호에 대해서도 유사한 권장 사항이 제공됩니다.

이제 미사용 권한의 조사 결과를 살펴보겠습니다.

기존 정책을 새 정책으로 바꾸는 것이 좋습니다. 새 정책을 기존 정책과 나란히 미리 볼 수 있습니다.

첫 번째 예와 같이 단계를 따르거나 조사 결과를 아카이빙할 수 있습니다.

조사 결과와 권장 사항은 명령줄에서도 확인할 수 있습니다. 분석기와 그 조사 결과를 지정하여 권장 사항을 생성합니다.

$ aws accessanalyzer generate-finding-recommendation \
  --analyzer-arn arn:aws:access-analyzer-beta:us-west-2:123456789012:analyzer/MyAnalyzer \
  --id 67110f3e-05a1-4562-b6c2-4b009e67c38e

그런 다음 권장 사항을 검색합니다. 이 예에서는 전체 JSON 출력이 상당히 많기 때문에 단계만 표시하도록 출력을 필터링하고 있습니다.

$ aws accessanalyzer get-finding-recommendation \
  --analyzer-arn arn:aws:access-analyzer-beta:us-west-2:123456789012:analyzer/MyAnalyzer \
  --id 67110f3e-05a1-4562-b6c2-4b009e67c38e --output json | \
  jq .recommendedSteps[].unusedPermissionsRecommendedStep.recommendedAction
"CREATE_POLICY"
"DETACH_POLICY"

이러한 명령 또는 이에 상응하는 API 직접 호출을 사용하여 권장 사항을 자체 도구와 시스템에 통합할 수 있습니다.

정식 출시
지금 바로 모든 퍼블릭 AWS 리전에서 새로운 검사 및 해결 단계를 이용할 수 있습니다.

Jeff