AWS CloudTrail のアイデンティティベースのポリシーの例
デフォルトでは、ユーザーおよびロールには、CloudTrail リソースを作成または変更するアクセス許可はありません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。
これらサンプルの JSON ポリシードキュメントを使用して、IAM アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーを作成する (コンソール)」を参照してください。
CloudTrail が定義するアクションとリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、「サービス認証リファレンス」の「Actions, Resources, and Condition Keys for AWS CloudTrail」を参照してください。
トピック
ポリシーに関するベストプラクティス
ID ベースのポリシーは、アカウント内で、CloudTrail リソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションでは、AWS アカウントに費用が発生する場合があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
-
AWS マネージドポリシーを使用して開始し、最小特権の許可に移行する – ユーザーとワークロードへの許可の付与を開始するには、多くの一般的なユースケースのために許可を付与する AWS マネージドポリシーを使用します。これらは AWS アカウントで使用できます。ユースケースに固有の AWS カスタマー管理ポリシーを定義して、アクセス許可を絞り込むことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」または「ジョブ機能の AWS マネージドポリシー」を参照してください。
-
最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、「IAM ユーザーガイド」の「IAM でのポリシーとアクセス許可」を参照してください。
-
IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。また、CloudFormation などの特定の AWS のサービス を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素:条件」を参照してください。
-
IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer でポリシーを検証する」を参照してください。
-
多要素認証 (MFA) を要求する – AWS アカウントで IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために MFA をオンにします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA を使用した安全な API アクセス」を参照してください。
IAM でのベストプラクティスの詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。
CloudTrail には、ポリシーステートメントの Condition 要素で使用できるサービス固有のコンテキストキーはありません。
例: 指定した証跡の許可および拒否アクション
次の例では、ポリシーを持つユーザーが証跡のステータスと設定を表示し、My-First-Trail という名前の証跡のログ記録を開始および停止できるようにするポリシーを示します。この証跡は、米国東部 (オハイオ) リージョン (証跡自身のホームリージョン) で、ID が 123456789012 である AWS アカウント に作成されました。
以下の例は、My-First-Trail という名前でないトレイルについて CloudTrail アクションを明示的に拒否するポリシーを示しています。
例: 特定の証跡に対するアクションのポリシーの作成と適用
アクセス許可とポリシーを使用して、ユーザーが CloudTrail 証跡に対して特定のアクションを実行できるかどうかを制御できます。
たとえば、社内のデベロッパーグループのユーザーが、特定の証跡のログ記録を開始または停止しないようにしようとする場合です。ただし、証跡でDescribeTrailsおよびGetTrailStatusアクションを実行する権限を付与しようと思う場合もあります。また、デベロッパーグループのユーザー自らが管理する証跡では、StartLogging アクションまたは StopLogging アクションを実行する必要があります。
2 つのポリシーステートメントを作成し、それらを IAM に作成するデベロッパーグループにアタッチすることができます。IAM のグループの詳細については、IAM ユーザーガイドの「IAM グループ」を参照してください。
最初のポリシーでは、指定する証跡 ARN の StartLogging アクションと StopLogging アクションを拒否します。次の例で、証跡 ARN は arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail です。
2 番目のポリシーでは、すべての CloudTrail リソースに対する DescribeTrails アクションと GetTrailStatus アクションを許可します。
デベロッパーグループのユーザーが、最初のポリシーに指定された証跡に対してログ記録を開始または終了しようとした場合、そのユーザーはアクセス拒否の例外を受け取ります。デベロッパーグループのユーザーは、自らが作成して管理する証跡のログ記録を開始および停止することはできます。
次の例は、devgroup という名前の AWS CLI プロファイルで構成されたデベロッパーグループを示します。最初に、devgroup のユーザーが describe-trails コマンドを実行します。
$ aws --profile devgroup cloudtrail describe-trails
コマンドは以下の出力で正常に完了しました。
{ "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Default", "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail", "IsMultiRegionTrail": false, "S3BucketName": "amzn-s3-demo-bucket", "HomeRegion": "us-east-2" } ] }
次に、このユーザーは、最初のポリシーに指定された証跡に対する get-trail-status コマンドを実行します。
$ aws --profile devgroup cloudtrail get-trail-status --name Example-Trail
コマンドは以下の出力で正常に完了しました。
{ "LatestDeliveryTime": 1449517556.256, "LatestDeliveryAttemptTime": "2015-12-07T19:45:56Z", "LatestNotificationAttemptSucceeded": "", "LatestDeliveryAttemptSucceeded": "2015-12-07T19:45:56Z", "IsLogging": true, "TimeLoggingStarted": "2015-12-07T19:36:27Z", "StartLoggingTime": 1449516987.685, "StopLoggingTime": 1449516977.332, "LatestNotificationAttemptTime": "", "TimeLoggingStopped": "2015-12-07T19:36:17Z" }
さらに、devgroup グループのユーザーが同じ証跡に対して stop-logging コマンドを実行します。
$ aws --profile devgroup cloudtrail stop-logging --name Example-Trail
このコマンドでは次のようなアクセス拒否の例外が返されます。
A client error (AccessDeniedException) occurred when calling the StopLogging operation: Unknown
このユーザーは同じ証跡に対して start-logging コマンドを実行します。
$ aws --profile devgroup cloudtrail start-logging --name Example-Trail
再びこのコマンドでは次のようなアクセス拒否の例外が返されます。
A client error (AccessDeniedException) occurred when calling the StartLogging operation: Unknown
例: タグに基づいたイベントデータストアを作成または削除するためのアクセスの拒否
次のポリシー例では、次の条件のうち少なくとも 1 つが満たされない場合は、CreateEventDataStoreでイベントデータストアを作成する権限が拒否されます。
-
イベントデータストア自体には
stageのタグキーが適用されていません -
ステージタグの値は
alpha、beta、gamma、またはprodのいずれでもありません。
以下のポリシー例では、イベントデータストアに prod の値の stage タグがある場合、DeleteEventDataStoreのイベントデータストアを削除するアクセス許可は拒否されます。このようなポリシーで、イベントデータストアが誤って削除されないように保護することができます。
CloudTrail コンソールの使用
AWS CloudTrail コンソールにアクセスするには、最小限の許可セットが必要です。これらのアクセス許可により、AWS アカウント の CloudTrail リソースの詳細を一覧表示できます。最小限必要なアクセス許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) ではコンソールが意図したとおりに機能しません。
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソール権限を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスを許可します。
CloudTrail 管理のためのアクセス許可の付与
IAM ロール、またはユーザーが証跡、イベントデータストア、チャネルなどの CloudTrail リソースを管理できるようにするには、CloudTrail タスクに関連付けられているアクションを実行するための明示的なアクセス許可を付与する必要があります。ほとんどの場合では、事前定義されたアクセス許可を含む AWS 管理ポリシーを使用することができます。
注記
CloudTrail の管理タスクを実行するためにユーザーに付与するアクセス許可は、Amazon S3 バケットにログファイルを配信、または Amazon SNS トピックに通知を送信するために、CloudTrail に必要なアクセス許可と同じではありません。これらのアクセス許可の詳細については、「CloudTrail の Amazon S3 バケットポリシー」を参照してください。
Amazon CloudWatch Logs との統合を設定した場合、CloudTrail には Amazon CloudWatch Logs ロググループにイベントを配信するためのロールも必要です。CloudTrail が使用するロールを作成する必要があります。詳細については、「CloudTrail コンソールで Amazon CloudWatch Logs 情報を表示および設定するアクセス許可を付与する」および「CloudWatch Logs へのイベントの送信」を参照してください。
次の AWS 管理ポリシーは、CloudTrail で利用できます。
-
AWSCloudTrail_FullAccess — このポリシーは、証跡、イベントデータストア、チャネルなどの CloudTrail リソース上の CloudTrail アクションへのフルアクセスを提供します。このポリシーは、CloudTrail 証跡、イベントデータストア、およびチャネルを作成、更新、削除するために必要なアクセス許可を提供します。
また、これらのポリシーには、Amazon S3 バケット、CloudWatch Logs のロググループ、および証跡の Amazon SNS トピックを管理するためのアクセス許可も提供します。ただし、
AWSCloudTrail_FullAccess管理ポリシーは、Amazon S3 バケット、CloudWatch Logs ログのロググループ、または Amazon SNS トピックを削除するためのアクセス許可は提供していません。他の AWS のサービスの管理ポリシーについては、「AWS Managed Policy Reference Guide」を参照してください。注記
AWSCloudTrail_FullAccess ポリシーは、お客様の AWS アカウント で広く共有することを意図したものではありません。このロールを持つユーザーは、AWS アカウント で最も機密かつ重要な監査機能を無効にしたり、再設定したりすることができます。このため、このポリシーはアカウント管理者にのみ適用する必要があります。このポリシーの使用を厳重に管理および監視する必要があります。
-
AWSCloudTrail_ReadOnlyAccess — このポリシーは最近のイベントやイベント履歴を含む CloudTrail コンソールを表示する権限を付与します。また、このポリシーにより、既存の証跡、イベントデータストア、およびチャネルを表示することもできます。このポリシーが適用されているロールとユーザーはイベント履歴をダウンロードできますが、証跡、イベントデータストア、またはチャンネルを作成または更新することはできません。
アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
-
AWS IAM Identity Center のユーザーとグループ:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
IAM 内で、ID プロバイダーによって管理されているユーザー:
ID フェデレーションのロールを作成します。詳細については「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する」を参照してください。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。手順については「IAM ユーザーガイド」の「IAM ユーザーのロールの作成」を参照してください。
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。詳細については「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス権限の追加」を参照してください。
-
その他のリソース
IAM を使用してユーザーやロールなどの ID にアカウント内のリソースへのアクセスを許可する方法の詳細については、「IAM ユーザーガイド」の「IAM でセットアップする」および「AWS リソースのアクセス管理」を参照してください。
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソール許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。
ユーザーが自分の許可を表示できるようにする
この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーの作成方法を示します。このポリシーには、コンソールで、または AWS CLI か AWS API を使用してプログラム的に、このアクションを完了する権限が含まれています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
CloudTrail ユーザーにカスタムのアクセス許可を付与する
CloudTrail ポリシーによって、CloudTrail を使用して作業するユーザーにアクセス許可を付与します。ユーザーにそれぞれ異なるアクセス許可を付与する必要がある場合、CloudTrail ポリシーは IAM グループにアタッチすることも各ユーザーにアタッチすることもできます。ポリシーを編集して、特定のアクセス許可を含めたり除外したりすることができます。独自のカスタムポリシーを作成することもできます。ポリシーとは、ユーザーが実行を許可されているアクションと、ユーザーが実行を許可されているアクションの対象となるリソースを定義する JSON ドキュメントです。個別の例については、「例: 指定した証跡の許可および拒否アクション」および「例: 特定の証跡に対するアクションのポリシーの作成と適用」を参照してください。
目次
読み取り専用アクセス
次の例は、CloudTrail 証跡に対する読み取り専用アクセスを許可するポリシーです。これはマネージドポリシー AWSCloudTrail_ReadOnlyAccess に相当します。これによってユーザーに付与されるアクセス許可は証跡の情報を見るためのもので、証跡を作成または更新することはできません。
このポリシーステートメントの Effect 要素で、アクションが許可されるか拒否されるかを指定します。Action 要素には、ユーザーによる実行を許可する特定のアクションを指定します。Resource 要素には、それらのアクションをユーザーが実行する対象の AWS リソースを指定します。CloudTrail アクションへのアクセスを制御するポリシーの場合、Resource 要素には通常は * を設定します。これは "すべてのリソース" を意味するワイルドカードです。
Action 要素の値は、サービスがサポートする API に対応しています。アクションの前に cloudtrail: を付けることで、CloudTrail のアクションを指すことを示します。次の例に示すように、* ワイルドカード文字を Action 要素で使用できます。
-
"Action": ["cloudtrail:*Logging"]これは、"Logging" が末尾に付いているすべての CloudTrail アクション (
StartLogging、StopLogging) を許可します。 -
"Action": ["cloudtrail:*"]これは、すべての CloudTrail アクションを許可しますが、他の AWS サービスのアクションは許可しません。
-
"Action": ["*"]これは、すべての AWS アクションを許可します。このアクセス許可は、アカウントの AWS 管理者として行動するユーザーに適しています。
読み取り専用ポリシーでは、CreateTrail、UpdateTrail、StartLogging、StopLogging の各アクションのアクセス許可はユーザーに付与されません。このポリシーを持つユーザーは、証跡の作成、証跡の更新、ログ記録のオンとオフの切り替えを行うことはできません。CloudTrail アクションの完全なリストについては、「AWS CloudTrail API リファレンス」を参照してください。
フルアクセス
次の例に示すのは、CloudTrail へのフルアクセスを付与するポリシーです。これはマネージドポリシー AWSCloudTrail_FullAccess に相当します。これは、すべての CloudTrail アクションを実行するアクセス許可をユーザーに付与します。また、ユーザーは Amazon S3 と AWS Lambda でデータイベントを記録し、Amazon S3 バケットでファイルを管理し、CloudWatch Logs が CloudTrail ログイベントを監視する方法をモニタリングし、ユーザーが関連付けられているアカウントで Amazon SNS トピックを管理できます。
重要
AWSCloudTrail_FullAccess ポリシーまたは同等の許可は、AWS アカウント間で広く共有することを意図したものではありません。このロールまたは同等のアクセスを持つユーザーは、AWS アカウントの最も機密かつ重要な監査機能を無効にしたり、再設定したりすることができます。そのため、このポリシーはアカウント管理者にのみ適用され、このポリシーの使用は厳密に制御および監視する必要があります。
CloudTrail コンソールで AWS Config 情報を表示するアクセス許可を付与する
イベント情報は、そのイベントに関連するリソースを含めて、CloudTrail コンソールで表示することができます。これらのリソースでは、AWS Config アイコンを選択すると、そのリソースのタイムラインを AWS Config コンソールで表示できます。次のポリシーをユーザーにアタッチすると、読み取り専用の AWS Config アクセスが付与されます。このポリシーでは、AWS Config の設定を変更するアクセス許可は付与されません。
詳細については、「AWS Config で参照されたリソースの表示 」を参照してください。
CloudTrail コンソールで Amazon CloudWatch Logs 情報を表示および設定するアクセス許可を付与する
十分なアクセス許可がある場合は、CloudTrail コンソールで CloudWatch Logs へのイベントの配信を表示および設定できます。これらは、CloudTrail 管理者に付与されているものを超える可能性があるアクセス許可です。CloudTrail と CloudWatch Logs の統合を設定および管理する管理者にこのポリシーをアタッチします。このポリシーは、CloudTrail または CloudWatch Logs で直接アクセス許可を付与するのではなく、CloudTrail がイベントを CloudWatch Logs グループに正常に配信するために想定するロールを作成および設定するために必要なアクセス許可を付与します。
詳細については、「Amazon CloudWatch Logs による CloudTrail ログファイルをモニタリングする 」を参照してください。
追加情報
IAM を使用してユーザーやロールなどの ID にアカウント内のリソースへのアクセスを許可する方法の詳細については、「IAM ユーザーガイド」の「はじめに」および「AWS リソースのアクセス管理」を参照してください。