View a markdown version of this page

Contributor Insights ロググループアクセスの条件キー - Amazon CloudWatch

Contributor Insights ロググループアクセスの条件キー

Contributor Insights でルールを作成し、その結果を表示するには、ユーザーに cloudwatch:PutInsightRule アクセス許可が必要です。デフォルトでは、このアクセス許可を持つユーザーは、CloudWatch Logs の任意のロググループを評価するルールを作成して、その結果を確認することができます。結果には、機密情報を含む可能性がある、それらのロググループのコントリビューターデータが含まれる場合があります。

条件キーを持つ IAM ポリシーを作成することで、特定のロググループに対して Contributor Insights ルールを作成するアクセス許可をユーザーに付与しつつ、他のロググループのデータへのアクセスを制限することができます。

IAM ポリシーの Condition 要素の詳細については、「IAM JSON ポリシーの要素: 条件」を参照してください。

Contributor Insights アクセス許可モデルについて

Contributor Insights オペレーションでは cloudwatch: IAM 名前空間が使用されます。ロググループオペレーションでは logs: 名前空間が使用されます。Contributor Insights は、ロググループデータを処理するときに logs: アクセス許可を必要としたり評価したりすることはありません。

cloudwatch:PutInsightRule および cloudwatch:GetInsightRuleReport アクセス許可を持つプリンシパルは、任意のロググループに対する logs: アクセス許可がない場合でも、これらのロググループを評価し、結果を取得するルールを作成できます。

重要

集計結果には、コントリビューターキーとして使用されるログフィールドなど、機密情報が含まれている可能性があります。参照するすべてのロググループのデータにアクセスする必要があるプリンシパルにのみ cloudwatch:PutInsightRule および cloudwatch:GetInsightRuleReport アクセス許可を付与します。

クロスアカウントアクセスの場合、ソースアカウントでロググループへのアクセスを共有する AWS Organizations リンクが設定されている場合、モニタリングアカウントのプリンシパルは、ソースアカウントのロググループをターゲットとするルールを作成するために cloudwatch:PutInsightRule のみを必要とします。

Contributor Insights アクセスを特定のロググループに制限する

Contributor Insights ルールを作成する際、プリンシパルが指定できるロググループを制限するには、以下の条件キーを使用します。

  • cloudwatch:requestInsightRuleLogGroups – ルールで指定されたロググループ名と照合します

  • cloudwatch:requestInsightRuleLogGroupARNs – ルールで指定されたロググループ ARN と照合します

重要

ルールが作成されると、cloudwatch:GetInsightRuleReport アクセス許可を持つプリンシパルは、ロググループの制限に関係なく、結果を取得できます。

次のポリシーは、AllowedLogGroup という名前のロググループと、AllowedWildCard で始まる名前のロググループの Contributor Insights ルールを作成する権限を付与します。他のロググループのルールを作成する権限は付与されません。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCertainLogGroups", "Effect": "Allow", "Action": "cloudwatch:PutInsightRule", "Resource": "arn:aws:cloudwatch:*:*:insight-rule/*", "Condition": { "ForAllValues:StringLike": { "cloudwatch:requestInsightRuleLogGroups": [ "AllowedLogGroup", "AllowedWildcard*" ] } } } ] }

次のポリシーでは、デフォルトで任意のロググループのルールの作成が許可されますが、ExplicitlyDeniedLogGroup という名前のロググループのルールの作成は明確に拒否されます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowInsightRulesOnLogGroupsByDefault", "Effect": "Allow", "Action": "cloudwatch:PutInsightRule", "Resource": "arn:aws:cloudwatch:*:*:insight-rule/*" }, { "Sid": "ExplicitDenySomeLogGroups", "Effect": "Deny", "Action": "cloudwatch:PutInsightRule", "Resource": "arn:aws:cloudwatch:*:*:insight-rule/*", "Condition": { "ForAllValues:StringEqualsIgnoreCase": { "cloudwatch:requestInsightRuleLogGroups": [ "/test/alpine/ExplicitlyDeniedLogGroup" ] } } } ] }

次のポリシーでは、ARN パスに「/production/」を含むロググループをターゲットとするルールの作成が拒否されます。

{ "Version": "", "Statement": [ { "Sid": "DenyProductionLogGroupsByARN", "Effect": "Deny", "Action": "cloudwatch:PutInsightRule", "Resource": "*", "Condition": { "ForAnyValue:StringLike": { "cloudwatch:requestInsightRuleLogGroupARNs": [ "arn:aws:logs:*:*:log-group:*/production/*" ] } } } ] }
注記
  • 条件キーは、解決されたロググループではなく、ルール定義に記述されたパターン文字列と照合されます。

  • ルールでロググループが完全な ARN として指定されている場合、完全な ARN 文字列はそのプレフィックスで始まらないため、/production/* などの条件値は一致しません。ARN ベースのロググループの参照を一致させるには、*/production/* をワイルドカードプレフィックスとして使用します。

Contributor Insights のセキュリティのベストプラクティス

Contributor Insights の設定をセキュア化するには、以下のベストプラクティスに従ってください。

  • 最小特権の適用 – ロググループデータを分析する必要があるプリンシパルにのみ cloudwatch:PutInsightRulecloudwatch:GetInsightRuleReport を付与します。

  • 条件キーを使用してロググループを制限する – Contributor Insights ルールでプリンシパルが参照できるロググループを制限します。

  • 機密フィールドの保護 – CloudWatch Logs のデータ保護機能を使用し、Contributor Insights による処理の前に機密ログデータをマスクします。詳細については、「Protect sensitive log data with masking」(機密ログデータをマスキングで保護する) を参照してください。

  • コントリビューターキーの機密性を考慮する – コントリビューターキーを使用することで、ルール結果に IP アドレスやユーザー識別子などの値が漏洩する可能性があります

  • クロスアカウントアクセスの確認 – AWS Organizations リンク設定を監査して、意図したモニタリングアカウントのみがソースアカウントのロググループに対してルールを作成できることを確認します。