AWS CloudTrail 자격 증명 기반 정책 예제 - AWS CloudTrail

AWS CloudTrail 자격 증명 기반 정책 예제

기본적으로 IAM 사용자 및 역할은 CloudTrail 리소스를 생성하거나 수정할 수 있는 권한이 없습니다. 또한 AWS Management 콘솔, AWS CLI 또는 AWS API를 사용해 작업을 수행할 수 없습니다. IAM 관리자는 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 사용자와 역할에게 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 IAM 사용자, 그룹 또는 역할에 이러한 정책을 연결해야 합니다.

이러한 예제 JSON 정책 문서를 사용하여 IAM 자격 증명 기반 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서JSON 탭에서 정책 생성을 참조하십시오.

정책 모범 사례

자격 증명 기반 정책은 매우 강력합니다. 이 정책은 계정에서 사용자가 CloudTrail 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부를 결정합니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. 자격 증명 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르십시오.

  • AWS 관리형 정책을 사용하여 시작하기 – CloudTrail 사용을 빠르게 시작하려면 AWS 관리형 정책을 사용하여 필요한 권한을 직원에게 부여합니다. 이 정책은 이미 계정에서 사용할 수 있으며 AWS에 의해 유지 관리 및 업데이트됩니다. 자세한 내용은 IAM 사용 설명서AWS 관리형 정책으로 권한 사용 시작하기를 참조하십시오.

  • 최소 권한 부여 – 사용자 지정 정책을 생성할 때는 작업을 수행하는 데 필요한 권한만 부여합니다. 최소한의 권한 조합으로 시작하여 필요에 따라 추가 권한을 부여합니다. 처음부터 권한을 많이 부여한 후 나중에 줄이는 방법보다 이 방법이 안전합니다. 자세한 내용은 IAM 사용 설명서최소 권한 부여를 참조하십시오.

  • 중요한 작업에 대해 MFA 활성화 – 보안을 강화하기 위해 IAM 사용자가 중요한 리소스 또는 API 작업에 액세스하려면 멀티 팩터 인증(MFA)을 사용해야 합니다. 자세한 내용은 IAM 사용 설명서AWS에서 Multi-Factor Authentication(MFA) 사용하기를 참조하십시오.

  • 보안 강화를 위해 정책 조건 사용 – 실제로 가능한 경우, 자격 증명 기반 정책이 리소스에 대한 액세스를 허용하는 조건을 정의합니다. 예를 들어 요청을 할 수 있는 IP 주소의 범위를 지정하도록 조건을 작성할 수 있습니다. 지정된 날짜 또는 시간 범위 내에서만 요청을 허용하거나, SSL 또는 MFA를 사용해야 하는 조건을 작성할 수도 있습니다. 자세한 내용은 IAM 사용 설명서IAM JSON 정책 요소: 조건을 참조하십시오.

CloudTrail에는 정책 설명의 Condition 요소에 사용할 수 있는 서비스별 컨텍스트 키가 없습니다.

예제: 지정된 추적에 대한 작업 허용 및 거부

다음 예제에서는 이 정책이 있는 사용자가 추적의 상태와 구성을 보고 My-First-Trail이라는 추적에 대한 로깅을 시작 및 중지하도록 허용하는 정책을 보여 줍니다. 이 추적은 ID가 123456789012인 AWS 계정의 미국 동부(오하이오) 리전(홈 리전)에서 생성되었습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus", "cloudtrail:GetEventSelectors" ], "Resource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail" ] } ] }

다음 예제에서는 이름이 My-First-Trail이 아닌 모든 추적에 대한 CloudTrail 작업을 명시적으로 거부하는 정책을 보여 줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudtrail:*" ], "NotResource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail" ] } ] }

Examples: 특정 추적 작업에 대한 정책 생성 및 적용

권한과 정책을 사용하여 CloudTrail 추적에서 사용자가 특정 작업을 수행하는 기능을 제어할 수 있습니다.

예를 들어, 회사 개발자 그룹에 소속된 사용자는 특정 추적에 대한 로깅을 시작하거나 중지해서는 안 되지만 추적에서 DescribeTrailsGetTrailStatus 작업을 수행할 권한을 부여할 필요가 있습니다. 개발자 그룹의 사용자가 자신이 관리하는 추적에 대한 StartLogging 또는 StopLogging 작업을 허용하게 하려고 합니다.

2개의 정책 문을 생성한 다음 IAM에서 생성하는 개발자 그룹에 연결할 수 있습니다. IAM에서 그룹을 생성하는 방법에 대한 자세한 내용은 IAM 사용 설명서IAM 그룹을 참조하십시오.

첫 번째 정책에서 지정한 추적 ARN에 대한 StartLoggingStopLogging 작업을 거부합니다. 다음 예제에서 추적 ARN은 arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1446057698000", "Effect": "Deny", "Action": [ "cloudtrail:StartLogging", "cloudtrail:StopLogging" ], "Resource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail" ] } ] }

두 번째 정책에서 DescribeTrailsGetTrailStatus 작업은 모든 CloudTrail 리소스에서 허용됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1446072643000", "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus" ], "Resource": [ "*" ] } ] }

개발자 그룹에 소속된 사용자가 첫 번째 정책에서 지정된 추적의 로깅을 시작하거나 중지하려고 하면 해당 사용자에게 액세스 거부 예외가 발생합니다. 개발자 그룹에 소속된 사용자는 그들이 생성하고 관리하는 추적에서 로깅을 시작하고 중지할 수 있습니다.

다음 CLI 예제는 devgroup이라고 명명된 AWS CLI 프로필에서 구성된 개발자 그룹을 표시합니다. 먼저 devgroup의 사용자가 describe-trails 명령을 실행합니다.

$ aws --profile devgroup cloudtrail describe-trails

명령이 성공적으로 완료되었습니다.

{ "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Default", "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail", "IsMultiRegionTrail": false, "S3BucketName": "myS3bucket ", "HomeRegion": "us-east-2" } ] }

그런 다음 사용자가 첫 번째 정책에서 지정된 추적의 get-trail-status 명령을 실행합니다.

$ aws --profile devgroup cloudtrail get-trail-status --name Example-Trail

명령이 성공적으로 완료되었습니다.

{ "LatestDeliveryTime": 1449517556.256, "LatestDeliveryAttemptTime": "2015-12-07T19:45:56Z", "LatestNotificationAttemptSucceeded": "", "LatestDeliveryAttemptSucceeded": "2015-12-07T19:45:56Z", "IsLogging": true, "TimeLoggingStarted": "2015-12-07T19:36:27Z", "StartLoggingTime": 1449516987.685, "StopLoggingTime": 1449516977.332, "LatestNotificationAttemptTime": "", "TimeLoggingStopped": "2015-12-07T19:36:17Z" }

다음으로 devgroup의 사용자가 같은 추적에서 stop-logging 명령을 실행합니다.

$ aws --profile devgroup cloudtrail stop-logging --name Example-Trail

명령은 액세스가 거부된 예외를 반환합니다.

A client error (AccessDeniedException) occurred when calling the StopLogging operation: Unknown

사용자는 같은 추적에서 start-logging 명령을 실행합니다.

$ aws --profile devgroup cloudtrail start-logging --name Example-Trail

명령은 액세스가 거부된 예외를 반환합니다.

A client error (AccessDeniedException) occurred when calling the StartLogging operation: Unknown

CloudTrail 콘솔을 사용하여 권한 부여

CloudTrail 관리에 대한 권한 부여

사용자가 CloudTrail 추적을 관리할 수 있게 하려면 IAM 사용자가 CloudTrail 작업과 연관된 작업을 수행하도록 명시적 권한을 허용해야 합니다. 대부분의 시나리오에서 사전 정의된 권한이 포함된 AWS 관리형 정책을 사용하여 이 작업을 수행할 수 있습니다.

참고

CloudTrail 관리 작업을 수행하기 위해 사용자에게 권한을 부여하는 것은 로그 파일을 Amazon S3 버킷으로 전달하거나 Amazon SNS 주제로 알림을 보내기 위해 CloudTrail 자체에서 필요한 권한과 다릅니다. 이러한 권한에 대한 자세한 내용은 CloudTrail에 대한 Amazon S3 버킷 정책를 참조하십시오.

Amazon CloudWatch Logs와 통합을 구성하는 경우 CloudTrail에는 Amazon CloudWatch Logs 로그 그룹에 이벤트를 전달하기 위해 수임할 수 있는 역할도 필요합니다. 이렇게 하려면 역할을 생성하기 위한 추가 권한뿐 아니라 역할 자체도 필요합니다. 자세한 내용은 Amazon CloudWatch Logs 콘솔에서 CloudTrail 정보를 보고 구성할 수 있는 권한 부여CloudWatch Logs로 이벤트 전송 단원을 참조하십시오.

일반적인 접근 방법은 적합한 권한이 있는 IAM 그룹을 만든 다음 개별 IAM 사용자를 그룹에 추가하는 것입니다. 예를 들어 CloudTrail 작업의 모든 액세스 권한이 필요한 사용자를 위해 IAM 그룹을 만들고, 추적 정보를 볼 수 있어야 하는 사용자의 그룹을 분리할 수 있지만 추적을 만들거나 변경할 수 없습니다.

CloudTrail 액세스를 위한 IAM 그룹과 사용자를 생성하려면

  1. https://console.aws.amazon.com/iam에서 IAM 콘솔을 엽니다.

  2. 대시보드의 탐색 창에서 [Groups]를 선택한 다음 [Create New Group]을 선택합니다.

  3. 이름을 입력한 다음 [Next Step]을 선택합니다.

  4. 정책 연결 페이지에서 CloudTrail에 대한 다음 정책을 찾아서 그 중 하나를 선택합니다.

    • AWSCloudTrailFullAccess. 이 정책은 그룹의 사용자에게 CloudTrail 작업에 대한 모든 액세스 권한을 부여합니다. 이들 사용자는 Amazon S3 버킷, CloudWatch Logs의 로그 그룹, 추적에 대한 Amazon SNS 주제를 관리할 수 있는 권한을 가집니다.

      참고

      AWSCloudTrailFullAccess 정책은 AWS 계정 간에 광범위하게 공유해서는 안 됩니다. 이 역할이 있는 사용자는 자신의 AWS 계정에서 가장 민감하고 중요한 감사 기능을 비활성화하거나 재구성할 수 있습니다. 이러한 이유로 이 정책은 계정 관리자에게만 적용해야 하며 이 정책의 사용을 긴밀하게 제어하고 모니터링해야 합니다.

    • AWSCloudTrailReadOnlyAccess. 이 정책을 통해 그룹의 사용자들은 최근 이벤트 및 이벤트 기록을 포함하여 CloudTrail 콘솔을 확인할 수 있습니다. 또한 이들 사용자는 기존 추적과 버킷을 확인할 수 있습니다. 사용자는 이벤트 기록 파일을 다운로드할 수 있지만, 추적을 생성하거나 업데이트할 수 없습니다.

    참고

    개별 작업에 대한 권한을 부여하는 사용자 지정 정책을 생성할 수도 있습니다. 자세한 정보는 CloudTrail 사용자에 대한 사용자 지정 권한 부여 단원을 참조하십시오.

  5. [Next Step]을 선택합니다.

  6. 생성하려는 그룹의 정보를 검토합니다.

    참고

    그룹 이름을 편집할 수 있지만 정책을 다시 선택해야 합니다.

  7. Create Group을 선택합니다. 생성한 그룹이 그룹 목록에 나타납니다.

  8. 생성한 그룹 이름을 선택하고 [Group Actions]를 선택한 다음 [Add Users to Group]을 선택합니다.

  9. 그룹에 사용자 추가 페이지에서 기존의 IAM 사용자를 선택한 다음 사용자 추가를 선택합니다. IAM 사용자가 아직 없다면 Create New Users(새 사용자 만들기)를 선택하고 사용자 이름을 입력한 다음 생성을 선택합니다.

  10. 새 사용자를 생성한 경우 탐색 창에서 [Users]를 선택하고 각 사용자에 대해 다음을 완료합니다.

    1. 사용자를 선택합니다.

    2. 사용자가 콘솔을 사용하여 CloudTrail을 관리한다면 Security Credentials(보안 자격 증명) 탭에서 Manage Password(암호 관리)를 선택한 다음 사용자의 암호를 생성합니다.

    3. 사용자가 CLI나 API를 사용하여 CloudTrail을 관리하거나 액세스 키를 아직 생성하지 않았다면 Security Credentials(보안 자격 증명) 탭에서 Manage Access Keys(액세스 키 관리)를 선택한 다음 액세스 키를 생성합니다. 안전한 위치에 키를 저장합니다.

    4. 각 사용자에게 해당 자격 증명을 제공합니다(액세스 키 또는 암호).

추가 리소스

IAM 사용자, 그룹, 정책 및 권한을 생성하는 방법에 대해 자세히 알아보려면 IAM 사용 설명서콘솔을 사용하여 관리자 그룹 생성 및 권한 및 정책을 참조하십시오.

AWS CLI 또는 AWS API만 호출하는 사용자에게 최소 콘솔 권한을 허용할 필요가 없습니다. 그 대신, 수행하려는 API 작업과 일치하는 작업에만 액세스할 수 있도록 합니다.

사용자가 자신이 권한을 볼 수 있도록 허용

이 예제는 IAM 사용자가 자신의 사용자 자격 증명에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여 줍니다. 이 정책에는 콘솔에서 또는 AWS CLI나 AWS API를 사용하여 프로그래밍 방식으로 이 작업을 완료할 수 있는 권한이 포함됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

CloudTrail 사용자에 대한 사용자 지정 권한 부여

CloudTrail 정책에서는 CloudTrail로 작업하는 사용자에게 권한을 허용합니다. 사용자에게 다른 권한을 허용해야 하는 경우 CloudTrail 정책을 IAM 그룹이나 사용자에게 연결할 수 있습니다. 특정 권한을 포함하거나 제외하도록 정책을 편집할 수 있습니다. 또한 사용자 고유의 사용자 지정 정책을 만들 수도 있습니다. 정책에서는 사용자가 수행하도록 허용한 작업 및 사용자가 작업을 수행하도록 허용한 리소스를 정의하는 JSON 문서입니다. 구체적인 예는 예제: 지정된 추적에 대한 작업 허용 및 거부Examples: 특정 추적 작업에 대한 정책 생성 및 적용 단원을 참조하십시오.

읽기 전용 액세스

다음 예제는 CloudTrail 추적에 대한 읽기 전용 액세스를 허용하는 정책을 표시합니다. 이 정책은 관리형 정책인 AWSCloudTrailReadOnlyAccess와 동등합니다. 추적 정보를 볼 수 있는 사용자 권한을 허용하지만 추적을 생성하거나 업데이트할 권한은 허용하지 않습니다. 또한 정책에서는 Amazon S3 버킷에서 객체를 읽을 수 있는 권한을 허용하지만 객체를 생성하거나 삭제할 권한은 허용하지 않습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketLocation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus", "cloudtrail:LookupEvents", "cloudtrail:ListPublicKeys", "cloudtrail:ListTags", "s3:ListAllMyBuckets", "kms:ListAliases", "lambda:ListFunctions" ], "Resource": "*" } ] }

정책 설명에서 Effect 요소는 작업 허용 또는 거부 여부를 지정합니다. Action 요소는 사용자가 수행할 수 있도록 허용된 특정 작업을 나열합니다. Resource 요소는 사용자가 작업을 수행하도록 허용된 AWS 리소스를 나열합니다. CloudTrail 작업에 대한 액세스를 제어하는 정책의 경우 Resource 요소가 일반적으로 *로 설정되며 여기서 와일드카드는 "모든 리소스"를 의미합니다.

서비스가 지원하는 API에 대한 Action 요소의 값입니다. 작업 앞에는 CloudTrail 작업 참조를 나타내기 위해 cloudtrail:이 위치합니다. 다음 예제와 같이 요소에서 와일드카드 문자를 사용할 수 있습니다.

  • "Action": ["cloudtrail:*Logging"]

    이렇게 하면 "Logging"으로 끝나는 모든 CloudTrail 작업이 허용됩니다(StartLogging, StopLogging).

  • "Action": ["cloudtrail:*"]

    모든 CloudTrail 작업이 허용되지만 다른 AWS 서비스에 대한 작업은 허용되지 않습니다.

  • "Action": ["*"]

    모든 AWS 작업이 허용됩니다. 이 권한은 계정에 대해 AWS 관리자로 작업하는 사용자에게 적합합니다.

읽기 전용 정책에서는 CreateTrail, UpdateTrail, StartLoggingStopLogging 작업에 대한 사용자 권한을 허용하지 않습니다. 이 정책이 적용된 사용자는 추적을 만들고, 추적을 업데이트하며, 로깅을 켜거나 끌 수 없습니다. CloudTrail 작업 목록은 AWS CloudTrail API Reference를 참조하십시오.

모든 액세스

다음 예제는 CloudTrail에 대한 모든 액세스를 허용하는 정책을 표시합니다. 이 정책은 관리형 정책인 AWSCloudTrailFullAccess와 동등합니다. 사용자에게 모든 CloudTrail 작업을 수행할 수 있는 권한을 부여합니다. 또한 사용자가 Amazon S3 및 AWS Lambda에서 데이터 이벤트를 로깅하고, Amazon S3 버킷에서 파일을 관리하며, CloudWatch Logs에서 CloudTrail 로그 이벤트를 모니터링하는 방법을 관리하고, 사용자가 연결된 계정에서 Amazon SNS 주제를 관리할 수 있도록 합니다.

중요

AWSCloudTrailFullAccess 정책 또는 동등한 권한은 AWS 계정 전체에서 광범위하게 공유해서는 안 됩니다. 이 역할 또는 동등한 액세스 권한이 있는 사용자는 자신의 AWS 계정에서 가장 민감하고 중요한 감사 기능을 비활성화하거나 재구성할 수 있습니다. 이러한 이유로 이 정책은 계정 관리자에게만 적용해야 하며 이 정책의 사용을 긴밀하게 제어하고 모니터링해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:AddPermission", "sns:CreateTopic", "sns:DeleteTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:ListAllMyBuckets", "s3:PutBucketPolicy", "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation", "s3:GetBucketPolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": "cloudtrail:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:GetRolePolicy", "iam:GetUser" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "cloudtrail.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" } ] }

CloudTrail 콘솔에서 AWS Config 정보를 볼 수 있는 권한 부여

이벤트와 관련된 리소스를 포함하여 CloudTrail 콘솔에서 이벤트 정보를 볼 수 있습니다. 이러한 리소스에서 AWS Config 아이콘을 선택하여 AWS Config 콘솔의 해당 리소스에 대한 타임라인을 볼 수 있습니다. 읽기 전용 AWS Config 액세스를 허용하기 위해 사용자에게 이 정책을 연결합니다. 정책에서는 AWS Config에서 설정을 변경하는 권한을 허용하지 않습니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "config:Get*", "config:Describe*", "config:List*" ], "Resource": "*" }] }

자세한 내용은 AWS Config에서 참조되는 리소스 보기 단원을 참조하십시오.

Amazon CloudWatch Logs 콘솔에서 CloudTrail 정보를 보고 구성할 수 있는 권한 부여

충분한 권한이 있는 경우 CloudTrail 콘솔에서 CloudWatch Logs에 대한 이벤트 전송을 보고 구성할 수 있습니다. 이러한 권한은 CloudTrail 관리자에게 부여되는 권한 범위를 벗어날 수 있습니다. CloudWatch Logs와 CloudTrail 통합을 구성하고 관리하는 관리자에게 이 정책을 연결합니다. 이 정책은 CloudTrail 또는 CloudWatch Logs에서 관리자에게 직접 권한을 부여하지 않지만, 그 대신 CloudTrail이 CloudWatch Logs 그룹에 이벤트를 성공적으로 전달하기 위해 수임하는 역할을 생성하고 구성하는 데 필요한 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:CreateRole" "iam:PutRolePolicy" "iam:ListRoles" "iam:GetRolePolicy" "iam:GetUser" ], "Resource": "*" }] }

자세한 내용은 를 사용하여 로그 파일 모니터링 단원을 참조하십시오.

추가 정보

IAM 사용자, 그룹, 정책 및 권한 생성에 대해 자세히 알아보려면 IAM 사용 설명서첫 번째 IAM 사용자 및 관리 그룹 생성액세스 관리를 참조하십시오.