

# CloudWatch 파이프라인 IAM 정책 및 권한
<a name="pipeline-iam-reference"></a>

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

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


| 사용 사례: | 통합 방법 | 파이프라인 구성의 소스 유형 | 필요한 IAM 섹션 | 
| --- | --- | --- | --- | 
| [타사 통합(API 풀)](data-sources.md#data-sources-third-party) | 파이프라인이 저장된 자격 증명을 사용하여 공급업체 API에서 풀링합니다. | microsoft\_office365, okta\_sso, palo\_alto\_ngfw 등. | [API 호출자 권한](#api-caller-permissions) \+ [타사 소스(API 풀)](#third-party-api-pull) \+ [리소스 정책](#resource-policies) | 
| [타사 통합(S3 전송)](data-sources.md#data-sources-third-party) | 공급업체가 S3 버킷으로 파일을 전송합니다. | s3 | [API 호출자 권한](#api-caller-permissions) \+ [타사 소스(S3 전송)](#third-party-s3-delivery) \+ [리소스 정책](#resource-policies) | 
| [S3의 사용자 지정 데이터](data-sources.md#data-sources-custom) | 애플리케이션이 S3에 쓰고, 파이프라인이 버킷에서 읽습니다. | s3 | [API 호출자 권한](#api-caller-permissions) \+ [S3의 사용자 지정 데이터](#custom-data-s3) \+ [리소스 정책](#resource-policies) | 
| [CloudWatch Logs의 사용자 지정 데이터](data-sources.md#data-sources-custom) | 애플리케이션이 CloudWatch Logs 로그 그룹에 로깅합니다. | cloudwatch\_logs | [API 호출자 권한](#api-caller-permissions) \+ [CloudWatch Logs의 사용자 지정 데이터](#custom-data-cloudwatch-logs) | 
| [판매된 AWS 서비스 로그](data-sources.md#data-sources-aws-services) | AWS 서비스가 CloudWatch Logs로 로그를 전송합니다(VPC 흐름 로그, Route 53). | cloudwatch\_logs | [API 호출자 권한](#api-caller-permissions) \+ [판매된 AWS 서비스 로그](#vended-service-logs) | 
| [CloudWatch Metrics(OTel)](data-sources.md#data-sources-metrics-otel) | AWS 서비스는 OTLP를 통해 지표를 내보냅니다. | cloudwatch\_metrics | [CloudWatch Metrics 소스에 대한 파이프라인 규칙 권한](#pipeline-rule-permissions-metrics) | 

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

## API 호출자 권한
<a name="api-caller-permissions"></a>

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

**Example 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 소스만 해당)
<a name="pipeline-rule-permissions"></a>

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

**Example CloudWatch Logs 파이프라인 규칙에 대한 IAM 정책**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PipelineRuleForCloudWatchLogs",
            "Effect": "Allow",
            "Action": [
                "logs:PutPipelineRule",
                "logs:DeletePipelineRule"
            ],
            "Resource": "*"
        }
    ]
}
```

### CloudWatch Metrics 소스에 대한 파이프라인 규칙 권한
<a name="pipeline-rule-permissions-metrics"></a>

`cloudwatch_metrics`를 소스로 사용하는 경우 파이프라인 규칙 작업에 대한 권한이 필요합니다. 파이프라인을 생성하거나 업데이트하려면 `cloudwatch:PutPipelineRule` 권한을 부여합니다. 파이프라인을 삭제하려면 `cloudwatch:DeletePipelineRule` 권한을 부여합니다. 지표 파이프라인에는 `iam:PassRole` 또는 CloudWatch Logs 리소스 정책이 필요하지 않습니다. 이러한 작업의 범위를 `dataset/default` 리소스로 축소할 수 있습니다.

**Example CloudWatch 지표 파이프라인 규칙에 대한 IAM 정책**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PipelineRuleForCloudWatchMetrics",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutPipelineRule",
                "cloudwatch:DeletePipelineRule"
            ],
            "Resource": "arn:aws:cloudwatch:{{your-region}}:{{your-account-id}}:dataset/default"
        }
    ]
}
```

**조건 키를 사용하여 범위 축소**

## 소스 역할 정책
<a name="source-role-policies"></a><a name="source-specific-iam-policies"></a><a name="trust-relationships"></a>

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

### 타사 소스(API 풀)
<a name="third-party-api-pull"></a>

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

**권한 정책**

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

**Example 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 키로 암호화된 경우에만 필요합니다.

**신뢰 정책**

**Example API 풀 소스에 대한 신뢰 정책**  

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

#### API 풀 파이프라인에 대한 전체 IAM 설정
<a name="api-pull-complete-setup"></a>

다음 예제에서는 타사 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분 내에 리소스 정책도 생성해야 합니다. [리소스 정책](#resource-policies)을(를) 참조하세요.

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

### 타사 소스(S3 전송)
<a name="third-party-s3-delivery"></a>

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

**권한 정책**

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

**Example 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 키를 사용하는 경우에만 필요합니다.

**신뢰 정책**

**Example S3 전송 소스에 대한 신뢰 정책**  

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

#### S3 전송 파이프라인에 대한 전체 IAM 설정
<a name="s3-delivery-complete-setup"></a>

다음 예제에서는 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분 내에 리소스 정책도 생성해야 합니다. [리소스 정책](#resource-policies)을(를) 참조하세요.

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

### S3의 사용자 지정 데이터
<a name="custom-data-s3"></a>

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

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

### CloudWatch Logs의 사용자 지정 데이터
<a name="custom-data-cloudwatch-logs"></a>

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

**권한 정책**

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

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

**Example 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 파이프라인이 수집 중 로그 이벤트를 변환할 수 없습니다.

**신뢰 정책**

**Example CloudWatch Logs 소스에 대한 신뢰 정책**  

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

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

#### CloudWatch Logs 파이프라인에 대한 전체 IAM 설정
<a name="cloudwatch-logs-complete-setup"></a>

다음 예제에서는 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 호출자 권한](#api-caller-permissions)에 표시된 조건 키를 사용하여 `iam:PassRole` 범위를 축소합니다.

### 판매된 AWS 서비스 로그
<a name="vended-service-logs"></a>

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

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

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

## 리소스 정책
<a name="resource-policies"></a>

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

`CreateTelemetryPipeline`을 직접적으로 호출하면 파이프라인 ARN을 수신합니다. `[logs:PutResourcePolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutResourcePolicy.html)`를 직접적으로 호출하여 CloudWatch 파이프라인 서비스 위탁자가 구성된 로그 그룹에 쓸 수 있도록 해야 합니다.

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

**Example 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}}"
                    }
                }
            }
        ]
    }
}
```

## 리소스 정책 관리
<a name="managing-resource-policies"></a>

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}}:*
   ```

1. 기존 `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}}"
                   }
               }
           }
       ]
   }
   ```

1. 정책을 업데이트합니다.

   ```
   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`에 의해 반환됨)

## 파이프라인 조건 키
<a name="pipeline-condition-keys"></a>

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

`observabilityadmin:SourceName`  
파이프라인 생성을 특정 소스 이름으로 제한합니다. 로그 파이프라인에만 적용됩니다.

`observabilityadmin:SourceType`  
파이프라인 생성을 특정 소스 유형으로 제한합니다.

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

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

**Example 소스 유형 기준 파이프라인 생성 제한**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPipelineCreationForSpecificSourceType",
            "Effect": "Allow",
            "Action": "observabilityadmin:CreateTelemetryPipeline",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "observabilityadmin:SourceType": "cloudwatch_logs"
                }
            }
        }
    ]
}
```

## 소스 역할 신뢰 정책 조건
<a name="source-role-trust-conditions"></a>

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

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

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

**Example 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 지원 프로세서 구성 권한
<a name="ai-assisted-permissions"></a>

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

**Example AI 지원 프로세서 구성을 위한 IAM 정책**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowGeneratePipeline",
            "Effect": "Allow",
            "Action": "logs:GeneratePipeline",
            "Resource": "*"
        }
    ]
}
```