CloudWatch Logs リソースへのアクセス許可の管理の概要 - Amazon CloudWatch Logs

CloudWatch Logs リソースへのアクセス許可の管理の概要

すべての AWS リソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、アクセス権限のポリシーによって管理されます。アカウント管理者は、アクセス権限ポリシーを IAM アイデンティティ (ユーザー、グループ、ロール) にアタッチできます。一部のサービス (AWS Lambda など) でもリソースにアクセス権限ポリシーをアタッチできます。

注記

アカウント管理者 (または管理者 IAM ユーザー) は、管理者権限を持つユーザーです。詳細については、『IAM ユーザーガイド』の「IAM のベストプラクティス」を参照してください。

アクセス権限を付与する場合、アクセス権限を取得するユーザー、取得するアクセス権限の対象となるリソース、およびそれらのリソースに対して許可される特定のアクションを決定します。

CloudWatch Logs リソースおよびオペレーション

CloudWatch Logs では、プライマリリソースはロググループ、ログストリーム、送信先です。CloudWatch Logs はサブリソース (プライマリリソースと使用する他のリソース) をサポートしていません。

これらのリソースとサブリソースには、次の表に示すとおり、一意の Amazon リソースネーム (ARN) が関連付けられています。

リソースタイプ ARN 形式

ロググループ

arn:aws:logs:region:account-id:log-group:log_group_name

ログストリーム

arn:aws:logs:region:account-id:log-group:log_group_name:log-stream:log-stream-name

送信先

arn:aws:logs:region:account-id:destination:destination_name

ARN の詳細については、IAM ユーザーガイド の「ARN」を参照してください。CloudWatch Logs ARN については、『アマゾン ウェブ サービス全般のリファレンス』の「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してくださいCloudWatch Logs を対象とするポリシーの例については、「CloudWatch Logs でアイデンティティベースのポリシー (IAM ポリシー) を使用する」を参照してください。

CloudWatch Logs には、CloudWatch Logs リソースを操作するための一連のオペレーションが用意されています。使用可能なオペレーションのリストについては、「CloudWatch Logs の権限リファレンス」を参照してください。

リソース所有権について

AWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエンティティ (ルートアカウント、IAM ユーザー、または IAM ロール) の AWS アカウントです。以下の例では、このしくみを示しています。

  • AWS アカウントの root アカウントの認証情報を使用してロググループを作成する場合、AWS アカウントは CloudWatch Logs リソースの所有者です。

  • AWS アカウントに IAM ユーザーを作成し、そのユーザーに CloudWatch Logs リソースを作成するアクセス権限を付与する場合、そのユーザーは CloudWatch Logs リソースを作成できます。ただし、ユーザーが属する AWS アカウントは CloudWatch Logs リソースを所有しているとします。

  • CloudWatch Logs リソースを作成するためのアクセス許可を持つ AWS アカウントに IAM ロールを作成する場合は、ロールを引き受けることのできるいずれのユーザーも CloudWatch Logs リソースを作成できます。ロールが属する AWS アカウントは CloudWatch Logs リソースを所有しているとします。

リソースへのアクセスの管理

アクセスポリシーでは、誰が何にアクセスできるかを記述します。以下のセクションで、アクセス権限のポリシーを作成するために使用可能なオプションについて説明します。

注記

このセクションでは、CloudWatch Logs のコンテキストでの IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメントについては、『IAM ユーザーガイド』の「IAM とは」を参照してくださいIAM ポリシー構文の詳細および説明については、『IAM ユーザーガイド』の「IAM ポリシーリファレンス」を参照してください。

IAM アイデンティティにアタッチされたポリシーはアイデンティティベースのポリシー (IAM ポリシー) と呼ばれ、リソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれます。CloudWatch Logs では、アイデンティティベースのポリシーと、送信先のリソースベースのポリシー (クロスアカウントサブスクリプションを有効にするために使用されます) がサポートされています。詳細については、「クロスアカウントのログデータをサブスクリプションと共有する」を参照してください。

アイデンティティベースのポリシー (IAM ポリシー)

ポリシーを IAM アイデンティティにアタッチできます。たとえば、次の操作を実行できます。

  • アカウントのユーザーまたはグループにアクセス権限ポリシーをアタッチする – CloudWatch Logs コンソールのログを表示するアクセス権限を付与するために、ユーザー、またはユーザーが所属するグループにアクセス許可のポリシーをアタッチできます。

  • アクセス権限ポリシーをロールにアタッチする (クロスアカウントのアクセス権限を付与する) – アイデンティティベースのアクセス権限ポリシーを IAM ロールにアタッチして、クロスアカウントのアクセス権限を付与することができます。たとえば、アカウント A の管理者は、次のように他のまたは AWS にクロスアカウントのアクセス権限を別の AWS アカウント (アカウント B) または AWS サービスに付与するロールを作成することができます。

    1. アカウント A の管理者は、IAM ロールを作成して、アカウント A のリソースに権限を付与するロールに権限ポリシーをアタッチします。

    2. アカウント A の管理者は、アカウント B をそのロールを引き受けるプリンシパルとして識別するロールに、信頼ポリシーをアタッチします。

    3. アカウント B の管理者は、アカウント B のユーザーにロールを引き受ける権限を委任できるようになります。これにより、アカウント B のユーザーにアカウント A のリソースの作成とアクセスが許可されます。AWS サービスのアクセス権限を付与してロールを引き受けさせたい場合は、信頼ポリシー内のプリンシパルも、AWS サービスのプリンシパルとなることができます。

    IAM を使用したアクセス許可の委任の詳細については、『IAM ユーザーガイド』の「アクセス管理」を参照してください。

us-east-1 のすべてのリソースのlogs:PutLogEventslogs:CreateLogGrouplogs:CreateLogStream アクションのアクセス権限を付与するポリシーの例を次に示します。ロググループの場合、一部の API アクションについて、CloudWatch Logs はリソース ARN (リソースレベルのアクセス許可とも呼ばれる) を使用した特定のリソースの識別をサポートします。すべてのロググループを含める場合、ワイルドカード文字 (*) を指定する必要があります。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Action":[ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource":"arn:aws:logs:us-east-1:*:*" } ] }

CloudWatch Logs でアイデンティティベースのポリシーを使用する場合の詳細については、「CloudWatch Logs でアイデンティティベースのポリシー (IAM ポリシー) を使用する」を参照してください。ユーザー、グループ、ロール、アクセス権限の詳細については、IAM ユーザーガイド の「アイデンティティ (ユーザー、グループ、ロール)」を参照してください。

リソースベースのポリシー

CloudWatch Logs は、クロスアカウントのサブスクリプションを有効にするために使用する、送信先のリソースベースのポリシーをサポートします。詳細については、「送信先を作成する」を参照してください。PutDestination API を使用して送信先を作成でき、PutDestination API を使用して送信先にリソースポリシーを追加できます。次の例では、アカウント ID 111122223333 の他の AWS アカウントが、送信先 arn:aws:logs:us-east-1:123456789012:destination:testDestination にロググループをサブスクライブできるようにします。

{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111122223333" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:us-east-1:123456789012:destination:testDestination" } ] }

ポリシー要素の指定 : アクション、効果、プリンシパル

サービスは、CloudWatch Logs リソースごとに一連の API オペレーションを定義します。こうした API オペレーションへのアクセス権限を付与するために、CloudWatch Logs は一連のアクションをポリシーに定義します。一部の API オペレーションは、API オペレーションを実行するために複数のアクションに対するアクセス許可を要求できます。リソースおよび API オペレーションに関する詳細については、「CloudWatch Logs リソースおよびオペレーション」および「CloudWatch Logs の権限リファレンス」を参照してください。

以下は、基本的なポリシーの要素です。

  • リソース – Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。詳細については、「CloudWatch Logs リソースおよびオペレーション」を参照してください。

  • アクション – アクションのキーワードを使用して、許可または拒否するリソースオペレーションを識別します。たとえば、logs.DescribeLogGroups 権限は、DescribeLogGroups オペレーションの実行をユーザーに許可します。

  • 効果 – ユーザーが特定のアクションをリクエストする際の効果 (許可または拒否) を指定します。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセスが許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。

  • プリンシパル – アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、権限 (リソースベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。CloudWatch Logs では、送信先のリソースベースのポリシーはサポートしています。

IAM ポリシーの構文と説明についての詳細については、『IAM ユーザーガイド』の「AWS IAM ポリシーのリファレンス」を参照してください。

すべての CloudWatch Logs API アクションとそれらが適用されるリソースの表については、「CloudWatch Logs の権限リファレンス」を参照してください。

ポリシーでの条件の指定

アクセス権限を付与するとき、アクセスポリシー言語を使用して、ポリシーが有効になる必要がある条件を指定できます。たとえば、特定の日付の後にのみ適用されるポリシーが必要になる場合があります。ポリシー言語での条件の指定の詳細については、IAM ユーザーガイド の「条件」を参照してください。

条件を表すには、あらかじめ定義された条件キーを使用します。各 AWS サービスでサポートされるコンテキストキーと AWS 全体のポリシーキーのリストについては、IAM ユーザーガイド の「AWS のサービスアクションと条件コンテキストキー」および「グローバルキーと IAM 条件コンテキストキー」を参照してください。