AWS 서비스에서 로깅 활성화 - Amazon CloudWatch Logs

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS 서비스에서 로깅 활성화

많은 서비스가 CloudWatch Logs에만 로그를 게시하지만 일부 AWS 서비스는 Amazon Simple Storage Service 또는 Amazon Data Firehose에 로그를 직접 게시할 수 있습니다. 이러한 서비스 중 하나에서 로그를 저장 또는 처리하는 것이 로그의 주요 요구 사항인 경우 추가 설정 없이, 로그를 생성하는 서비스가 Amazon S3 또는 Firehose에 직접 로그를 전송하도록 할 수 있습니다.

로그가 Amazon S3나 Firehose에 직접 게시되더라도 요금이 적용됩니다. 자세한 내용은 Amazon CloudWatch 요금로그 탭에서 판매된 로그를 참조하세요.

일부 AWS 서비스는 공통 인프라를 사용하여 로그를 전송합니다. 서비스에서 로깅을 활성화하려면 특정 권한을 가진 사용자로 로그인해야 합니다. 또한 로그를 전송할 수 있는 AWS에 권한을 부여해야 합니다.

이러한 권한이 필요한 서비스의 경우 두 가지 버전의 권한이 필요합니다. 이러한 추가 권한이 필요한 서비스는 표에 지원되는 [V1 권한]지원되는 [V2 권한]으로 표시되어 있습니다. 이러한 필수 권한에 대한 자세한 내용은 표 다음 섹션을 참조하세요.

로그 소스 로그 유형 CloudWatch Logs Amazon S3 Firehose

Amazon API Gateway 액세스 로그

벤딩 로그

지원되는 [V1 권한]

AWS AppSync 로그

사용자 지정 로그

지원

Amazon Aurora MySQL 로그

사용자 지정 로그

지원

Amazon Bedrock 지식 기반 로깅

벤딩 로그 지원되는 [V2 권한] 지원되는 [V2 권한] 지원되는 [V2 권한]

Amazon Chime 미디어 품질 지표 로그 및 SIP 메시지 로그

벤딩 로그

지원되는 [V1 권한]

CloudFront: 액세스 로그

벤딩 로그 지원되는 [V1 권한]

AWS CloudHSM 감사 로그

사용자 지정 로그

지원

CloudWatch Evidently 평가 이벤트 로그

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한]

CloudWatch Internet Monitor 로그

벤딩 로그 지원되는 [V1 권한]

CloudTrail 로그

사용자 지정 로그

지원

AWS CodeBuild 로그

사용자 지정 로그

지원

Amazon CodeWhisperer 이벤트 로그

벤딩 로그 지원되는 [V2 권한] 지원되는 [V2 권한] 지원되는 [V2 권한]

Amazon Cognito 로그

벤딩 로그 지원되는 [V1 권한]

Amazon Connect 로그

사용자 지정 로그

지원

AWS DataSync 로그

사용자 지정 로그

지원

Amazon ElastiCache(Redis OSS) 로그

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한]

AWS Elastic Beanstalk 로그

사용자 지정 로그

지원

Amazon Elastic Container Service 로그

사용자 지정 로그

지원

Amazon Elastic Kubernetes Service 컨트롤 플레인 로그

벤딩 로그

지원

AWS Elemental MediaTailor 로그

벤딩 로그

지원

Amazon EventBridge 파이프 로깅

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한] 지원되는 [V1 권한]

AWS Fargate 로그

사용자 지정 로그

지원

AWS Fault Injection Service 실험 로그

벤딩 로그 지원되는 [V1 권한]

Amazon FinSpace

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한] 지원되는 [V1 권한]

AWS Global Accelerator 흐름 로그

벤딩 로그 지원되는 [V1 권한]

AWS Glue 작업 로그

사용자 지정 로그

지원

IAM Identity Center 오류 로그

벤딩 로그 지원되는 [V2 권한] 지원되는 [V2 권한] 지원되는 [V2 권한]

Amazon Interactive Video Service 채팅 로그

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한] 지원되는 [V1 권한]

AWS IoT 로그

사용자 지정 로그

지원

AWS IoT FleetWise 로그

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한] 지원되는 [V1 권한]

AWS Lambda 로그

사용자 지정 로그

지원

Amazon Macie 로그

사용자 지정 로그

지원

AWS Mainframe Modernization

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한] 지원되는 [V1 권한]

Amazon Managed Service for Prometheus 로그

벤딩 로그

지원되는 [V1 권한]

Amazon MSK 브로커 로그

벤딩 로그

지원되는 [V1 권한]

지원되는 [V1 권한] 지원되는 [V1 권한]

Amazon MSK Connect 로그

벤딩 로그

지원되는 [V1 권한]

지원되는 [V1 권한] 지원되는 [V1 권한]

Amazon MQ 일반 및 감사 로그

사용자 지정 로그

지원

AWS Network Firewall 로그

벤딩 로그

지원되는 [V1 권한]

지원되는 [V1 권한] 지원되는 [V1 권한]

Network Load Balancer 액세스 로그

벤딩 로그 지원되는 [V1 권한]

OpenSearch 로그

사용자 지정 로그

지원

Amazon OpenSearch Service 수집 로그

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한] 지원되는 [V1 권한]

AWS OpsWorks 로그

사용자 지정 로그

지원

Amazon 관계형 데이터베이스 ServicePostgreSQL 로그

사용자 지정 로그

지원

AWS RoboMaker 로그

사용자 지정 로그

지원

Amazon Route 53 퍼블릭 DNS 쿼리 로그

벤딩 로그

지원

Amazon Route 53 Resolver 쿼리 로그

벤딩 로그

지원되는 [V1 권한]

지원되는 [V1 권한]

Amazon SageMaker 이벤트

벤딩 로그

지원되는 [V1 권한]

Amazon SageMaker 작업자 이벤트

벤딩 로그

지원되는 [V1 권한]

AWS Site-to_Site VPN 로그

벤딩 로그

지원되는 [V1 권한]

지원되는 [V1 권한]

지원되는 [V1 권한]

Amazon Simple Email Service 로그

벤딩 로그 지원되는 [V2 권한] 지원되는 [V2 권한] 지원되는 [V2 권한]

Amazon Simple Notification Service 로그

사용자 지정 로그

지원

Amazon Simple Notification Service 데이터 보호 정책 로그

사용자 지정 로그

지원

EC2 스팟 인스턴스 데이터 피드 파일

벤딩 로그

지원되는 [V1 권한]

AWS Step Functions Express 워크플로 및 표준 워크플로 로그

벤딩 로그

지원되는 [V1 권한]

Storage Gateway 감사 로그 및 상태 로그

벤딩 로그

지원되는 [V1 권한]

AWS Transfer Family 로그

벤딩 로그

지원되는 [V1 권한]

지원되는 [V1 권한]

지원되는 [V1 권한]

AWS Verified Access 로그

벤딩 로그

지원되는 [V1 권한]

지원되는 [V1 권한]

지원되는 [V1 권한]

Amazon Virtual Private Cloud 흐름 로그

벤딩 로그

지원

지원되는 [V1 권한] 지원되는 [V1 권한]

Amazon VPC Lattice 액세스 로그

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한] 지원되는 [V1 권한]

AWS WAF 로그

벤딩 로그 지원되는 [V1 권한] 지원되는 [V1 권한]

지원

Amazon WorkMail 로그

벤딩 로그 지원되는 [V2 권한] 지원되는 [V2 권한] 지원되는 [V2 권한]

추가 권한 [V1]이 필요한 로깅

일부 AWS 서비스는 공통 인프라를 사용하여 CloudWatch Logs, Amazon S3 또는 Firehose에 로그를 전송합니다. 다음 표에 나열된 AWS 서비스에서 로그를 대상으로 전송하도록 하려면 특정 권한이 있는 사용자로 로그인해야 합니다.

또한 AWS에 로그를 보내도록 허용하는 권한을 부여해야 합니다. AWS에서는 로그가 설정될 때 해당 권한을 자동으로 생성할 수 있습니다. 아니면 로깅을 설정하기 전에 해당 권한을 먼저 만들 수 있습니다. 교차 계정 전송의 경우 권한 정책을 직접 수동으로 생성해야 합니다.

여러분 또는 조직 내 누군가가 로그 전송을 처음으로 설정할 때 AWS에서 필요한 권한 및 리소스 정책을 자동으로 설정하도록 선택한 경우 이 섹션 뒷 부분에서 설명하는 것처럼 로그 전송을 설정하는 사용자에게는 특정 권한이 있어야 합니다. 또는 리소스 정책을 직접 만들면 로그 전송을 설정한 사용자에게 많은 권한이 필요하지 않습니다.

다음 표에서는 이 섹션의 정보가 적용되는 로그 유형과 로그 대상을 요약합니다.

다음 섹션에서는 이러한 각 대상에 대한 자세한 내용을 제공합니다.

CloudWatch Logs로 전송된 로그

중요

CloudWatch Logs로 전송되도록 다음 목록의 로그 유형을 설정하면 AWS에서는 로그 그룹과 연결된 리소스 정책을 생성하거나 변경하여 필요한 경우 로그를 수신합니다. 자세한 내용을 살펴보려면 이 섹션을 계속 읽으세요.

이 섹션은 이전 섹션의 표에 나열된 로그 유형이 CloudWatch Logs로 전송될 때 적용됩니다.

사용자 권한

처음으로, 이러한 유형의 로그를 CloudWatch Logs로 전송하도록 설정하려면 다음 권한이 있는 계정에 로그인해야 합니다.

  • logs:CreateLogDelivery

  • logs:PutResourcePolicy

  • logs:DescribeResourcePolicies

  • logs:DescribeLogGroups

    참고

    logs:DescribeLogGroups, logs:DescribeResourcePolicies 또는 logs:PutResourcePolicy 권한을 지정할 때는 단일 로그 그룹 이름만 지정하는 대신 * 와일드카드를 사용할 수 있도록 Resource 줄의 ARN을 설정해야 합니다. 예제: "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*"

이러한 유형의 로그가 이미 CloudWatch Logs의 로그 그룹으로 전송되고 있는 경우 해당 유형 로그 중 다른 하나를 동일한 로그 그룹으로 보내도록 설정하려면 logs:CreateLogDelivery 권한만 있으면 됩니다.

로그 그룹 리소스 정책

로그를 보내는 로그 그룹에는 특정 권한이 포함된 리소스 정책이 있어야 합니다. 로그 그룹에 현재 리소스 정책이 없고 로깅을 설정하는 사용자에게 로그 그룹에 대한 logs:PutResourcePolicy,logs:DescribeResourcePolicies, 및 logs:DescribeLogGroups 권한이 있는 경우 AWS에서는 로그를 CloudWatch Logs 로그로 보내기 시작할 때 자동으로 다음 정책을 생성합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:0123456789:log-group:my-log-group:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }

로그 그룹에 리소스 정책이 있지만 해당 정책에 이전 정책에 표시된 문이 포함되어 있지 않고 로깅을 설정하는 사용자에게 로그 그룹에 대한 logs:PutResourcePolicy, logs:DescribeResourcePolicieslogs:DescribeLogGroups 권한이 있는 경우 해당 문이 로그 그룹의 리소스 정책에 추가됩니다.

로그 그룹 리소스 정책 크기 제한 고려 사항

이러한 서비스는 리소스 정책에서 로그를 전송하는 각 로그 그룹을 나열해야 하며 CloudWatch Logs 리소스 정책은 5,120자로 제한됩니다. 많은 수의 로그 그룹에 로그를 전송하는 서비스는 이 제한에 도달할 수 있습니다.

이 문제를 완화하기 위해 CloudWatch Logs에서는 서비스에서 사용하는 리소스 정책의 크기를 모니터링하고, 정책이 5,120자의 크기 제한에 가까워진다는 것을 감지하면 CloudWatch Logs에서 해당 서비스에 대한 리소스 정책의 /aws/vendedlogs/*를 자동으로 활성화합니다. 그런 다음 /aws/vendedlogs/로 시작하는 이름을 가진 로그 그룹을 이러한 서비스의 로그 대상으로 사용하기 시작할 수 있습니다.

Amazon S3 로 보낸 로그

Amazon S3로 전송되도록 로그를 설정하면 AWS는 필요한 경우 로그를 수신하는 S3 버킷과 연결된 리소스 정책을 생성하거나 변경합니다.

Amazon S3에 게시되는 로그는 사용자가 지정한 기존 버킷에 게시됩니다. 지정된 버킷에 5분마다 하나 이상의 로그 파일이 생성됩니다.

Amazon S3 버킷에 처음으로 로그를 전송할 때 로그를 전송하는 서비스는 버킷의 소유자를 기록하여 로그가 이 계정에 속한 버킷에만 전달되도록 합니다. 따라서 Amazon S3 버킷 소유자를 변경하려면 원본 서비스에서 로그 구독을 다시 생성하거나 업데이트해야 합니다.

참고

CloudFront는 벤딩 로그를 S3에 전송하는 다른 서비스와는 다른 권한 모델을 사용합니다. 자세한 내용은 표준 로깅 구성 및 로그 파일에 액세스에 필요한 권한을 참조하세요.

또한 CloudFront 액세스 로그와 다른 로그 소스에 동일한 S3 버킷을 사용하는 경우 CloudFront용 버킷에서 ACL을 활성화하면 이 버킷을 사용하는 다른 모든 로그 소스에도 권한이 부여됩니다.

중요

Amazon S3 버킷에 로그를 전송하고 버킷 정책에 NotAction 또는 NotPrincipal 요소가 포함된 경우 버킷에 로그 전송 권한을 자동으로 추가하고 로그 구독을 생성하려고 하면 실패합니다. 로그 구독을 성공적으로 생성하려면 버킷 정책에 로그 전송 권한을 수동으로 추가한 다음 로그 구독을 생성해야 합니다. 자세한 내용은 이 섹션의 지침을 참조하세요.

버킷에 고객 관리형 AWS KMS 키를 사용한 서버 측 암호화가 있는 경우 고객 관리형 키를 위한 키 정책도 추가해야 합니다. 자세한 내용은 Amazon S3 단원을 참조하십시오.

사용자 권한

처음으로, 이러한 유형의 로그를 Amazon S3로 전송하도록 설정하려면 다음 권한이 있는 계정에 로그인해야 합니다.

  • logs:CreateLogDelivery

  • S3:GetBucketPolicy

  • S3:PutBucketPolicy

이러한 유형의 로그가 이미 Amazon S3 버킷으로 전송되고 있는 경우 해당 유형 로그 중 다른 하나를 동일한 버킷으로 보내도록 설정하려면 logs:CreateLogDelivery 권한만 있으면 됩니다.

S3 버킷 리소스 정책

로그가 전송되는 S3 버킷에는 특정 권한을 포함하는 리소스 정책이 있어야 합니다. 버킷에 현재 리소스 정책이 없고 로깅을 설정하는 사용자에게 해당 버킷에 대한 S3:GetBucketPolicyS3:PutBucketPolicy 권한이 있는 경우 AWS에서는 로그를 Amazon S3로 보내기 시작할 때 자동으로 다음 정책을 생성합니다.

{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }

이전 정책에서 aws:SourceAccount에 대해 이 버킷으로 로그를 전달할 계정 IDS의 목록을 지정합니다. aws:SourceArn에 대해 로그를 생성하는 리소스의 ARN 목록을 arn:aws:logs:source-region:source-account-id:* 형식으로 지정합니다.

버킷에 리소스 정책이 있지만 해당 정책에 이전 정책에 표시된 문이 포함되어 있지 않고 로깅을 설정하는 사용자에게 버킷에 대한 S3:GetBucketPolicyS3:PutBucketPolicy 권한이 있는 경우 해당 문이 로그 그룹의 리소스 정책에 추가됩니다.

참고

경우에 따라 delivery---logs.amazonaws.com.rproxy.goskope.coms3:ListBucket 권한이 부여되지 않은 경우 AWS CloudTrail에서 AccessDenied 오류가 표시될 수 있습니다. CloudTrail 로그에서 이러한 오류를 방지하려면 delivery---logs.amazonaws.com.rproxy.goskope.coms3:ListBucket 권한을 부여하고 앞의 버킷 정책에서 설정한 s3:GetBucketAcl 권한과 함께 표시된 Condition 파라미터를 포함해야 합니다. 이 작업을 더 간단하게 하려면 새로운 Statement을(를) 만드는 대신 AWSLogDeliveryAclCheck을(를) “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”](으)로 직접 업데이트할 수 있습니다.

Amazon S3 버킷 서버 측 암호화

Amazon S3-관리형 키(SSE-S3)를 사용한 서버 측 암호화 또는 AWS Key Management Service(SSE-KMS)에 저장된 AWS KMS 키를 사용한 서버 측 암호화를 활성화하여 Amazon S3 버킷의 데이터를 보호할 수 있습니다. 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

SSE-S3를 선택하면 추가 구성이 필요하지 않습니다. Amazon S3는 암호화 키를 처리합니다.

주의

SSE-KMS를 선택하면 해당 시나리오에서는 AWS 관리형 키가 지원되지 않기 때문에 고객 관리형 키를 사용해야 합니다. AWS 관리형 키를 사용하여 암호화를 설정하면 로그가 읽을 수 없는 형식으로 전달됩니다.

고객 관리형 AWS KMS 키를 사용하면 버킷 암호화를 활성화할 때 고객 관리형 키의 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 로그 전달 계정이 S3 버킷에 쓸 수 있으려면 다음 사항을 S3 버킷의 버킷 정책이 아니라 고객 관리형 키의 키 정책에 추가해야 합니다.

SSE-KMS를 선택하면 해당 시나리오에서는 AWS 관리형 키가 지원되지 않기 때문에 고객 관리형 키를 사용해야 합니다. 고객 관리형 AWS KMS 키를 사용하면 버킷 암호화를 활성화할 때 고객 관리형 키의 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 로그 전달 계정이 S3 버킷에 쓸 수 있으려면 다음 사항을 S3 버킷의 버킷 정책이 아니라 고객 관리형 키의 키 정책에 추가해야 합니다.

{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } }

aws:SourceAccount에 대해 이 버킷으로 로그를 전달할 계정 IDS의 목록을 지정합니다. aws:SourceArn에 대해 로그를 생성하는 리소스의 ARN 목록을 arn:aws:logs:source-region:source-account-id:* 형식으로 지정합니다.

Firehose에 전송된 로그

이 섹션은 이전 섹션의 테이블에 나열된 로그 유형이 Firehose로 전송될 때 적용됩니다.

사용자 권한

이러한 유형의 로그를 처음으로 Firehose에 전송하도록 설정하려면 다음 권한이 있는 계정에 로그인해야 합니다.

  • logs:CreateLogDelivery

  • firehose:TagDeliveryStream

  • iam:CreateServiceLinkedRole

이러한 유형의 로그가 이미 Firehose로 전송되고 있는 경우 해당 유형 로그 중 다른 하나를 Firehose로 전송하도록 설정하려면 logs:CreateLogDeliveryfirehose:TagDeliveryStream 권한만 있으면 됩니다.

권한에 사용되는 IAM 역할

Firehose는 리소스 정책을 사용하지 않기 때문에 AWS는 이러한 로그를 Firehose로 전송하도록 설정할 때 IAM 역할을 사용합니다. AWS는 AWSServiceRoleForLogDelivery라는 서비스 연결 역할을 생성합니다. 이 서비스 연결 역할에는 다음 권한이 포함됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:ListTagsForDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/LogDeliveryEnabled": "true" } }, "Effect": "Allow" } ] }

이 서비스 연결 역할은 LogDeliveryEnabled 태그가 true로 설정된 모든 Firehose 전송 스트림에 대한 권한을 부여합니다. AWS는 여러분이 로깅을 설정할 때 이 태그를 대상 전송 스트림에 제공합니다.

또한 이 서비스 연결 역할에는 delivery.logs.amazonaws.com 서비스 보안 주체가 필요한 서비스 연결 역할을 맡도록 허용하는 신뢰 정책이 있습니다. 이러한 신뢰 정책은 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

추가 권한 [V2]가 필요한 로깅

일부 AWS 서비스는 새 메서드를 사용하여 로그를 전송합니다. 이는 이러한 서비스에서 CloudWatch Logs, Amazon S3 또는 Firehose 대상 중 하나 이상에 로그를 전달하도록 설정할 수 있는 유연한 메서드입니다.

작동하는 로그 전송은 다음 세 가지 요소로 구성됩니다.

  • 실제로 로그를 전송하는 리소스를 나타내는 논리적 객체인 DeliverySource.

  • 실제 전달 대상을 나타내는 논리적 객체인 DeliveryDestination.

  • 전송 소스를 전송 대상에 연결하는 Delivery.

지원되는 AWS 서비스와 대상 간 로그 전달을 구성하려면 다음 작업을 수행해야 합니다.

  • PutDeliverySource를 사용하여 전송 소스를 생성합니다.

  • PutDeliveryDestination을 사용하여 전송 대상을 생성합니다.

  • 계정 간에 로그를 전달하는 경우 대상 계정의 PutDeliveryDestinationPolicy를 사용하여 대상에 IAM 정책을 할당해야 합니다. 이 정책은 계정 A의 전송 소스에서 계정 B의 전송 대상으로의 전송을 생성할 수 있는 권한을 부여합니다. 교차 계정 전송의 경우 권한 정책을 직접 수동으로 생성해야 합니다.

  • CreateDelivery를 사용하여 정확히 하나의 전송 소스와 하나의 전송 대상을 페어링하여 전송을 생성합니다.

다음 섹션에서는 V2 프로세스를 사용하여 각 유형의 대상에 대한 로그 전달을 설정하기 위해 로그인할 때 필요한 권한의 세부 정보를 제공합니다. 이러한 권한은 로그인한 IAM 역할에 부여할 수 있습니다.

중요

로그 생성 리소스를 삭제한 후 로그 전송 리소스를 제거하는 것은 사용자의 책임입니다. 이렇게 하려면 다음 단계를 따릅니다.

  1. DeleteDelivery 작업을 사용하여 Delivery를 삭제합니다.

  2. DeleteDeliverySource 작업을 사용하여 DeliverySource를 삭제합니다.

  3. 방금 삭제한 DeliverySource와 연결된 DeliveryDestination이 해당 특정 DeliverySource에만 사용되는 경우 DeleteDeliveryDestinations 작업을 사용하여 이를 제거할 수 있습니다.

CloudWatch Logs로 전송된 로그

사용자 권한

CloudWatch Logs로 로그를 전송하려면 다음 권한으로 로그인해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:region:account-id:delivery:*", "arn:aws:logs:region:account-id:delivery-source:*", "arn:aws:logs:region:account-id:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyCWL", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:*" ] } ] }

로그 그룹 리소스 정책

로그를 보내는 로그 그룹에는 특정 권한이 포함된 리소스 정책이 있어야 합니다. 로그 그룹에 현재 리소스 정책이 없고 로깅을 설정하는 사용자에게 로그 그룹에 대한 logs:PutResourcePolicy,logs:DescribeResourcePolicies, 및 logs:DescribeLogGroups 권한이 있는 경우 AWS에서는 로그를 CloudWatch Logs 로그로 보내기 시작할 때 자동으로 다음 정책을 생성합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:0123456789:log-group:my-log-group:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }

로그 그룹 리소스 정책 크기 제한 고려 사항

이러한 서비스는 리소스 정책에서 로그를 전송하는 각 로그 그룹을 나열해야 하며 CloudWatch Logs 리소스 정책은 5,120자로 제한됩니다. 많은 수의 로그 그룹에 로그를 전송하는 서비스가 이 제한에 도달할 수 있습니다.

이 문제를 완화하기 위해 CloudWatch Logs에서는 서비스에서 사용하는 리소스 정책의 크기를 모니터링하고, 정책이 5,120자의 크기 제한에 가까워진다는 것을 감지하면 CloudWatch Logs에서 해당 서비스에 대한 리소스 정책의 /aws/vendedlogs/*를 자동으로 활성화합니다. 그런 다음 /aws/vendedlogs/로 시작하는 이름을 가진 로그 그룹을 이러한 서비스의 로그 대상으로 사용하기 시작할 수 있습니다.

Amazon S3 로 보낸 로그

사용자 권한

Amazon S3로 로그를 전송하려면 다음 권한으로 로그인해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:region:account-id:delivery:*", "arn:aws:logs:region:account-id:delivery-source:*", "arn:aws:logs:region:account-id:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyS3", "Effect": "Allow", "Action": [ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::bucket-name" } ] }

로그가 전송되는 S3 버킷에는 특정 권한을 포함하는 리소스 정책이 있어야 합니다. 버킷에 현재 리소스 정책이 없고 로깅을 설정하는 사용자에게 해당 버킷에 대한 S3:GetBucketPolicyS3:PutBucketPolicy 권한이 있는 경우 AWS에서는 로그를 Amazon S3로 보내기 시작할 때 자동으로 다음 정책을 생성합니다.

{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:delivery-source*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:delivery-source:*"] } } } ] }

이전 정책에서 aws:SourceAccount에 대해 이 버킷으로 로그를 전달할 계정 IDS의 목록을 지정합니다. aws:SourceArn에 대해 로그를 생성하는 리소스의 ARN 목록을 arn:aws:logs:source-region:source-account-id:* 형식으로 지정합니다.

버킷에 리소스 정책이 있지만 해당 정책에 이전 정책에 표시된 문이 포함되어 있지 않고 로깅을 설정하는 사용자에게 버킷에 대한 S3:GetBucketPolicyS3:PutBucketPolicy 권한이 있는 경우 해당 문이 로그 그룹의 리소스 정책에 추가됩니다.

참고

경우에 따라 delivery---logs.amazonaws.com.rproxy.goskope.coms3:ListBucket 권한이 부여되지 않은 경우 AWS CloudTrail에서 AccessDenied 오류가 표시될 수 있습니다. CloudTrail 로그에서 이러한 오류를 방지하려면 delivery---logs.amazonaws.com.rproxy.goskope.coms3:ListBucket 권한을 부여하고 앞의 버킷 정책에서 설정한 s3:GetBucketAcl 권한과 함께 표시된 Condition 파라미터를 포함해야 합니다. 이 작업을 더 간단하게 하려면 새로운 Statement을(를) 만드는 대신 AWSLogDeliveryAclCheck을(를) “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”](으)로 직접 업데이트할 수 있습니다.

Amazon S3 버킷 서버 측 암호화

Amazon S3-관리형 키(SSE-S3)를 사용한 서버 측 암호화 또는 AWS Key Management Service(SSE-KMS)에 저장된 AWS KMS 키를 사용한 서버 측 암호화를 활성화하여 Amazon S3 버킷의 데이터를 보호할 수 있습니다. 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

SSE-S3를 선택하면 추가 구성이 필요하지 않습니다. Amazon S3는 암호화 키를 처리합니다.

주의

SSE-KMS를 선택하면 해당 시나리오에서는 AWS 관리형 키가 지원되지 않기 때문에 고객 관리형 키를 사용해야 합니다. AWS 관리형 키를 사용하여 암호화를 설정하면 로그가 읽을 수 없는 형식으로 전달됩니다.

고객 관리형 AWS KMS 키를 사용하면 버킷 암호화를 활성화할 때 고객 관리형 키의 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 로그 전달 계정이 S3 버킷에 쓸 수 있으려면 다음 사항을 S3 버킷의 버킷 정책이 아니라 고객 관리형 키의 키 정책에 추가해야 합니다.

SSE-KMS를 선택하면 해당 시나리오에서는 AWS 관리형 키가 지원되지 않기 때문에 고객 관리형 키를 사용해야 합니다. 고객 관리형 AWS KMS 키를 사용하면 버킷 암호화를 활성화할 때 고객 관리형 키의 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 로그 전달 계정이 S3 버킷에 쓸 수 있으려면 다음 사항을 S3 버킷의 버킷 정책이 아니라 고객 관리형 키의 키 정책에 추가해야 합니다.

{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:delivery-source:*"] } } }

aws:SourceAccount에 대해 이 버킷으로 로그를 전달할 계정 IDS의 목록을 지정합니다. aws:SourceArn에 대해 로그를 생성하는 리소스의 ARN 목록을 arn:aws:logs:source-region:source-account-id:* 형식으로 지정합니다.

Firehose에 전송된 로그

사용자 권한

Firehose로 로그 전송을 활성화하려면 다음 권한으로 로그인해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:region:account-id:delivery:*", "arn:aws:logs:region:account-id:delivery-source:*", "arn:aws:logs:region:account-id:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyFH", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": [ "arn:aws:firehose:region:account-id:deliverystream/*" ] }, { "Sid": "CreateServiceLinkedRole", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::account-id:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery" } ] }

리소스 권한에 사용되는 IAM 역할

Firehose는 리소스 정책을 사용하지 않기 때문에 AWS는 이러한 로그를 Firehose로 전송하도록 설정할 때 IAM 역할을 사용합니다. AWS는 AWSServiceRoleForLogDelivery라는 서비스 연결 역할을 생성합니다. 이 서비스 연결 역할에는 다음 권한이 포함됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:ListTagsForDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/LogDeliveryEnabled": "true" } }, "Effect": "Allow" } ] }

이 서비스 연결 역할은 LogDeliveryEnabled 태그가 true로 설정된 모든 Firehose 전송 스트림에 대한 권한을 부여합니다. AWS는 여러분이 로깅을 설정할 때 이 태그를 대상 전송 스트림에 제공합니다.

또한 이 서비스 연결 역할에는 delivery.logs.amazonaws.com 서비스 보안 주체가 필요한 서비스 연결 역할을 맡도록 허용하는 신뢰 정책이 있습니다. 이러한 신뢰 정책은 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

서비스별 권한

이전 섹션에 나열된 대상별 권한 외에도 일부 서비스는 보안 강화를 위해 고객이 리소스에서 로그를 전송할 수 있도록 허용하는 명시적 권한 부여가 필요합니다. 이를 통해 해당 서비스 내에서 로그를 벤딩하는 리소스에 대한 AllowVendedLogDeliveryForResource 작업 권한이 부여됩니다. 이러한 서비스의 경우 다음 정책을 사용하고 serviceresource-type을 적절한 값으로 바꿉니다. 이러한 필드의 서비스별 값은 해당 서비스의 설명서 페이지에서 벤딩 로그를 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "service:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:service:region:account-id:resource-type/*" } ] }

콘솔별 권한

API 대신 콘솔을 사용하여 로그 전송을 설정하는 경우 이전 섹션에 나열된 권한 외에도 다음과 같은 추가 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogDeliveryActionsConsoleCWL", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleS3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleFH", "Effect": "Allow", "Action": [ "firehose:ListDeliveryStreams", "firehose:DescribeDeliveryStream" ], "Resource": [ "*" ] } ] }

교차 계정 전송 예제

이 예제와 관련되는 계정은 두 개입니다. 로그 생성 리소스가 있는 계정은 계정 A, ID: AAAAAAAAAAAA이고, 로그 소비 리소스가 있는 계정은 계정 B, ID: BBBBBBBBBB입니다.

계정 A는 ARN arn:aws:bedrock:region:AAAAAAAAAAAA:knowledge-base/XXXXXXXXXX를 사용하여 계정의 Amazon Bedrock 지식 기반에서 로그를 전송하려고 합니다.

이 예제에서 계정 A에는 다음 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowVendedLogDeliveryForKnowledgeBase", "Effect": "Allow", "Action": [ "bedrock:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:bedrock:region:AAAAAAAAAAAA:knowledge-base/XXXXXXXXXX" }, { "Sid": "CreateLogDeliveryPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliverySource", "logs:CreateDelivery" ], "Resource": [ "arn:aws:logs:region:AAAAAAAAAAAA:delivery-source:*", "arn:aws:logs:region:AAAAAAAAAAAA:delivery:*", "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:*" ] } ] }

전송 소스 생성

먼저 계정 A는 bedrock 지식 기반을 사용하여 전송 소스를 생성합니다.

aws logs put-delivery-source --name my-delivery-source --log-type APPLICATION_LOGS --resource-arn arn:aws:bedrock:region:AAAAAAAAAAAA:knowledge-base/XXXXXXXXXX

다음으로 계정 B는 아래 흐름 중 하나를 사용하여 전송 대상을 생성해야 합니다.

Amazon S3 버킷으로의 전송 구성

계정 B는 ARN arn:aws:s3:::amzn-s3-demo-bucket을 사용하여 S3 버킷에 로그를 수신하려고 합니다. 이 예제에서 계정 B에는 다음 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutLogDestinationPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:*" } ] }

버킷은 버킷 정책에서 다음 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogsDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/AAAAAAAAAAAA/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["AAAAAAAAAAAA"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:AAAAAAAAAAAA:delivery-source:my-delivery-source"] } } } ] }

버킷이 SSE-KMS로 암호화된 경우 AWS KMS 키 정책에 적절한 권한이 있는지 확인합니다. 예를 들어 KMS 키가 arn:aws:kms:region:BBBBBBBBBBBB:key/X인 경우 다음을 사용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogsGenerateDataKey", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" } "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:BBBBBBBBBBBB:key/X", "Condition": { "StringEquals": { "aws:SourceAccount": ["AAAAAAAAAAAA"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:AAAAAAAAAAAA:delivery-source:my-delivery-source"] } } } ] }

그런 다음 계정 B는 S3 버킷을 대상 리소스로 사용하여 전송 대상을 생성할 수 있습니다.

aws logs put-delivery-destination --name my-s3-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket"

다음으로 계정 B는 새로 생성된 전송 대상에 전송 대상 정책을 생성하여 계정 A가 로그 전송을 생성할 수 있는 권한을 부여합니다. 새로 생성된 전송 대상에 추가할 정책은 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "AAAAAAAAAAAA" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-s3-delivery-destination" } ] }

이 정책은 계정 B의 컴퓨터에 destination-policy-s3.json으로 저장됩니다. 이 리소스를 연결하기 위해 계정 B는 다음 명령을 실행합니다.

aws logs put-delivery-destination-policy --delivery-destination-name my-s3-delivery-destination --delivery-destination-policy file://destination-policy-s3.json

마지막으로 계정 A는 계정 A의 전송 소스를 계정 B의 전송 대상에 연결하는 전송을 생성합니다.

aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-s3-delivery-destination

Firehose 스트림으로의 전송 구성

이 예제에서 계정 B는 Firehose 스트림에 로그를 수신하려고 합니다. Firehose 스트림에는 다음 ARN이 있으며, DirectPut 전송 스트림 유형을 사용하도록 구성되어 있습니다.

arn:aws:firehose:region:BBBBBBBBBBBB:deliverystream/X

이 예제에서 계정 B에는 다음 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFirehoseCreateSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::BBBBBBBBBBBB:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery", }, { "Sid": "AllowFirehoseTagging", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": "arn:aws:firehose:region:BBBBBBBBBBBB:deliverystream/X" }, { "Sid": "AllowFirehoseDeliveryDestination", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:*" } ] }

Firehose 스트림의 true 태그가 LogDeliveryEnabled로 설정되어 있어야 합니다.

그런 다음 계정 B는 Firehose 스트림을 대상 리소스로 사용하여 전송 대상을 생성합니다.

aws logs put-delivery-destination --name my-fh-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:firehose:region:BBBBBBBBBBBB:deliverystream/X"

다음으로 계정 B는 새로 생성된 전송 대상에 전송 대상 정책을 생성하여 계정 A가 로그 전송을 생성할 수 있는 권한을 부여합니다. 새로 생성된 전송 대상에 추가할 정책은 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "AAAAAAAAAAAA" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-fh-delivery-destination" } ] }

이 정책은 계정 B의 컴퓨터에 destination-policy-fh.json으로 저장됩니다. 이 리소스를 연결하기 위해 계정 B는 다음 명령을 실행합니다.

aws logs put-delivery-destination-policy --delivery-destination-name my-fh-delivery-destination --delivery-destination-policy file://destination-policy-fh.json

마지막으로 계정 A는 계정 A의 전송 소스를 계정 B의 전송 대상에 연결하는 전송을 생성합니다.

aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-fh-delivery-destination

교차 서비스 혼동된 대리인 방지

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. AWS에서는 교차 서비스 가장으로 인해 혼동된 대리자 문제가 발생할 수 있습니다. 교차 서비스 가장은 한 서비스(호출하는 서비스)가 다른 서비스(호출되는 서비스)를 직접적으로 호출할 때 발생할 수 있습니다. 직접적으로 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 보안 주체를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다.

CloudWatch Logs가 다른 서비스에 제공하는 권한을 리소스로 제한하려면 리소스 정책에서 aws:SourceArn, aws:SourceAccount, aws:SourceOrgID, aws:SourceOrgPaths 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. aws:SourceArn을 사용하면 하나의 리소스만 교차 서비스 액세스 권한과 연결됩니다. aws:SourceAccount를 사용하면 해당 계정의 모든 리소스가 교차 서비스 사용 권한과 연결됩니다. aws:SourceOrgID를 사용하면 조직 내 모든 계정의 모든 리소스가 교차 서비스 사용 권한과 연결될 수 있습니다. aws:SourceOrgPaths를 사용하면 AWS Organizations 경로 내 계정의 모든 리소스가 교차 서비스 사용 권한과 연결됩니다. 경로 사용 및 이해에 대한 자세한 내용은 AWS Organizations 엔터티 경로 이해하기 섹션을 참조하세요.

혼동된 대리인 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 aws:SourceArn 글로벌 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모르거나 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드 문자(*)를 포함한 aws:SourceArn 글로벌 조건 컨텍스트 키를 사용합니다. 예: arn:aws:servicename:*:123456789012:*.

만약 aws:SourceArn 값에 Amazon S3 버킷 ARN과 같은 계정 ID가 포함되어 있지 않은 경우, 권한을 제한하려면 두 aws:SourceAccountaws:SourceArn를 모두 사용해야 합니다.

혼동된 대리자 문제로부터 보호하려면 리소스 기반 정책에서 리소스의 조직 ID 또는 조직 경로와 함께 aws:SourceOrgID 또는 aws:SourceOrgPaths 전역 조건 컨텍스트 키를 사용하세요. aws:SourceOrgID 또는 aws:SourceOrgPaths 키가 포함된 정책에는 올바른 계정이 자동으로 포함되며 조직에서 계정을 추가, 제거 또는 이동할 때 정책을 수동으로 업데이트할 필요가 없습니다.

이 페이지의 이전 섹션에 있는 정책은 aws:SourceArnaws:SourceAccount 글로벌 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여줍니다.

AWS 관리형 정책에 대한 CloudWatch Logs 업데이트

이 서비스가 이러한 변경 내용을 추적하기 시작한 이후부터 CloudWatch Logs의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다. 이 페이지의 변경 사항에 대한 자동 알림을 받아보려면 CloudWatch Logs 문서 기록 페이지에서 RSS 피드를 구독하세요.

변경 사항 설명 날짜

AWSServiceRoleForLogDelivery 서비스 연결 역할 정책 – 기존 정책에 대한 업데이트

CloudWatch Logs는 AWSServiceRoleForLogDelivery 서비스 연결 역할과 연결된 IAM 정책에서 권한을 변경했습니다. 변경 내용은 다음과 같습니다.

  • firehose:ResourceTag/LogDeliveryEnabled": "true" 조건 키가 aws:ResourceTag/LogDeliveryEnabled": "true"로 변경되었습니다.

2021년 7월 15일

CloudWatch Logs 변경 내용 추적 시작

CloudWatch Logs가 AWS 관리형 정책에 대한 변경 내용 추적을 시작했습니다.

2021년 6월 10일