AWS Audit Manager のアイデンティティベースのポリシーの例
デフォルトでは、ユーザーとロールにはAudit Manager リソースを作成または変更するための許可はありません。また、AWS Management Console、AWS Command Line Interface (AWS CLI)、または AWS API を使用してタスクを実行することもできません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。その後、管理者はロールに IAM ポリシーを追加し、ユーザーはロールを引き受けることができます。
これらのサンプルの JSON ポリシードキュメントを使用して、IAM アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーを作成する (コンソール)」を参照してください。
AWS Audit Manager が定義するアクションとリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、「サービス認証リファレンス」の「Actions, resources, and condition keys for AWS Audit Manager」を参照してください。
目次
ポリシーのベストプラクティス
ID ベースのポリシーには、アカウント内で誰かがAudit Managerのリソースを作成、アクセス、または削除できるどうかが定められています。これらのアクションを実行すると、AWS アカウント に料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
-
AWS マネージドポリシーを使用して開始し、最小特権の許可に移行する – ユーザーとワークロードへの許可の付与を開始するには、多くの一般的なユースケースのために許可を付与する AWS マネージドポリシーを使用します。これらは AWS アカウントで使用できます。ユースケースに応じた AWS カスタマー管理ポリシーを定義することで、許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWSマネージドポリシー」または「ジョブ機能の AWS マネージドポリシー」を参照してください。
-
最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、IAM ユーザーガイドのIAM でのポリシーとアクセス許可を参照してください。
-
IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。また、AWS CloudFormation などの特定の AWS のサービス を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、「IAM ユーザーガイド」の [IAM JSON policy elements: Condition] (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 でのセキュリティのベストプラクティスを参照してください。
Audit Managerを有効にするために必要な最小限の許可を与える
この例は、管理者ロールのないアカウントがAWS Audit Managerを有効にできるようにする方法を示しています。
注記
ここでは、Audit Manager を有効にするために必要な最小限の許可を付与する基本的なポリシーを提供します。次のポリシーのすべての権限が必要です。このポリシーの一部を省略すると、Audit Managerを有効にすることができなくなります。
特定のニーズを満たせるよう、時間を設けて許可をカスタマイズすることをお勧めします。サポートが必要な場合は、管理者または AWS Support
Audit Manager を使用するために必要な最小限のアクセス権を付与するには、次の許可を使用します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "auditmanager:*", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "auditmanager.amazonaws.com" } } }, { "Sid": "CreateEventsAccess", "Effect": "Allow", "Action": [ "events:PutRule" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "events:source": [ "aws.securityhub" ] } } }, { "Sid": "EventsAccess", "Effect": "Allow", "Action": [ "events:PutTargets" ], "Resource": "arn:aws:events:*:*:rule/AuditManagerSecurityHubFindingsReceiver" }, { "Effect": "Allow", "Action": "kms:ListAliases", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "auditmanager.amazonaws.com" } } } ] }
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソール許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。
AWS Audit Manager への完全な管理者アクセス権を許可する
次のポリシーの例は、AWS Audit Manager への完全な管理者アクセス権を付与します。
例1、(マネージドポリシーAWSAuditManagerAdministratorAccess
)
AWSAuditManagerAdministratorAccess ポリシーには、Audit Manager を有効または無効にする機能、Audit Manager の設定を変更する機能、および評価、フレームワーク、コントロール、評価レポートなどの Audit Manager のすべてのリソースを管理する機能が含まれます。
例2 (評価レポートの宛先の許可)
このポリシーは、特定の S3 バケットにアクセスし、そのバケットにファイルを追加したり削除したりする権限を付与します。これにより、指定したバケットを Audit Manager の評価レポートの送信先として使用できます。
placeholder text
を独自の情報に置き換えます。評価レポートの送信先として使用する S3 バケットと、評価レポートの暗号化に使用するKMSキーを含める必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetBucketLocation", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" } ] }, { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2
:111122223333
:key/1234abcd-12ab-34cd-56ef-1234567890ab
" } ] }
例 3 (エクスポート先のアクセス許可)
次のポリシーでは、CloudTrail に証拠ファインダーのクエリ結果を指定された S3 バケットに配信することを許可します。セキュリティのベストプラクティスとして、IAM グローバル条件キー aws:SourceArn
は、CloudTrail がイベントデータストアに対してのみ S3 バケットに書き込めるようにするのに役立ちます。
プレースホルダーテキスト
を以下のように自分の情報に置き換えます。
-
amzn-s3-demo-destination-bucket
を、エクスポート先として使用する S3 バケットに置き換えます。 -
myQueryRunningRegion
を、ご使用の設定に適したAWS リージョンに置き換えます。 -
MmyAccountIDを
CloudTrail に使用されている AWS アカウント ID に置き換えます。これは、S3 バケットの AWS アカウント ID と同じではない可能性があります。これが組織のイベントデータストアである場合は、管理アカウントの AWS アカウント を使用する必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "s3:PutObject*", "s3:Abort*" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
", "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ], "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudtrail:myQueryRunningRegion
:myAccountID
:eventdatastore/*" } } }, { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket
", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudtrail:myQueryRunningRegion
:myAccountID
:eventdatastore/*" } } }, { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:Decrypt*", "kms:GenerateDataKey*" ], "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:Decrypt*", "kms:GenerateDataKey*" ], "Resource": "*" } ] }
例 4 (証拠ファインダーを有効にする許可)
証拠ファインダー機能を有効にして使用するには、以下の許可ポリシーが必要です。このポリシー ステートメントにより、Audit Manager が CloudTrail Lake イベント データ ストアを作成し、検索クエリを実行できるようになります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageCloudTrailLakeQueryAccess", "Effect": "Allow", "Action": [ "cloudtrail:StartQuery", "cloudtrail:DescribeQuery", "cloudtrail:GetQueryResults", "cloudtrail:CancelQuery" ], "Resource": "arn:aws:cloudtrail:*:*:eventdatastore/*" }, { "Sid": "ManageCloudTrailLakeAccess", "Effect": "Allow", "Action": [ "cloudtrail:CreateEventDataStore" ], "Resource": "arn:aws:cloudtrail:*:*:eventdatastore/*" } ] }
例 5 (証拠ファインダーを無効にする許可)
このポリシー例は、Audit Manager の証拠ファインダー機能を無効にする権限を付与します。これには、この機能を最初に有効にしたときに作成されたイベントデータストアの削除のが含まれます。
このポリシーを使用する前に、placeholder text
を独自の情報に置き換えます。証拠ファインダーを有効にしたときに作成されたイベント データ ストアの UUID を指定する必要があります。イベントデータストアの ARN は、Audit Manager の設定から取得できます。詳細については、「AWS Audit Manager API リファレンス」の「GetProducts」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudtrail:DeleteEventDataStore", "cloudtrail:UpdateEventDataStore" ], "Resource": "
arn:aws:cloudtrail:::event-data-store-UUID
" } ] }
ユーザーにはAWS Audit Managerへの管理アクセスを許可します
この例は、管理者以外の AWS Audit Manager への管理アクセスを許可する方法を示しています。
このポリシーは、すべての Audit Manager のリソース (評価、フレームワーク、およびコントロール) を管理できるようにしますが、Audit Manager を有効または無効にしたり、Audit Manager の設定を変更したりできるようにするものではありません。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AuditManagerAccess", "Effect": "Allow", "Action": [ "auditmanager:AssociateAssessmentReportEvidenceFolder", "auditmanager:BatchAssociateAssessmentReportEvidence", "auditmanager:BatchCreateDelegationByAssessment", "auditmanager:BatchDeleteDelegationByAssessment", "auditmanager:BatchDisassociateAssessmentReportEvidence", "auditmanager:BatchImportEvidenceToAssessmentControl", "auditmanager:CreateAssessment", "auditmanager:CreateAssessmentFramework", "auditmanager:CreateAssessmentReport", "auditmanager:CreateControl", "auditmanager:DeleteControl", "auditmanager:DeleteAssessment", "auditmanager:DeleteAssessmentFramework", "auditmanager:DeleteAssessmentFrameworkShare", "auditmanager:DeleteAssessmentReport", "auditmanager:DisassociateAssessmentReportEvidenceFolder", "auditmanager:GetAccountStatus", "auditmanager:GetAssessment", "auditmanager:GetAssessmentFramework", "auditmanager:GetControl", "auditmanager:GetServicesInScope", "auditmanager:GetSettings", "auditmanager:GetAssessmentReportUrl", "auditmanager:GetChangeLogs", "auditmanager:GetDelegations", "auditmanager:GetEvidence", "auditmanager:GetEvidenceByEvidenceFolder", "auditmanager:GetEvidenceFileUploadUrl", "auditmanager:GetEvidenceFolder", "auditmanager:GetEvidenceFoldersByAssessment", "auditmanager:GetEvidenceFoldersByAssessmentControl", "auditmanager:GetInsights", "auditmanager:GetInsightsByAssessment", "auditmanager:GetOrganizationAdminAccount", "auditmanager:ListAssessments", "auditmanager:ListAssessmentReports", "auditmanager:ListControls", "auditmanager:ListKeywordsForDataSource", "auditmanager:ListNotifications", "auditmanager:ListAssessmentControlInsightsByControlDomain", "auditmanager:ListAssessmentFrameworks", "auditmanager:ListAssessmentFrameworkShareRequests", "auditmanager:ListControlDomainInsights", "auditmanager:ListControlDomainInsightsByAssessment", "auditmanager:ListControlInsightsByControlDomain", "auditmanager:ListTagsForResource", "auditmanager:StartAssessmentFrameworkShare", "auditmanager:TagResource", "auditmanager:UntagResource", "auditmanager:UpdateControl", "auditmanager:UpdateAssessment", "auditmanager:UpdateAssessmentControl", "auditmanager:UpdateAssessmentControlSetStatus", "auditmanager:UpdateAssessmentFramework", "auditmanager:UpdateAssessmentFrameworkShare", "auditmanager:UpdateAssessmentStatus", "auditmanager:ValidateAssessmentReportIntegrity" ], "Resource": "*" }, { "Sid": "ControlCatalogAccess", "Effect": "Allow", "Action": [ "controlcatalog:ListCommonControls", "controlcatalog:ListDomains", "controlcatalog:ListObjectives" ], "Resource": "*" }, { "Sid": "OrganizationsAccess", "Effect": "Allow", "Action": [ "organizations:ListAccountsForParent", "organizations:ListAccounts", "organizations:DescribeOrganization", "organizations:DescribeOrganizationalUnit", "organizations:DescribeAccount", "organizations:ListParents", "organizations:ListChildren" ], "Resource": "*" }, { "Sid": "IAMAccess", "Effect": "Allow", "Action": [ "iam:GetUser", "iam:ListUsers", "iam:ListRoles" ], "Resource": "*" }, { "Sid": "S3Access", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Sid": "KmsAccess", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }, { "Sid": "SNSAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }, { "Sid": "TagAccess", "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": "*" } ] }
AWS Audit Managerの読み取り専用アクセスをユーザーに許可する
このポリシーは、評価、フレームワーク、コントロールなどの AWS Audit Manager リソースへの読み取り専用アクセス権を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AuditManagerAccess", "Effect": "Allow", "Action": [ "auditmanager:Get*", "auditmanager:List*" ], "Resource": "*" } ] }
自分の権限の表示をユーザーに許可する
この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を 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": "*" } ] }
AWS Audit Manager が Amazon SNS トピックに通知を送信することを許可する
このポリシーは、Audit Managerに既存の Amazon SNS トピックに通知を送信するための許可を付与します。
次のポリシーでは、許可を取得するプリンシパルは Audit Managerサービス プリンシパル auditmanager.amazonaws.com
です。ポリシーステートメントのプリンシパルが AWS のサービスプリンシパルになる場合は、aws:SourceArn
またはポリシーのaws:SourceAccount
グローバル条件キーの使用を強くお勧めします。これらのグローバル条件コンテキストキーを使用すると、混乱した代理シナリオを防ぐことができます。
例 1(SNSトピックへの許可)
このポリシーステートメントでは、指定したSNSトピックにイベントを発行することをAudit Managerに許可します。指定したSNSトピックに発行するリクエストは、ポリシー条件を満たす必要があります。
このポリシーを使用する前に、placeholder text
を独自の情報に置き換えます。以下の情報を記録します。
-
このポリシーで
aws:SourceArn
条件キーを使用する場合、値は通知の送信元の Audit Manager リソースの ARNにする必要があります。以下の例では、aws:SourceArn
リソース ID にワイルドカード (*
) を使用しています。これにより、Audit Manager からのすべてのリクエストが、すべてのAudit Manager リソースで許可されます。aws:SourceArn
グローバル条件キーには、StringLike
またはArnLike
の条件演算子を使用できます。ベストプラクティスとして、ArnLike
を使用することをお勧めします。 -
aws:SourceAccount
条件キーを使用する場合は、StringEquals
またはStringLike
の条件演算子を使用できます。ベストプラクティスとして、StringEquals
を使用して最小特権を実装することをお勧めします。 -
aws:SourceAccount
とaws:SourceArn
の両方を使用する場合、アカウント値は同じアカウントIDを示す必要があります。
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowAuditManagerToUseSNSTopic", "Effect": "Allow", "Principal": { "Service": "auditmanager.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:
region
:accountID
:topicName
", "Condition": { "StringEquals": { "aws:SourceAccount": "accountID
" }, "ArnLike": { "aws:SourceArn": "arn:aws:auditmanager:region
:accountID
:*
" } } } }
次の代替例では、StringLike
条件演算子とともに aws:SourceArn
条件キーのみを使用します。
"Condition": { "StringLike": { "aws:SourceArn": "arn:aws:auditmanager:
region
:accountID
:*" } }
次の代替例では、StringLike
条件演算子とともに aws:SourceAccount
条件キーのみを使用します。
"Condition": { "StringLike": { "aws:SourceAccount": "
accountID
" } }
例 2 (SNS トピックに添付されている KMS キーの許可)
このポリシーステートメントでは、Audit ManagerはKMSキーを使用して、証跡の暗号化を利用するデータキーを生成できます。指定されたオペレーションの KMS キーを使用するリクエストでは、ポリシーの条件が満たされている必要があります。
このポリシーを使用する前に、placeholder text
を独自の情報に置き換えます。以下の情報を記録します。
-
このポリシーで
aws:SourceArn
条件キーを使用する場合、値は暗号化されているリソースのARNにする必要があります。例えば、この場合はアカウントの SNS トピックです。値をARNまたはワイルドカード文字(*
)を使用したARNパターンに設定します。StringLike
またはArnLike
の条件演算子をaws:SourceArn
条件キーとともに使用できます。ベストプラクティスとして、ArnLike
を使用することをお勧めします。 -
aws:SourceAccount
条件キーを使用する場合は、StringEquals
またはStringLike
の条件演算子を使用できます。ベストプラクティスとして、StringEquals
を使用して最小特権を実装することをお勧めします。SNS トピックのARNが不明の場合はaws:SourceAccount
を使用できます。 -
aws:SourceAccount
とaws:SourceArn
の両方を使用する場合、アカウント値は同じアカウントIDを示す必要があります。
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowAuditManagerToUseKMSKey", "Effect": "Allow", "Principal": { "Service": "auditmanager.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
region
:accountID
:key/*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountID
" } "ArnLike": { "aws:SourceArn": "arn:aws:sns:region
:accountID
:topicName
" } } } ] }
次の代替例では、StringLike
条件演算子とともに aws:SourceArn
条件キーのみを使用します。
"Condition": { "StringLike": { "aws:SourceArn": "arn:aws:sns:
region
:accountID
:topicName" } }
次の代替例では、StringLike
条件演算子とともに aws:SourceAccount
条件キーのみを使用します。
"Condition": { "StringLike": { "aws:SourceAccount": "
accountID
" } }
ユーザーが証拠ファインダーで検索クエリを実行できるようにします
次のポリシーは、CloudTrail Lake イベント データ ストアでクエリを実行する許可を付与します。このアクセス許可ポリシーは、証拠ファインダー機能を使用する場合に必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageCloudTrailLakeQueryAccess", "Effect": "Allow", "Action": [ "cloudtrail:StartQuery", "cloudtrail:DescribeQuery", "cloudtrail:GetQueryResults", "cloudtrail:CancelQuery" ], "Resource": "*" } ] }