마지막 액세스 정보를 사용한 AWS 권한 정제
마지막 액세스 정보를 사용한 AWS 권한 정제
관리자로서 IAM 리소스(역할, 사용자, 사용자 그룹, 정책)에 필요한 것보다 많은 권한을 부여할 수 있어요. IAM은 사용하지 않는 권한을 식별해 제거할 수 있도록 마지막 액세스 정보(last accessed information) 를 제공해요. 마지막 액세스 정보를 사용해 정책을 정제하고 IAM 아이덴티티와 정책이 사용하는 서비스·작업에만 액세스를 허용할 수 있어요. 이렇게 하면 최소 권한(least privilege) 모범 사례를 더 잘 지킬 수 있어요. IAM이나 AWS Organizations에 존재하는 아이덴티티 또는 정책에 대한 마지막 액세스 정보를 볼 수 있어요.
출처: 문서
본문
미사용 액세스 분석기(unused access analyzers)로 마지막 액세스 정보를 지속적으로 모니터링할 수도 있어요. 자세한 내용은 외부·미사용 액세스에 대한 결과를 참고하세요.
이 페이지에서 다루는 내용:
- IAM 마지막 액세스 정보 유형
- AWS Organizations 마지막 액세스 정보
- 마지막 액세스 정보에 대해 알아야 할 사항
- 필요한 권한
- IAM 및 AWS Organizations 엔티티 활동 문제 해결
- AWS가 마지막 액세스 정보를 추적하는 위치
- IAM 마지막 액세스 정보 보기
- AWS Organizations 마지막 액세스 정보 보기
- 마지막 액세스 정보 사용 예제 시나리오
- IAM 작업 마지막 액세스 정보 서비스 및 작업
IAM 마지막 액세스 정보 유형
IAM 아이덴티티에 대해 허용된 AWS 서비스 정보와 허용된 작업 정보 두 가지 유형의 마지막 액세스 정보를 볼 수 있어요. 정보에는 AWS API 액세스 시도가 있었던 날짜와 시간이 포함돼요. 작업의 경우 마지막 액세스 정보는 서비스 관리 작업(management actions)을 보고해요. 관리 작업에는 생성, 삭제, 수정 작업이 포함돼요. IAM 마지막 액세스 정보를 보는 방법은 IAM 마지막 액세스 정보 보기를 참고하세요.
IAM 아이덴티티에 부여하는 권한에 대한 결정을 내릴 때 마지막 액세스 정보를 사용하는 예제 시나리오는 마지막 액세스 정보 사용 예제 시나리오를 참고하세요.
AWS Organizations 마지막 액세스 정보
관리 계정(management account) 자격 증명으로 로그인하면 조직의 AWS Organizations 엔티티나 정책에 대한 서비스 마지막 액세스 정보를 볼 수 있어요. AWS Organizations 엔티티에는 조직 루트, 조직 단위(OUs), 계정이 포함돼요. AWS Organizations 마지막 액세스 정보에는 서비스 제어 정책(SCP)이 허용한 서비스에 대한 정보가 포함돼요. 정보는 조직이나 계정의 어떤 principal(루트 사용자, IAM 사용자, 역할)이 마지막으로 서비스에 액세스하려 했는지와 그 시기를 나타내요.
마지막 액세스 정보에 대해 알아야 할 사항
보고서의 마지막 액세스 정보로 IAM 아이덴티티나 AWS Organizations 엔티티의 권한을 바꾸기 전에 다음 세부 사항을 검토하세요.
- 추적 기간 (Tracking period) — 최근 활동은 4시간 이내에 IAM 콘솔에 나타나요. 서비스 정보의 추적 기간은 서비스가 작업 정보 추적을 시작한 시점에 따라 최소 400일이에요. Amazon S3 작업 정보의 추적 기간은 2020년 4월 12일에 시작했어요. Amazon EC2, IAM, Lambda 작업의 추적 기간은 2021년 4월 7일에 시작했어요. 다른 모든 서비스의 추적 기간은 2023년 5월 23일에 시작했어요. 작업 마지막 액세스 정보를 사용할 수 있는 서비스 목록은 IAM 작업 마지막 액세스 정보 서비스 및 작업을 참고하세요.
- 보고된 시도 (Attempts reported) — 서비스 마지막 액세스 데이터는 성공한 시도뿐 아니라 AWS API 액세스에 대한 모든 시도를 포함해요. AWS Management Console, 모든 SDK를 통한 AWS API, 또는 명령줄 도구를 사용한 모든 시도를 포함해요. 서비스 마지막 액세스 데이터의 예상치 못한 항목이 계정이 손상됐다는 뜻은 아니에요. 요청이 거부됐을 수도 있기 때문이에요. 모든 API 호출과 성공·거부 여부에 대한 신뢰할 수 있는 원천으로 CloudTrail 로그를 참고하세요.
- PassRole —
iam:PassRole작업은 추적되지 않으며 IAM 작업 마지막 액세스 정보에 포함되지 않아요. - 작업 마지막 액세스 정보 (Action last accessed information) — IAM 아이덴티티가 액세스한 서비스 관리 작업에 대해 작업 마지막 액세스 정보를 사용할 수 있어요. 작업 마지막 액세스를 보고하는 서비스와 작업 목록을 참고하세요.
- 참고 — 어떤 데이터 플레인 이벤트에 대해서도 작업 마지막 액세스 정보는 제공되지 않아요.
- 관리 이벤트 (Management events) — IAM은 CloudTrail이 기록하는 서비스 관리 이벤트에 대한 작업 정보를 제공해요. CloudTrail 관리 이벤트는 제어 플레인 작업(control plane operations)이라고도 불러요. 관리 이벤트는 AWS 계정의 리소스에 대해 수행된 관리 작업에 대한 가시성을 제공해요. CloudTrail 관리 이벤트에 대한 자세한 내용은 AWS CloudTrail 사용자 가이드에서 관리 이벤트 로깅을 참고하세요.
- 보고서 소유자 (Report owner) — 보고서를 생성한 principal만 보고서 세부 정보를 볼 수 있어요. 즉 AWS Management Console에서 정보를 볼 때 생성·로드될 때까지 기다려야 할 수 있어요. AWS CLI나 AWS API로 보고서 세부 정보를 가져오려면 자격 증명이 보고서를 생성한 principal의 자격 증명과 일치해야 해요. 역할이나 AWS STS 페더레이션 사용자 principal에 대한 임시 자격 증명을 사용한다면 같은 세션 안에서 보고서를 생성하고 가져와야 해요.
- IAM 리소스 — IAM 마지막 액세스 정보에는 계정의 IAM 리소스(역할, 사용자, IAM 그룹, 정책)가 포함돼요. AWS Organizations 마지막 액세스 정보에는 지정된 AWS Organizations 엔티티의 principal(IAM 사용자, IAM 역할, AWS 계정 루트 사용자)이 포함돼요. 마지막 액세스 정보에는 인증되지 않은 시도는 포함되지 않아요.
- IAM 정책 유형 — IAM 마지막 액세스 정보에는 IAM 아이덴티티의 정책이 허용한 서비스가 포함돼요. 여기에는 역할에 연결되거나, 사용자에 직접 또는 그룹을 통해 연결된 정책이 포함돼요. 다른 정책 유형이 허용한 액세스는 보고서에 포함되지 않아요. 제외되는 정책 유형에는 리소스 기반 정책, 액세스 제어 목록, AWS Organizations SCP, IAM 권한 경계, 세션 정책이 포함돼요. 서비스 연결 역할이 제공하는 권한은 연결된 서비스가 정의하며 IAM에서 수정할 수 없어요. 정책 유형이 어떻게 액세스를 허용·거부하도록 평가되는지는 정책 평가 로직을 참고하세요.
- AWS Organizations 정책 유형 — AWS Organizations 정보에는 AWS Organizations 엔티티가 상속한 SCP가 허용한 서비스만 포함돼요. SCP는 루트, OU, 계정에 연결되는 정책이에요. 다른 정책 유형이 허용한 액세스는 보고서에 포함되지 않아요. 제외되는 정책 유형에는 아이덴티티 기반 정책, 리소스 기반 정책, 액세스 제어 목록, IAM 권한 경계, 세션 정책이 있어요.
- 정책 ID 지정 — AWS CLI나 AWS API로 AWS Organizations 마지막 액세스 정보 보고서를 생성할 때 정책 ID를 선택적으로 지정할 수 있어요. 결과 보고서에는 해당 정책만 허용한 서비스에 대한 정보가 포함돼요. 정보에는 지정된 AWS Organizations 엔티티나 그 엔티티의 자식에서의 가장 최근 계정 활동이 포함돼요. 자세한 내용은
aws iam generate-organizations-access-report또는GenerateOrganizationsAccessReport를 참고하세요. - AWS Organizations 관리 계정 — 서비스 마지막 액세스 정보를 보려면 조직의 관리 계정에 로그인해야 해요. IAM 콘솔, AWS CLI, AWS API로 관리 계정의 정보를 보도록 선택할 수 있어요. 관리 계정은 SCP에 제한되지 않으므로 결과 보고서는 모든 AWS 서비스를 나열해요. CLI나 API에서 정책 ID를 지정해도 그 정책은 무시돼요. 각 서비스에 대해 보고서는 관리 계정의 정보만 포함해요. 단, 다른 AWS Organizations 엔티티의 보고서는 관리 계정의 활동 정보를 반환하지 않아요.
- AWS Organizations 설정 — AWS Organizations 데이터를 생성하려면 관리자가 조직 루트에서 SCP를 활성화해야 해요.
필요한 권한
AWS Management Console에서 마지막 액세스 정보를 보려면 필요한 권한을 부여하는 정책이 있어야 해요.
IAM 정보 권한
IAM 콘솔에서 IAM 사용자, 역할, 정책의 마지막 액세스 정보를 보려면 다음 작업을 포함하는 정책이 있어야 해요.
iam:GenerateServiceLastAccessedDetailsiam:Get*iam:List*
이 권한을 통해 사용자는 다음을 볼 수 있어요.
- 어떤 사용자, 그룹, 역할이 관리형 정책에 연결되어 있는지
- 사용자나 역할이 액세스할 수 있는 서비스
- 마지막으로 서비스에 액세스한 시기
- 특정 Amazon EC2, IAM, Lambda, Amazon S3 작업을 마지막으로 사용하려 한 시기
AWS CLI나 AWS API로 IAM 마지막 액세스 정보를 보려면 사용하려는 작업과 일치하는 권한이 있어야 해요.
iam:GenerateServiceLastAccessedDetailsiam:GetServiceLastAccessedDetailsiam:GetServiceLastAccessedDetailsWithEntitiesiam:ListPoliciesGrantingServiceAccess
IAM 마지막 액세스 정보 보기를 허용하는 아이덴티티 기반 정책 예시는 다음과 같아요. 또한 IAM의 모든 것에 대한 읽기 전용 액세스를 허용해요. 이 정책은 프로그래밍 방식과 콘솔 액세스 모두에 대한 권한을 정의해요.
{
"Version":"2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"iam:GenerateServiceLastAccessedDetails",
"iam:Get*",
"iam:List*"
],
"Resource": "*"
}
}
AWS Organizations 정보 권한
IAM 콘솔에서 AWS Organizations의 루트, OU, 계정 엔티티 보고서를 보려면 다음 작업을 포함하는 정책이 있어야 해요.
iam:GenerateOrganizationsAccessReportiam:GetOrganizationsAccessReportorganizations:DescribeAccountorganizations:DescribeOrganizationorganizations:DescribeOrganizationalUnitorganizations:DescribePolicyorganizations:ListChildrenorganizations:ListParentsorganizations:ListPoliciesForTargetorganizations:ListRootsorganizations:ListTargetsForPolicy
AWS CLI나 AWS API로 AWS Organizations 서비스 마지막 액세스 정보를 보려면 다음 작업을 포함하는 정책이 있어야 해요.
iam:GenerateOrganizationsAccessReportiam:GetOrganizationsAccessReportorganizations:DescribePolicyorganizations:ListChildrenorganizations:ListParentsorganizations:ListPoliciesForTargetorganizations:ListRootsorganizations:ListTargetsForPolicy
AWS Organizations 서비스 마지막 액세스 정보 보기를 허용하는 아이덴티티 기반 정책 예시는 다음과 같아요. 또한 AWS Organizations의 모든 것에 대한 읽기 전용 액세스를 허용해요.
{
"Version":"2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"iam:GenerateOrganizationsAccessReport",
"iam:GetOrganizationsAccessReport",
"organizations:Describe*",
"organizations:List*"
],
"Resource": "*"
}
}
iam:OrganizationsPolicyId 조건 키를 사용해 특정 AWS Organizations 정책에 대한 보고서만 생성하도록 허용할 수도 있어요.
IAM 및 AWS Organizations 엔티티 활동 문제 해결
경우에 따라 AWS Management Console 마지막 액세스 정보 표가 비어 있을 수 있어요. 또는 AWS CLI나 AWS API 요청이 빈 정보 집합이나 null 필드를 반환할 수 있어요. 이 경우 다음 사항을 검토하세요.
- 작업 마지막 액세스 정보의 경우, 기대한 작업이 목록에 반환되지 않을 수 있어요. IAM 아이덴티티에 해당 작업에 대한 권한이 없거나, AWS가 아직 그 작업을 마지막 액세스 정보로 추적하지 않기 때문일 수 있어요.
- IAM 사용자의 경우 사용자에게 직접 또는 그룹 멤버십을 통해 인라인·관리형 정책이 하나 이상 연결되어 있는지 확인하세요.
- IAM 그룹의 경우 그룹에 인라인·관리형 정책이 하나 이상 연결되어 있는지 확인하세요.
- IAM 그룹의 경우 보고서는 그룹의 정책을 사용해 서비스에 액세스한 멤버의 서비스 마지막 액세스 정보만 반환해요. 멤버가 다른 정책을 사용했는지 알려면 해당 사용자의 마지막 액세스 정보를 검토하세요.
- IAM 역할의 경우 역할에 인라인·관리형 정책이 하나 이상 연결되어 있는지 확인하세요.
- IAM 엔티티(사용자나 역할)의 경우 해당 엔티티의 권한에 영향을 줄 수 있는 다른 정책 유형을 검토하세요. 여기에는 리소스 기반 정책, 액세스 제어 목록, AWS Organizations 정책, IAM 권한 경계, 세션 정책이 포함돼요.
- IAM 정책의 경우 지정된 관리형 정책이 멤버가 있는 사용자·그룹·역할 중 하나 이상에 연결되어 있는지 확인하세요.
- AWS Organizations 엔티티(루트, OU, 계정)의 경우 AWS Organizations 관리 계정 자격 증명으로 로그인했는지 확인하세요.
- 조직 루트에서 SCP가 활성화되어 있는지 확인하세요.
- 작업 마지막 액세스 정보는 IAM 작업 마지막 액세스 정보 서비스 및 작업에 나열된 작업에만 제공돼요.
- 변경 후 IAM 콘솔 보고서에 활동이 나타나려면 최소 4시간 기다리세요. AWS CLI나 AWS API를 사용한다면 갱신된 정보를 보기 위해 새 보고서를 생성해야 해요.
AWS가 마지막 액세스 정보를 추적하는 위치
AWS는 표준 AWS 리전에서 마지막 액세스 정보를 수집해요. AWS가 리전을 추가하면 그 리전들이 아래 표에 추가되며 각 리전에서 정보 추적을 시작한 날짜도 함께 표시돼요.
- 서비스 정보 — 서비스 추적 기간은 최소 400일이거나, 리전이 최근 400일 이내에 이 기능 추적을 시작했다면 그보다 짧아요.
- 작업 정보 — Amazon S3 관리 작업의 추적 기간은 2020년 4월 12일에 시작했어요. Amazon EC2, IAM, Lambda 관리 작업의 추적 기간은 2021년 4월 7일에 시작했어요. 다른 모든 서비스의 관리 작업 추적 기간은 2023년 5월 23일에 시작했어요. 리전의 추적 날짜가 2023년 5월 23일보다 늦다면 해당 리전의 작업 마지막 액세스 정보는 더 늦은 날짜부터 시작돼요.
| 리전 이름 | 리전 | 추적 시작 날짜 |
|---|---|---|
| US East (Ohio) | us-east-2 | October 27, 2017 |
| US East (N. Virginia) | us-east-1 | October 1, 2015 |
| US West (N. California) | us-west-1 | October 1, 2015 |
| US West (Oregon) | us-west-2 | October 1, 2015 |
| Africa (Cape Town) | af-south-1 | April 22, 2020 |
| Asia Pacific (Hong Kong) | ap-east-1 | April 24, 2019 |
| Asia Pacific (Hyderabad) | ap-south-2 | November 22, 2022 |
| Asia Pacific (Jakarta) | ap-southeast-3 | December 13, 2021 |
| Asia Pacific (Melbourne) | ap-southeast-4 | January 23, 2023 |
| Asia Pacific (Mumbai) | ap-south-1 | June 27, 2016 |
| Asia Pacific (Osaka) | ap-northeast-3 | February 11, 2018 |
| Asia Pacific (Seoul) | ap-northeast-2 | January 6, 2016 |
| Asia Pacific (Singapore) | ap-southeast-1 | October 1, 2015 |
| Asia Pacific (Sydney) | ap-southeast-2 | October 1, 2015 |
| Asia Pacific (Tokyo) | ap-northeast-1 | October 1, 2015 |
| Canada (Central) | ca-central-1 | October 28, 2017 |
| Europe (Frankfurt) | eu-central-1 | October 1, 2015 |
| Europe (Ireland) | eu-west-1 | October 1, 2015 |
| Europe (London) | eu-west-2 | October 28, 2017 |
| Europe (Milan) | eu-south-1 | April 28, 2020 |
| Europe (Paris) | eu-west-3 | December 18, 2017 |
| Europe (Spain) | eu-south-2 | November 15, 2022 |
| Europe (Stockholm) | eu-north-1 | December 12, 2018 |
| Europe (Zurich) | eu-central-2 | November 8, 2022 |
| Israel (Tel Aviv) | il-central-1 | August 1, 2023 |
| Middle East (Bahrain) | me-south-1 | July 29, 2019 |
| Middle East (UAE) | me-central-1 | August 30, 2022 |
| South America (São Paulo) | sa-east-1 | December 11, 2015 |
| AWS GovCloud (US-East) | us-gov-east-1 | July 1, 2023 |
| AWS GovCloud (US-West) | us-gov-west-1 | July 1, 2023 |
위 표에 없는 리전은 아직 마지막 액세스 정보를 제공하지 않아요. AWS 리전은 지리적 영역 안의 AWS 리소스 모음이에요. 리전은 파티션(partition)으로 묶여요. 표준 리전은 aws 파티션에 속하는 리전이에요.