View a markdown version of this page

CloudWatch 파이프라인 IAM 정책 및 권한 - Amazon CloudWatch

CloudWatch 파이프라인 IAM 정책 및 권한

이 섹션에서는 CloudWatch 파이프라인에 대한 IAM 요구 사항을 제공합니다. 권한은 데이터 소스와 통합 방법에 따라 다릅니다.

다음 표는 사용 사례에 적용되는 IAM 섹션을 파악하는 데 도움이 됩니다.

사용 사례: 통합 방법 파이프라인 구성의 소스 유형 필요한 IAM 섹션
타사 통합(API 풀) 파이프라인이 저장된 자격 증명을 사용하여 공급업체 API에서 풀링합니다. microsoft_office365, okta_sso, palo_alto_ngfw 등. API 호출자 권한 + 타사 소스(API 풀) + 리소스 정책
타사 통합(S3 전송) 공급업체가 S3 버킷으로 파일을 전송합니다. s3 API 호출자 권한 + 타사 소스(S3 전송) + 리소스 정책
S3의 사용자 지정 데이터 애플리케이션이 S3에 쓰고, 파이프라인이 버킷에서 읽습니다. s3 API 호출자 권한 + S3의 사용자 지정 데이터 + 리소스 정책
CloudWatch Logs의 사용자 지정 데이터 애플리케이션이 CloudWatch Logs 로그 그룹에 로깅합니다. cloudwatch_logs API 호출자 권한 + CloudWatch Logs의 사용자 지정 데이터
판매된 AWS 서비스 로그 AWS 서비스가 CloudWatch Logs로 로그를 전송합니다(VPC 흐름 로그, Route 53). cloudwatch_logs API 호출자 권한 + 판매된 AWS 서비스 로그
참고

S3 기반 소스(s3)는 파이프라인 생성 후 리소스 정책이 필요합니다. CloudWatch Logs 소스(cloudwatch_logs)는 그렇지 않습니다.

API 호출자 권한

CreateTelemetryPipeline을 직접적으로 호출하는 IAM 위탁자는 파이프라인 구성에 참조된 모든 역할에 대해 iam:PassRole 권한이 필요합니다.

예 PassRole 정책 템플릿
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForPipelineSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-source-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "service-principal" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }

사용 사례에 따라 service-principal을 다음 표의 값으로 바꾸세요.

사용 사례: 서비스 위탁자 값
타사(API 풀) telemetry-pipelines.observabilityadmin.amazonaws.com
타사(S3 전송) telemetry-pipelines.observabilityadmin.amazonaws.com
S3의 사용자 지정 데이터 telemetry-pipelines.observabilityadmin.amazonaws.com
CloudWatch Logs의 사용자 지정 데이터 logs.amazonaws.com
판매된 AWS 서비스 로그 logs.amazonaws.com
참고

Condition 블록은 권장되지만 선택 사항입니다. 이 블록이 없으면 역할이 모든 서비스에 전달될 수 있습니다.

파이프라인 규칙 권한(CloudWatch Logs 소스만 해당)

cloudwatch_logs를 소스로 사용할 경우 API 호출자에게 파이프라인 규칙 작업에 대한 권한도 필요합니다. CreateTelemetryPipelineUpdateTelemetryPipeline 작업에는 logs:PutPipelineRule 권한이 필요합니다. DeleteTelemetryPipeline 작업에는 logs:DeletePipelineRule 권한이 필요합니다.

예 CloudWatch Logs 파이프라인 규칙에 대한 IAM 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PipelineRuleForCloudWatchLogs", "Effect": "Allow", "Action": [ "logs:PutPipelineRule", "logs:DeletePipelineRule" ], "Resource": "*" } ] }

소스 역할 정책

각 파이프라인에는 서비스에서 데이터를 읽기 위해 수임하는 전용 IAM 역할이 필요합니다. 다음 하위 섹션에서는 각 사용 사례에 대한 전체 정책(권한 및 신뢰)을 제공합니다.

타사 소스(API 풀)

이 섹션은 Microsoft Office 365, Microsoft Entra ID, Okta SSO, Palo Alto NGFW 및 AWS Secrets Manager에 자격 증명을 저장하는 기타 공급업체 API 통합에 적용됩니다.

권한 정책

다음 정책을 통해 역할이 저장된 API 자격 증명을 검색할 수 있습니다.

예 Secrets Manager 소스에 대한 IAM 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "secrets-manager-access", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:your-region:your-account-id:secret:your-secret-name*" }, { "Sid": "kms-access", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:your-region:your-account-id:key/your-key-id" } ] }
참고

kms:Decrypt 문은 Secrets Manager의 시크릿이 고객 관리형 KMS 키로 암호화된 경우에만 필요합니다.

신뢰 정책

예 API 풀 소스에 대한 신뢰 정책
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

API 풀 파이프라인에 대한 전체 IAM 설정

다음 예제에서는 타사 API 풀 파이프라인을 처음부터 끝까지 생성하는 데 필요한 모든 IAM 정책을 보여줍니다.

호출자 자격 증명 정책 - CreateTelemetryPipeline을 직접적으로 호출하는 위탁자에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateApiPullPipeline", "Effect": "Allow", "Action": [ "observabilityadmin:CreateTelemetryPipeline", "iam:PassRole" ], "Resource": "*" } ] }

소스 역할 권한 정책 - 파이프라인이 수임하는 역할에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:your-region:your-account-id:secret:your-secret-name*" } ] }

소스 역할 신뢰 정책:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
참고

파이프라인을 생성한 후 5분 내에 리소스 정책도 생성해야 합니다. 리소스 정책을(를) 참조하세요.

참고

프로덕션용으로 API 호출자 권한에 표시된 조건 키를 사용하여 iam:PassRole 범위를 축소합니다. 시크릿이 고객 관리형 KMS 키를 사용하는 경우 소스 역할 권한 정책에 kms:Decrypt를 추가합니다.

타사 소스(S3 전송)

이 섹션은 S3 버킷으로 로그 파일을 전송하는 모든 타사 공급업체(예: CrowdStrike Falcon, Wiz 또는 Cisco Umbrella)에 적용됩니다.

권한 정책

다음 정책을 통해 역할이 S3에서 객체를 읽고 SQS 알림을 사용할 수 있습니다.

예 S3 소스에 대한 IAM 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3-access", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::your-bucket-name/*" }, { "Sid": "sqs-access", "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:ChangeMessageVisibility" ], "Resource": "arn:aws:sqs:your-region:your-account-id:your-queue-name" }, { "Sid": "kms-access", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:your-region:your-account-id:key/your-key-id" } ] }
참고

kms:Decrypt 문은 S3 버킷 또는 SQS 대기열에서 암호화에 고객 관리형 KMS 키를 사용하는 경우에만 필요합니다.

신뢰 정책

예 S3 전송 소스에 대한 신뢰 정책
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

S3 전송 파이프라인에 대한 전체 IAM 설정

다음 예제에서는 S3 전송 파이프라인을 처음부터 끝까지 생성하는 데 필요한 모든 IAM 정책을 보여줍니다.

호출자 자격 증명 정책 - CreateTelemetryPipeline을 직접적으로 호출하는 위탁자에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateS3Pipeline", "Effect": "Allow", "Action": [ "observabilityadmin:CreateTelemetryPipeline", "iam:PassRole" ], "Resource": "*" } ] }

소스 역할 권한 정책 - 파이프라인이 수임하는 역할에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3Access", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::your-bucket-name/*" }, { "Sid": "SqsAccess", "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:ChangeMessageVisibility" ], "Resource": "arn:aws:sqs:your-region:your-account-id:your-queue-name" } ] }

소스 역할 신뢰 정책:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
참고

파이프라인을 생성한 후 5분 내에 리소스 정책도 생성해야 합니다. 리소스 정책을(를) 참조하세요.

참고

프로덕션용으로 API 호출자 권한에 표시된 조건 키를 사용하여 iam:PassRole 범위를 축소합니다. S3 버킷 또는 SQS 대기열에서 고객 관리형 KMS 키를 사용하는 경우 소스 역할 권한 정책에 kms:Decrypt를 추가합니다.

S3의 사용자 지정 데이터

이 섹션은 S3 버킷에 로그 파일을 쓰는 자체 애플리케이션이나 인프라에 적용됩니다.

IAM 설정은 타사 소스(S3 전송)와 동일합니다. 동일한 권한 정책과 신뢰 정책을 생성합니다. 파이프라인은 누가 데이터를 작성했는지에 관계없이 SQS 이벤트 알림을 통해 버킷에서 읽습니다.

CloudWatch Logs의 사용자 지정 데이터

이 섹션은 CloudWatch Logs 로그 그룹(예: Lambda 함수, ECS 컨테이너 또는 사용자 지정 EC2 애플리케이션)에 로깅하는 자체 애플리케이션에 적용됩니다.

권한 정책

다음 정책을 통해 역할이 지정된 로그 그룹의 로그를 처리할 수 있습니다.

예 CloudWatch Logs 소스에 대한 IAM 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "logs-processing-access", "Effect": "Allow", "Action": [ "logs:processWithPipeline" ], "Resource": [ "arn:aws:logs:your-region:your-account-id:log-group:your-log-group-01", "arn:aws:logs:your-region:your-account-id:log-group:your-log-group-02" ] } ] }

logs:data_source_namelogs:data_source_type 조건 키를 사용하여 변환을 간접적으로 호출할 수 있는 파이프라인 소스를 제한함으로써 이 권한의 적용 범위를 축소할 수 있습니다. logs:data_source_name 값은 파이프라인 구성의 data_source_name에 해당하고, logs:data_source_type 값은 파이프라인 구성의 data_source_type에 해당합니다.

예 CloudWatch Logs 소스에 대한 권한 정책(조건 키를 사용하여 범위 축소)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowProcessWithPipelineScopedDown", "Effect": "Allow", "Action": "logs:ProcessWithPipeline", "Resource": "arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name", "Condition": { "StringEquals": { "aws:ResourceAccount": "your-account-id", "logs:data_source_name": "your-source-name", "logs:data_source_type": "your-source-type" } } } ] }
참고

CloudWatch Logs 소스에 대한 IAM 역할에는 신뢰 정책(logs.amazonaws.com이 역할을 수임할 수 있도록 허용)과 권한 정책(logs:ProcessWithPipeline 권한 부여)이 모두 필요합니다. 두 정책이 없으면 CloudWatch 파이프라인이 수집 중 로그 이벤트를 변환할 수 없습니다.

신뢰 정책

예 CloudWatch Logs 소스에 대한 신뢰 정책
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
참고

CloudWatch Logs 소스 파이프라인에는 리소스 정책이 필요하지 않습니다.

CloudWatch Logs 파이프라인에 대한 전체 IAM 설정

다음 예제에서는 CloudWatch Logs 파이프라인을 처음부터 끝까지 생성하는 데 필요한 모든 IAM 정책을 보여줍니다.

호출자 자격 증명 정책 - CreateTelemetryPipeline을 직접적으로 호출하는 위탁자에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateLogsPipeline", "Effect": "Allow", "Action": [ "observabilityadmin:CreateTelemetryPipeline", "logs:PutPipelineRule", "logs:DeletePipelineRule", "iam:PassRole" ], "Resource": "*" } ] }

소스 역할 권한 정책 - 파이프라인이 수임하는 역할에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LogsProcessing", "Effect": "Allow", "Action": [ "logs:processWithPipeline" ], "Resource": [ "arn:aws:logs:your-region:your-account-id:log-group:your-log-group" ] } ] }

소스 역할 신뢰 정책:

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

프로덕션용으로 API 호출자 권한에 표시된 조건 키를 사용하여 iam:PassRole 범위를 축소합니다.

판매된 AWS 서비스 로그

이 섹션은 VPC 흐름 로그, Route 53 쿼리 로그 및 기타 AWS 판매된 로그 유형과 같이 CloudWatch Logs로 전송된 AWS 서비스 로그에 적용됩니다.

IAM 설정은 CloudWatch Logs의 사용자 지정 데이터와 동일합니다. 동일한 권한 정책(로그 그룹으로 범위가 지정된 logs:processWithPipeline)과 동일한 신뢰 정책(logs.amazonaws.com)을 사용합니다.

cloudwatch_logs 소스 유형이 사용되므로 호출자에게 logs:PutPipelineRulelogs:DeletePipelineRule 권한도 필요합니다. 파이프라인 규칙 권한(CloudWatch Logs 소스만 해당)을(를) 참조하세요.

리소스 정책

S3 기반 소스와 Secrets Manager 기반 소스(타사 통합)에는 CloudWatch Logs 리소스 정책이 필요합니다. CloudWatch Logs 소스(사용자 지정 데이터 또는 판매된 로그)에는 리소스 정책이 필요하지 않습니다.

CreateTelemetryPipeline을 직접적으로 호출하면 파이프라인 ARN을 수신합니다. logs:PutResourcePolicy를 직접적으로 호출하여 CloudWatch 파이프라인 서비스 위탁자가 구성된 로그 그룹에 쓸 수 있도록 해야 합니다.

타이밍 제약 조건

파이프라인 ARN을 수신한 후 5분 내에 이 리소스 정책을 생성해야 합니다. 정책이 적용되기 전에 파이프라인이 활성화되면 데이터가 삭제됩니다.

예 logs:PutResourcePolicy 요청
{ "policyName": "resourceArn=arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*", "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/your-pipeline-id" } } } ] } }

리소스 정책 관리

AWS CLI를 사용하여 CloudWatch 파이프라인에 대한 CloudWatch Logs 리소스 정책을 생성하거나 업데이트합니다.

기존 정책을 확인하려면 다음을 수행하세요.

aws logs describe-resource-policies \ --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*

새로운 정책을 생성하려면 다음을 수행하세요.

aws logs put-resource-policy \ --region your-region \ --policy-name "resourceArn=arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*" \ --policy-document file://policy.json

기존 정책과 병합하려면 다음을 수행하세요.

리소스 정책이 이미 있는 경우 정책 문서의 기존 Statement 배열에 새 문을 추가하고 병합된 파일을 사용하여 put-resource-policy를 다시 직접적으로 호출합니다.

  1. 기존 정책을 검색합니다.

    aws logs describe-resource-policies \ --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*
  2. 기존 Statement 배열에 새 문을 추가합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "existing-service.amazonaws.com" }, "Action": [ "logs:SomeAction" ] }, { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/your-pipeline-id" } } } ] }
  3. 정책을 업데이트합니다.

    aws logs put-resource-policy \ --region your-region \ --policy-name "resourceArn=arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*" \ --policy-document file://existing-policy.json

정책이 생성되거나 업데이트되었는지 확인합니다.

aws logs describe-resource-policies \ --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*

다음과 같이 자리 표시자를 바꿉니다.

  • your-region - 사용자의 AWS 리전(예: us-east-1)

  • your-account-id - 사용자의 12자리 숫자로 된 AWS 계정 ID

  • your-log-group-name - 사용자의 CloudWatch Logs 로그 그룹 이름

  • your-pipeline-id - 사용자의 원격 분석 파이프라인 ID(CreateTelemetryPipeline에 의해 반환됨)

파이프라인 조건 키

CloudWatch 파이프라인은 파이프라인을 생성할 수 있는 사용자와 소스 역할을 수임할 수 있는 계정을 제한할 수 있는 IAM 조건 키를 지원합니다. 이러한 조건 키를 사용하여 조직 전반에 거버넌스 정책을 적용합니다.

CreateTelemetryPipeline 조건

자격 증명 정책에서 이러한 조건 키를 사용하여 위탁자가 생성할 수 있는 파이프라인을 제어합니다.

observabilityadmin:SourceType

파이프라인 생성을 특정 소스 유형으로 제한합니다. 지원되는 값에는 cloudwatch_logs, s3, microsoft_office365, okta_sso, palo_alto_ngfw이 포함됩니다.

예소스 유형 기준 파이프라인 생성 제한
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPipelineCreationForSpecificSourceType", "Effect": "Allow", "Action": "observabilityadmin:CreateTelemetryPipeline", "Resource": "*", "Condition": { "StringEquals": { "observabilityadmin:SourceType": "cloudwatch_logs" } } } ] }

소스 역할 신뢰 정책 조건

소스 역할의 신뢰 정책에서 이러한 조건 키를 사용하여 역할을 수임할 수 있는 계정을 제한합니다. 이를 통해 서비스가 다른 계정을 대신할 수 있는 혼동된 대리자 공격이 방지됩니다.

aws:SourceAccount

역할 가정을 특정 AWS 계정에서 시작된 요청으로 제한합니다.

aws:SourceArn

역할 가정을 특정 리소스 ARN(예: 로그 그룹)에서 시작된 요청으로 제한합니다.

예 SourceAccount 조건이 있는 신뢰 정책(CloudWatch Logs 소스)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:your-region:your-account-id:log-group:*" } } } ] }

AI 지원 프로세서 구성 권한

CloudWatch 파이프라인 콘솔에서 AI 지원 프로세서 구성을 사용하려면 IAM 보안 주체에 logs:GeneratePipeline 권한이 있어야 합니다. 이 권한은 자연어 설명에서 프로세서 구성을 생성할 수 있는 권한을 부여합니다.

예 AI 지원 프로세서 구성을 위한 IAM 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGeneratePipeline", "Effect": "Allow", "Action": "logs:GeneratePipeline", "Resource": "*" } ] }