AWS CloudTrail リソースベースのポリシーの例 - AWS CloudTrail

AWS CloudTrail リソースベースのポリシーの例

このセクションでは、CloudTrail Lake ダッシュボード、イベントデータストア、およびチャネルのリソースベースのポリシーの例を示します。

CloudTrail は、次のタイプのリソースベースのポリシーをサポートしています。

  • AWS の外部にあるイベントソースと CloudTrail Lake との統合に使用されるチャネルに関するリソースベースのポリシー。チャネルのリソースベースのポリシーでは、チャネル上で PutAuditEvents を呼び出して送信先のイベントデータストアにイベントを送信できるプリンシパルエンティティ (アカウント、ユーザー、ロール、フェデレーションユーザー) を定義します。CloudTrail Lake との統合の作成の詳細については、「AWS 外のイベントソースとの統合を作成する」を参照してください。

  • どのプリンシパルがイベントデータストアでアクションを実行できるかを制御するリソースベースのポリシー。リソースベースのポリシーを使用して、イベントデータストアへのクロスアカウントアクセスを提供できます。

  • ダッシュボードの更新スケジュールの設定時に定義した間隔で CloudTrail が CloudTrail Lake ダッシュボードを更新できるようにする、ダッシュボードのリソースベースのポリシー。詳細については、「CloudTrail コンソールを使用してカスタムダッシュボードの更新スケジュールを設定する」を参照してください。

チャネルのリソースベースのポリシーの例

チャネルのリソースベースのポリシーでは、チャネル上で PutAuditEvents を呼び出して送信先のイベントデータストアにイベントを送信できるプリンシパルエンティティ (アカウント、ユーザー、ロール、フェデレーションユーザー) を定義します。

ポリシーに必要な情報は、統合タイプによって決まります。

  • 直接統合の場合、CloudTrail ではポリシーにパートナーの AWS アカウント ID を含める必要があり、パートナーから提供された固有の外部 ID を入力する必要があります。CloudTrail コンソールを使用して統合を作成すると、CloudTrail はパートナーの AWS アカウント ID をリソースポリシーに自動的に追加します。ポリシーに必要な AWS アカウント 番号の取得方法については、パートナーのドキュメントを参照してください。

  • ソリューション統合では、少なくとも 1 つの AWS アカウント ID をプリンシパルとして指定する必要があります。また、混乱した代理問題を防ぐために、オプションの外部 ID を入力することもできます。

リソースベースのポリシーの要件は次のとおりです。

  • ポリシーには、少なくとも 1 つのステートメントを含めます。ポリシーには、最大 20 個のステートメントを記述できます。

  • 各ステートメントには、少なくとも 1 つのプリンシパルを含めます。プリンシパルは、アカウント、ユーザー、ロール、またはフェデレーションユーザーです。1 つのステートメントには、最大 50 個のプリンシパルを記述できます。

  • ポリシーで定義されているリソース ARN は、ポリシーがアタッチされているチャネル ARN と一致する必要があります。

  • ポリシーには、 1 つのアクションのみを含めます。cloudtrail-data:PutAuditEvents

所有者によるリソースへのアクセスがポリシーで拒否されていない限り、チャネル所有者はチャネルで PutAuditEvents API を呼び出すことができます。

例: プリンシパルへのチャネルアクセス権の付与

次の例では、ARN arn:aws:iam::111122223333:rootarn:aws:iam::444455556666:root、および arn:aws:iam::123456789012:root を持つプリンシパルに、ARN arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b を使用して CloudTrail チャネルの PutAuditEvents API を呼び出すアクセス許可を付与します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b" } ] }

例: 外部 ID を使用して混乱した代理問題を防止する

次の例では、外部 ID を使用して混乱した代理問題に対処し防止しています。混乱した代理問題は、アクションを実行する許可を持たないエンティティが、より特権のあるエンティティにアクションを実行するように強制できるセキュリティの問題です。

統合パートナーはポリシーで使用する外部 ID を作成します。次に、統合の作成の一環として、統合パートナーは外部 ID を提供します。値は、パスフレーズやアカウント番号など、一意であればどんな文字列でもかまいません。

この例では、ARN arn:aws:iam::111122223333:rootarn:aws:iam::444455556666:root、および arn:aws:iam::123456789012:root を持つプリンシパルに、ポリシーで定義された外部 ID 値が PutAuditEvents API の呼び出しに含まれていれば CloudTrail チャネルリソースで PutAuditEvents API を呼び出すことができるアクセス許可を付与します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b" } ] }

イベントデータストアのリソースベースのポリシーの例

リソースベースのポリシーにより、どのプリンシパルがイベントデータストアでアクションを実行できるかを制御できます。

リソースベースのポリシーを使用すると、クロスアカウントアクセスを提供して、選択したプリンシパルがイベントデータストアにクエリを実行したり、クエリを一覧表示およびキャンセルしたり、クエリ結果を表示したりするのを許可できます。

CloudTrail Lake ダッシュボードでは、リソースベースのポリシーを使用して、ダッシュボードが更新されたときに CloudTrail がイベントデータストアでクエリを実行してダッシュボードのウィジェットのデータを入力するのを許可します。CloudTrail Lake では、カスタムダッシュボードを作成するとき、または CloudTrail コンソールで Highlights ダッシュボードを有効にするときに、デフォルトのリソースベースのポリシーをイベントデータストアにアタッチできます。

イベントデータストアのリソースベースのポリシーでは、次のアクションがサポートされています。

  • cloudtrail:StartQuery

  • cloudtrail:CancelQuery

  • cloudtrail:ListQueries

  • cloudtrail:DescribeQuery

  • cloudtrail:GetQueryResults

  • cloudtrail:GenerateQuery

  • cloudtrail:GenerateQueryResultsSummary

  • cloudtrail:GetEventDataStore

イベントデータストアを作成または更新したり、CloudTrail コンソールでダッシュボードを管理したりすると、イベントデータストアにリソースベースのポリシーを追加するオプションが提供されます。put-resource-policy コマンドを実行して、リソースベースのポリシーをイベントデータストアにアタッチすることもできます。

リソースベースのポリシーは 1 つ以上のステートメントで構成されます。例えば、CloudTrail がダッシュボードのイベントデータストアをクエリできるようにするステートメントと、イベントデータストアをクエリするためのクロスアカウントアクセスを許可するステートメントを含めることができます。CloudTrail コンソールのイベントデータストアの詳細ページから、既存のイベントデータストアのリソースベースのポリシーをアップデートできます。

組織イベントデータストアの場合、CloudTrail は、委任管理者アカウントが組織イベントデータストアで実行できるアクションを一覧表示するデフォルトのリソースベースのポリシーを作成します。このポリシーのアクセス許可は、AWS Organizations の委任管理者アクセス許可から取得されます。このポリシーは、組織イベントデータストアまたは組織が変更されると自動的にアップデートされます (例えば、CloudTrail の委任管理者アカウントが登録または削除された場合)。

例: CloudTrail がクエリを実行してダッシュボードを更新できるようにする

更新中に CloudTrail Lake ダッシュボードにデータを入力するには、CloudTrail がユーザーに代わってクエリを実行できるようにする必要があります。これを行うには、ダッシュボードウィジェットに関連付けられた各イベントデータストアにリソースベースのポリシーをアタッチします。これには、CloudTrail がウィジェットのデータを入力する StartQuery オペレーションを実行できるようにするステートメントが含まれます。

ステートメントの要件を以下に示します。

  • 唯一の Principalcloudtrail.amazonaws.com です。

  • 許可されている Actioncloudtrail:StartQuery のみです。

  • Condition には、ダッシュボード ARN と AWS アカウント ID のみが含まれます。AWS:SourceArn では、ダッシュボード ARN の配列を提供できます。

次のポリシーの例には、CloudTrail が example-dashboard1 および example-dashboard2 という名前の 2 つのカスタムダッシュボード、ならびにアカウント 123456789012AWSCloudTrail-Highlights という名前の Highlights ダッシュボードのイベントデータストアでクエリを実行できるようにするステートメントが含まれています。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "cloudtrail:StartQuery" ], "Resource": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/*", "Condition": { "StringLike": { "AWS:SourceArn": [ "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard1", "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard2", "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/AWSCloudTrail-Highlights" ], "AWS:SourceAccount": "123456789012" } } } ] }

例: 他のアカウントがイベントデータストアのクエリとクエリ結果の表示を行えるようにする

リソースベースのポリシーを使用して、イベントデータストアへのクロスアカウントアクセスを提供し、他のアカウントがイベントデータストアでクエリを実行できるようにします。

次のポリシーの例には、アカウント 111122223333777777777777999999999999、および 111111111111 のルートユーザーが、アカウント ID 555555555555 が所有するイベントデータストアでクエリを実行し、クエリ結果を取得できるようにするステートメントが含まれています。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "policy1", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::777777777777:root", "arn:aws:iam::999999999999:root", "arn:aws:iam::111111111111:root" ] }, "Action": [ "cloudtrail:StartQuery", "cloudtrail:GetEventDataStore", "cloudtrail:GetQueryResults" ], "Resource": "arn:aws:cloudtrail:us-east-1:555555555555:eventdatastore/example80-699f-4045-a7d2-730dbf313ccf" } ] }

ダッシュボードのリソースベースのポリシーの例

CloudTrail Lake ダッシュボードの更新スケジュールを設定できます。これにより、CloudTrail は更新スケジュールを設定するときに定義した間隔でユーザーに代わってダッシュボードを更新できます。これを行うには、リソースベースのポリシーをダッシュボードにアタッチして、CloudTrail がダッシュボードで StartDashboardRefresh オペレーションを実行できるようにする必要があります。

リソースベースのポリシーの要件は次のとおりです。

  • 唯一の Principalcloudtrail.amazonaws.com です。

  • ポリシーで許可されている Actioncloudtrail:StartDashboardRefresh のみです。

  • Condition には、ダッシュボード ARN と AWS アカウント ID のみが含まれます。

次のポリシー例では、CloudTrail がアカウント 123456789012exampleDash という名前のダッシュボードを更新できるようにします。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "cloudtrail:StartDashboardRefresh" ], "Resource": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/exampleDash", "AWS:SourceAccount":"123456789012" } } } ] }