CloudWatch パイプラインの IAM ポリシーとアクセス許可 - Amazon CloudWatch

CloudWatch パイプラインの IAM ポリシーとアクセス許可

このセクションでは、API 発信者のアクセス許可、ソース固有のポリシー、信頼関係、リソースポリシーなど、CloudWatch パイプラインの詳細な IAM 要件について説明します。

API 発信者のアクセス許可

CreateTelemetryPipeline API を呼び出すパイプライン設定で指定したロール (S3 ソースロール、Secrets Manager アクセスロール、CloudWatch Logs ソースロールなど) には、ロールを渡すための特定のアクセス許可が必要です。

PassRole アクセス許可

パイプライン設定で指定したロール (S3 ソースロール、Secrets Manager アクセスロール、または CloudWatch Logs ソースロール) に必要です。

例 S3 ソースの IAM ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForS3Source", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-s3-source-role" } ] }
例 Secrets Manager ソースの IAM ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForSecretsManagerSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-secrets-manager-role" } ] }
例 CloudWatch Logs ソースの IAM ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForCloudWatchLogsSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-cloudwatch-logs-role"" } ] }

パイプラインルールのアクセス許可

作成/更新操作 (logs:PutPipelineRule) および削除操作 (logs:DeletePipelineRule) に cloudwatch_logs ソースを使用する場合、ロールにはそれらの操作を実行する権限も必要です。

例 CloudWatch Logs パイプラインルールの IAM ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PipelineRuleForCloudWatchLogs", "Effect": "Allow", "Action": [ "logs:PutPipelineRule", "logs:DeletePipelineRule" ], "Resource": "*" } ] }

条件キーによるスコープの縮小

テレメトリパイプラインに限定するようにアクセス許可ポリシーの範囲を絞り込むには、次の例に示すように条件キーを指定します。

例 S3 ソースの IAM ポリシー (基本)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForS3Source", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-s3-source-role" } ] }
例 S3 ソースの IAM ポリシー (条件キーでスコープダウン)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForS3Source", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-s3-source-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "telemetry-pipelines.observabilityadmin.amazonaws.com" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }
例 Secrets Manager ソースの IAM ポリシー (基本)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForSecretsManagerSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-secrets-manager-role" } ] }
例 Secrets Manager ソースの IAM ポリシー (条件キーでスコープダウン)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForSecretsManagerSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-secrets-manager-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "telemetry-pipelines.observabilityadmin.amazonaws.com" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }
例 CloudWatch Logs ソースの IAM ポリシー (条件キーでスコープダウン)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PassRoleForCloudWatchLogsSource", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/your-cloudwatch-logs-role", "Condition": { "StringEquals": { "iam:PassedToService": [ "logs.amazonaws.com" ], "iam:AssociatedResourceARN": [ "arn:aws:observabilityadmin:your-region:your-account-id:telemetry-pipeline/*" ] } } } ] }

ソース固有の IAM ポリシー

異なるソースタイプには、それぞれのデータソースにアクセスするための特定の IAM アクセス許可が必要です。

CloudWatch Logs ソース

CloudWatch Logs ソースの場合、パイプライン設定で指定した IAM ロールには、logs.amazonaws.com との信頼関係が必要です。

例 CloudWatch Logs ソースの IAM ロール信頼ポリシー (基本)
{ "Version": "2012-10-17", "Statement": [ { ""Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

S3 ソース

S3 ソースの場合、ユーザーは S3 オブジェクトと SQS キューへのアクセス権を持つ IAM ロールを提供する必要があります。

例 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", "Condition": { "Comment": "Only required if S3 buckets and/or SQS queue uses KMS encryption" } } ] }

AWS Secrets Manager を使用するソース

AWS Secrets Manager (Microsoft Office 365、Microsoft Entra ID、Palo Alto NGFW) を参照するソースの場合、ユーザーは Secrets Manager へのアクセス権を持つ IAM ロールを提供する必要があります。

例 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", "Condition": { "Comment": "Only required if Secrets Manager uses KMS encryption" } } ] }

信頼関係

パイプライン設定で指定した IAM ロールには、CloudWatch パイプラインのサービスプリンシパルとの信頼関係が必要です。

パイプラインロールの信頼ポリシー

すべてのパイプラインロールは、telemetry-pipelines.observabilityadmin.amazonaws.com サービスプリンシパルを信頼する必要があります。

例パイプラインロールの信頼ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "telemetry-pipelines.observabilityadmin.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

リソースポリシー

cloudwatch_logs ソースを使用するパイプラインを除き、ロググループに書き込むパイプラインには CloudWatch Logs リソースポリシーが必要です。

CloudWatch Logs リソースポリシー

CreateTelemetryPipeline API を呼び出した後、パイプライン ARN を受け取ります。ソースが cloudwatch_logs ではないパイプラインの場合、ユーザーは 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 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 '{ "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" } } } ] }'

次のプレースホルダーを置き換えます。

  • your-region – AWS リージョン (例: us-east-1)

  • your-account-id – 12 桁の AWS アカウント ID

  • your-log-group-name – CloudWatch Logs ロググループ名

  • your-pipeline-id – テレメトリパイプライン ID

リソースポリシーが既に存在する場合は、新しいステートメントとマージします。

  1. 既存のポリシーを取得します。

    aws logs describe-resource-policies --resource-arn arn:aws:logs:your-region:your-account-id:log-group:your-log-group-name:*
  2. existing-policy.json を開き、新しいステートメントを既存の 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:*