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

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

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

注記

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

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

CloudWatch Logs がリソースとオペレーションをログに記録する

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

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

リソースタイプ ARN 形式

ロググループ

次の 2 つの形式が使用されます。末尾に * が付いている 2 つ目の方は、describe-log-groups CLI コマンドと [DescribeLogGroups] API によって返される形式です。

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

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 Web Services 全般のリファレンスの「Amazon リソースネーム (ARN)」を参照してください。CloudWatch Logs を対象とするポリシーの例については、CloudWatch Logs でのアイデンティティベースのポリシー (IAM ポリシー) の使用 を参照してください。

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

リソース所有権について

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

  • AWS アカウントの ルートアカウントの認証情報を使用してロググループを作成する場合、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 はアイデンティティベースのポリシー、およびクロスアカウントのサブスクリプションを有効にするために使用する、送信先のリソースベースのポリシーをサポートします。詳細については、「クロスアカウントのログデータをサブスクリプションと共有する」を参照してください。

ロググループの許可と Contributor Insights

Contributor Insights は、ロググループのデータを分析し、コントリビューターデータを表示する時系列を作成できる CloudWatch の機能です。トップ N コントリビューター、一意のコントリビューターの合計数、およびそれらの使用状況に関するメトリクスを確認できます。詳細については、「Contributor Insights を使用した高カーディナリティデータの分析」を参照してください。

ユーザーに cloudwatch:PutInsightRulecloudwatch:GetInsightRuleReport アクセス許可を付与すると、そのユーザーは CloudWatch Logs でロググループを評価し、その結果を参照するルールを作成できます。結果には、これらのロググループのコントリビューターデータを含めることができます。これらのアクセス許可は、このデータを表示できるように設定したいユーザーのみに付与してください。

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

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

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

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

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

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

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

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

以下に、us-east-1 で、すべてのリソースの logs:PutLogEventslogs:CreateLogGroup、および logs: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 全体のポリシーキーのリストについては、「AWS のサービスのアクション、リソース、条件キー」および「AWS グローバル条件コンテキストキー」を参照してください。

注記

CloudWatch Logs は、aws:Resource/key-name または aws:TagKeys 条件キーを使用してユーザーが指定したタグをロググループに割り当てることを禁止する IAM ポリシーをサポートしていません。さらに、DescribeLogGroups 条件キーを使用して aws:ResourceTag/key-name アクションへのアクセスを制御することはできません。他の CloudWatch Logs アクションでは、aws:ResourceTag/key-name 条件キーを使用してアクセスを制御できます。リソースへのアクセスを制御するタグの使用の詳細については、タグを使用した Amazon Web Services のリソースへのアクセスの制御を参照してください。