AWS CloudTrail
ユーザーガイド (Version 1.0)

AWS CloudTrail アイデンティティベースのポリシーの例

デフォルトでは、IAM ユーザーおよびロールには、CloudTrail リソースを作成または変更するアクセス許可がありません。また、AWS マネジメントコンソール、AWS CLI、または AWS API を使用してタスクを実行することもできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行するアクセス許可をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらのアクセス許可が必要な IAM ユーザー、グループ、またはロールにそのポリシーをアタッチします。

JSON ポリシードキュメントのこれらの例を使用して、IAM アイデンティティベースのポリシーを作成する方法については、IAM ユーザーガイド の「[JSON] タブでのポリシーの 作成」を参照してください。

ポリシーのベストプラクティス

アイデンティティベースのポリシーは非常に強力です。アカウント内で、CloudTrail リソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションを実行すると、AWS アカウントに追加料金が発生する可能性があります。アイデンティティベースのポリシーを作成または編集するときは、以下のガイドラインと推奨事項に従います。

  • AWS 管理ポリシーの使用を開始する – CloudTrail の使用をすばやく開始するには、AWS 管理ポリシーを使用して、従業員に必要なアクセス許可を付与します。これらのポリシーはアカウントですでに有効になっており、AWS によって管理および更新されています。詳細については、IAM ユーザーガイド の「AWS 管理ポリシーを使用したアクセス許可の使用開始」を参照してください 。

  • 最小権限を付与する – カスタムポリシーを作成するときは、タスクを実行するために必要なアクセス許可のみを付与します。最小限のアクセス権限から開始し、必要に応じて追加のアクセス権限を付与します。この方法は、寛容なアクセス権限で始め、後でそれらを強化しようとするよりも安全です。詳細については、IAM ユーザーガイド の「最小権限を付与する」を参照してください。

  • 機密性の高いオペレーションに MFA を有効にする – 追加セキュリティとして、機密性の高リソースまたは API オペレーションにアクセスするために IAM ユーザーに対して、多要素認証 (MFA) の使用を要求します。詳細については、IAM ユーザーガイドの「AWS のデバイスに 多要素認証 (MFA) を使用」を参照してください。

  • 追加セキュリティに対するポリシー条件を使用する – 実行可能な範囲内で、アイデンティティベースのポリシーがリソースにアクセスできる条件を定義します。たとえば、要求が発生しなければならない許容 IP アドレスの範囲を指定するための条件を記述できます。指定された日付または時間範囲内でのみリクエストを許可する条件を書くことも、SSL や MFA の使用を要求することもできます。ポリシー要素の詳細については、IAM ユーザーガイド の「IAM JSON ポリシー要素: 条件」を参照してください。

例: 指定した証跡の許可および拒否アクション

次の例では、このポリシーを持つユーザーが証跡のステータスと設定を表示し、My-First-Trail という名前の証跡のログ記録を開始および停止できるようにするポリシーを示します。この証跡は、ID 123456789012 を持つ AWS アカウントの 米国東部 (オハイオ) リージョン(そのホームリージョン) に作成されました。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:GetTrailStatus", "cloudtrail:GetEventSelectors" ], "Resource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail" ] } ] }

次の例では、My-First-Trail という名前の証跡に対して CloudTrail アクションを明示的に拒否するポリシーを示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudtrail:*" ], "NotResource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/My-First-Trail" ] } ] }

例: 特定の証跡に対するアクションのポリシーの作成と適用

アクセス許可とポリシーを使用して、ユーザーが CloudTrail 証跡に対して特定のアクションを実行できるかどうかを制御できます。

たとえば、社内の開発者グループのユーザーが、特定の証跡のログ記録を開始または停止しないようにしたいが、その証跡に対して DescribeTrails アクションと GetTrailStatus アクションを実行するアクセス許可は付与したいという場合です。また、開発者グループのユーザー自らが管理する証跡では、StartLogging アクションまたは StopLogging アクションを実行する必要があります。

2 つのポリシーステートメントを作成して、それらを IAM に作成する開発者グループにアタッチできます。IAM のグループの詳細については、IAM ユーザーガイド の 「IAM グループ」を参照してください。

最初のポリシーでは、指定する証跡 ARN の StartLogging アクションと StopLogging アクションを拒否します。次の例で、証跡 ARN は arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1446057698000", "Effect": "Deny", "Action": [ "cloudtrail:StartLogging", "cloudtrail:StopLogging" ], "Resource": [ "arn:aws:cloudtrail:us-east-2:123456789012:trail/Example-Trail" ] } ] }

2 番目のポリシーでは、すべての CloudTrail リソースに対する DescribeTrails アクションと GetTrailStatus アクションを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1446072643000", "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus" ], "Resource": [ "*" ] } ] }

開発者グループのユーザーが、最初のポリシーに指定された証跡に対してログ記録を開始または終了しようとした場合、そのユーザーはアクセス拒否の例外を受け取ります。開発者グループのユーザーは、自らが作成して管理する証跡のログ記録を開始および停止することはできます。

次の CLI の例は、開発者グループが 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": "myS3bucket ", "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

CloudTrail コンソールを使用するためのアクセス許可を付与する

CloudTrail 管理のためのアクセス許可の付与

ユーザーが CloudTrail を管理できるようにするには、CloudTrail タスクに関連付けられているアクションを実行するための明示的なアクセス許可を、IAM ユーザーに付与する必要があります。ほとんどのシナリオでは、事前定義されたアクセス許可を含む AWS 管理ポリシーを使用して、これを行うことができます。

注記

CloudTrail の管理タスクを実行するためにユーザーに付与するアクセス許可は、Amazon S3 バケットにログファイルを配信するため、または Amazon SNS トピックに通知を送信するために、CloudTrail 自体に必要なアクセス許可と同じではありません。これらのアクセス許可の詳細については、「CloudTrail の Amazon S3 バケットのポリシー」を参照してください。

Amazon CloudWatch Logs との統合を設定した場合、CloudTrail には Amazon CloudWatch Logs ロググループにイベントを配信するためのロールも必要です。これには、ロール自体と同様に、ロールを作成するための追加のアクセス許可が必要になります。詳細については、「CloudTrail コンソールでの Amazon CloudWatch Logs 情報を表示および設定する権限の付与」および「CloudWatch Logs にイベントを送信する」を参照してください。

一般的な方法としては、適切なアクセス許可を持つ IAM グループを作成し、そのグループに個々の IAM ユーザーを追加します。たとえば、IAM のアクションへのフルアクセスが必要なユーザーのための CloudTrail グループを作成し、それとは別に、証跡情報を表示するだけで作成または変更する必要のないユーザーのためのグループを作成します。

IAM アクセスのための CloudTrail グループとユーザーを作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam) を開きます。

  2. ダッシュボードから、ナビゲーションペインの [Groups]、[Create New Group] の順に選択します。

  3. 名前を入力し、[Next Step (次のステップ)] を選択します。

  4. [Attach Policy (ポリシーをアタッチする)] ページで、CloudTrail 用に次のいずれかのポリシーを探し、選択します。

    • AWSCloudTrailFullAccess。このポリシーでは、グループ内のユーザーに CloudTrail アクションへのフルアクセスが付与されます。これらのユーザーには、Amazon S3 バケット、CloudWatch Logs のロググループ、および証跡の Amazon SNS トピックを管理するアクセス許可があります。

      注記

      AWSCloudTrailFullAccess ポリシーは、お客様の AWS アカウントで広く共有することを意図したものではありません。このロールを持つユーザーは、AWS アカウントの最も機密かつ重要な監査機能を無効にしたり、再設定したりすることができます。そのため、このポリシーはアカウント管理者にのみ適用され、このポリシーの使用は厳密に制御および監視する必要があります。

    • [AWSCloudTrailReadOnlyAccess]。このポリシーにより、グループのユーザーは CloudTrail コンソールを表示し、最近のイベントやイベント履歴などを確認できます。これらのユーザーは既存の証跡とそのバケットを表示することもできます。ユーザーは、イベント履歴のファイルをダウンロードできますが、証跡を作成または更新することはできません。

    注記

    個々のアクションへのアクセス許可を付与するカスタムポリシーを作成することもできます。詳細については、「CloudTrail ユーザーにカスタムアクセス許可を付与する」を参照してください。

  5. [Next Step] を選択します。

  6. 作成するグループの情報を確認します。

    注記

    グループ名を編集することはできますが、再度ポリシーを選択する必要があります。

  7. [Create Group] を選択します。作成したグループが、グループのリストに表示されます。

  8. 作成したグループ名を選択し、[Group Actions]、[Add Users to Group] の順に選択します。

  9. [Add Users to Group] ページで、既存の IAM ユーザーを選択し、[Add Users] を選択します。IAM ユーザーがまだいない場合は、[Create New Users] を選択し、ユーザー名を入力して、[Create] を選択します。

  10. 新しいユーザーを作成した場合は、ナビゲーションペインで [Users] を選択し、ユーザーごとに以下を実行します。

    1. ユーザーを選択します。

    2. ユーザーがコンソールを使用して CloudTrail を管理する場合は、[Security Credentials] タブで [Manage Password] を選択し、ユーザーのパスワードを作成します。

    3. ユーザーが CLI または API を使用して CloudTrail を管理する場合で、アクセスキーをまだ作成していないときは、[Security Credentials] タブで [Manage Access Keys] を選択し、アクセスキーを作成します。このキーは安全な場所に保存してください。

    4. 各ユーザーに認証情報 (アクセスキーまたはパスワード) を提供します。

その他のリソース

IAM のユーザー、グループ、ポリシー、アクセス許可の作成の詳細については、IAM ユーザーガイド の「コンソールを使用して Administrators グループを作成する」および「アクセス許可とポリシー」を参照してください。

AWS CLI または AWS API のみを呼び出すユーザーには、コンソールに対する最小限のアクセス許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。

ユーザーに自分のアクセス許可の表示を許可

この例は

この例では、ユーザー ID にアタッチされたインラインおよび管理ポリシーの表示を 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 証跡に対する読み取り専用アクセスを許可するポリシーです。これは管理ポリシー [AWSCloudTrailReadOnlyAccess] に相当します。これによってユーザーに付与されるアクセス許可は証跡の情報を見るためのもので、証跡を作成または更新することはできません。また、このポリシーによって、Amazon S3 バケットのオブジェクトを読み取るアクセス許可も付与されますが、作成や削除の許可は付与されません。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketLocation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus", "cloudtrail:LookupEvents", "cloudtrail:ListPublicKeys", "cloudtrail:ListTags", "s3:ListAllMyBuckets", "kms:ListAliases", "lambda:ListFunctions" ], "Resource": "*" } ] }

このポリシーステートメントの Effect 要素で、アクションが許可されるか拒否されるかを指定します。Action 要素には、ユーザーによる実行を許可する特定のアクションを指定します。Resource 要素には、それらのアクションをユーザーが実行する対象の AWS リソースを指定します。CloudTrail アクションへのアクセスを制御するポリシーの場合、Resource 要素には通常は * を設定します。これは "すべてのリソース" を意味するワイルドカードです。

Action 要素の値は、サービスがサポートする API に対応しています。アクションの前に cloudtrail: を付けることで、CloudTrail のアクションを指すことを示します。次の例に示すように、* ワイルドカード文字を Action 要素で使用できます。

  • "Action": ["cloudtrail:*Logging"]

    これは、"Logging" が末尾に付いているすべての CloudTrail アクション (StartLoggingStopLogging) を許可します。

  • "Action": ["cloudtrail:*"]

    これは、すべての CloudTrail アクションを許可しますが、他の AWS サービスのアクションは許可しません。

  • "Action": ["*"]

    これは、すべての AWS アクションを許可します。このアクセス許可は、アカウントの AWS 管理者として行動するユーザーに適しています。

読み取り専用ポリシーでは、CreateTrailUpdateTrailStartLoggingStopLogging の各アクションのアクセス許可はユーザーに付与されません。このポリシーを持つユーザーは、証跡の作成、証跡の更新、ログ記録のオンとオフの切り替えを行うことはできません。CloudTrail アクションの完全なリストについては、「AWS CloudTrail API Reference」を参照してください。

フルアクセス

次の例に示すのは、CloudTrail へのフルアクセスを付与するポリシーです。これは管理ポリシー [AWSCloudTrailFullAccess] に相当します。これは、すべての CloudTrail アクションを実行するアクセス許可をユーザーに付与します。また、ユーザーは Amazon S3 と AWS Lambda でデータイベントを記録し、Amazon S3 バケットでファイルを管理し、CloudWatch Logs が CloudTrail ログイベントを監視する方法を管理し、ユーザーが関連付けられているアカウントで Amazon SNS トピックを管理できます。

重要

AWSCloudTrailFullAccess ポリシーまたは同等のアクセス許可は、AWS アカウント間で広く共有することを意図したものではありません。このロールまたは同等のアクセスを持つユーザーは、AWS アカウントの最も機密かつ重要な監査機能を無効にしたり、再設定したりすることができます。そのため、このポリシーはアカウント管理者にのみ適用され、このポリシーの使用は厳密に制御および監視する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:AddPermission", "sns:CreateTopic", "sns:DeleteTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:ListAllMyBuckets", "s3:PutBucketPolicy", "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation", "s3:GetBucketPolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": "cloudtrail:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:GetRolePolicy", "iam:GetUser" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "cloudtrail.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*" } ] }

CloudTrail コンソールで AWS Config 情報を表示するアクセス許可を付与する

イベント情報は、そのイベントに関連するリソースを含めて、CloudTrail コンソールで表示することができます。これらのリソースでは、AWS Config アイコンを選択すると、そのリソースのタイムラインを AWS Config コンソールで表示できます。次のポリシーをユーザーにアタッチすると、読み取り専用の AWS Config アクセスが付与されます。このポリシーでは、AWS Config の設定を変更するアクセス許可は付与されません。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "config:Get*", "config:Describe*", "config:List*" ], "Resource": "*" }] }

詳細については、「AWS Config で参照されたリソースの表示」を参照してください。

CloudTrail コンソールでの Amazon CloudWatch Logs 情報を表示および設定する権限の付与

十分なアクセス許可がある場合は、CloudTrail コンソールで CloudWatch Logs へのイベントの配信を表示および設定できます。これらは、CloudTrail 管理者に付与されているものを超える可能性があるアクセス許可です。CloudTrail と CloudWatch Logs の統合を設定および管理する管理者にこのポリシーをアタッチします。このポリシーは、CloudTrail または CloudWatch Logs で直接アクセス許可を付与するのではなく、CloudTrail がイベントを CloudWatch Logs グループに正常に配信するために想定するロールを作成および設定するために必要なアクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:CreateRole" "iam:PutRolePolicy" "iam:ListRoles" "iam:GetRolePolicy" "iam:GetUser" ], "Resource": "*" }] }

詳細については、「Amazon CloudWatch Logs を使用して CloudTrail のログファイルをモニタリングする」を参照してください。

追加情報

IAM ユーザー、グループ、ポリシー、アクセス許可の作成の詳細については、IAM ユーザーガイド の「最初の IAM ユーザーと管理者グループの作成」および「アクセス管理」を参照してください。