Amazon Pinpoint のアイデンティティベースポリシーの例 - Amazon Pinpoint

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Pinpoint のアイデンティティベースポリシーの例

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

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

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

アイデンティティベースのポリシーは、ユーザーのアカウント内で誰かが Amazon Pinpoint リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、 AWS アカウントに料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:

  • AWS 管理ポリシーを開始し、最小特権のアクセス許可に移行する – ユーザーとワークロードにアクセス許可を付与するには、多くの一般的なユースケースにアクセス許可を付与する AWS 管理ポリシーを使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義して、アクセス許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」または「ジョブ機能のAWS マネージドポリシー」を参照してください。

  • 最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、IAM ユーザーガイドIAM でのポリシーとアクセス許可を参照してください。

  • IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。条件を使用して、 などの特定の を介してサービスアクションが使用される場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます AWS CloudFormation。詳細については、「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) を要求する – で IAM ユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、セキュリティを強化するために MFA を有効にします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、IAM ユーザーガイドMFA 保護 API アクセスの設定を参照してください。

IAM でのベストプラクティスの詳細については、IAM ユーザーガイドIAM でのセキュリティのベストプラクティスを参照してください。

Amazon Pinpoint コンソールを使用する

Amazon Pinpoint コンソールにアクセスするには、許可の最小限のセットが必要です。これらのアクセス許可により、 AWS アカウント内の Amazon Pinpoint リソースの詳細を一覧表示および表示できます。最小限必要なアクセス許可よりも厳しい制限を適用するアイデンティティベースのポリシーを作成すると、そのポリシーにより、コンソールはエンティティ (ユーザーまたはロール) について意図されたとおりには機能しなくなります。これらのエンティティで Amazon Pinpoint コンソールを使用可能にするには、エンティティにポリシーをアタッチします。詳細については、『IAM ユーザーガイド』の「ユーザーへの許可の追加」を参照してください。

次のポリシー例では、特定のリージョンの Amazon Pinpoint コンソールへの読み取り専用アクセス AWS を提供します。Amazon Pinpoint コンソールが依存するその他のサービス (Amazon Simple Email Service (Amazon SES)、IAM、Amazon Kinesis など) への読み取り専用アクセスも含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UseConsole", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "arn:aws:mobiletargeting:region:accountId:*" }, { "Effect": "Allow", "Action": [ "firehose:ListDeliveryStreams", "iam:ListRoles", "kinesis:ListStreams", "s3:List*", "ses:Describe*", "ses:Get*", "ses:List*", "sns:ListTopics" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" } } } ] }

前述のポリシーの例では、region を AWS リージョンの名前に置き換え、accountIdを AWS 自分のアカウント ID に置き換えます。

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

例:単一の Amazon Pinpoint プロジェクトにアクセスする

特定のプロジェクトのみへのアクセスを付与する読み取り専用ポリシーを作成することもできます。次のポリシー例を使用すると、ユーザーはコンソールにサインインしてプロジェクトを一覧表示できます。また、ユーザーは Amazon SES、IAM、Amazon Kinesisなど、Amazon Pinpoint コンソールが依存する AWS の他のサービスに関連するリソースの情報も表示できます。ただし、ユーザーが表示できるのはポリシーに指定されているプロジェクトに関する追加情報のみです。このポリシーを変更して、追加のプロジェクトまたは AWS リージョンへのアクセスを許可できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewProject", "Effect": "Allow", "Action": "mobiletargeting:GetApps", "Resource": "arn:aws:mobiletargeting:region:accountId:*" }, { "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": [ "arn:aws:mobiletargeting:region:accountId:apps/projectId", "arn:aws:mobiletargeting:region:accountId:apps/projectId/*", "arn:aws:mobiletargeting:region:accountId:reports" ] }, { "Effect": "Allow", "Action": [ "ses:Get*", "kinesis:ListStreams", "firehose:ListDeliveryStreams", "iam:ListRoles", "ses:List*", "sns:ListTopics", "ses:Describe*", "s3:List*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" } } } ] }

前の例では、region を AWS リージョンの名前に置き換え、accountId を自分の AWS アカウント ID に置き換え、projectId をアクセスを提供する Amazon Pinpoint プロジェクトの ID に置き換えます。

同様に、プロジェクト 810c7aab86d42fb2b56c8c966example ID を持つプロジェクトなど、Amazon Pinpoint プロジェクトの 1 つへの書き込みアクセスが制限された AWS アカウント内のユーザーに許可するポリシーを作成できます。この場合、セグメントやキャンペーンなどのプロジェクトコンポーネントの表示、追加、更新はユーザーに許可しますが、コンポーネントの削除は許可しません。

mobiletargeting:Get アクションや mobiletargeting:List アクションに対するアクセス許可を付与するほかに、mobiletargeting:Createmobiletargeting:Update、および mobiletargeting:Put の各アクションに対するアクセス許可を付与するポリシーを作成します。これらは、ほとんどのプロジェクトコンポーネントを作成および管理するために必要な追加のアクセス許可です。例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LimitedWriteProject", "Effect": "Allow", "Action": "mobiletargeting:GetApps", "Resource": "arn:aws:mobiletargeting:region:accountId:*" }, { "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*", "mobiletargeting:Create*", "mobiletargeting:Update*", "mobiletargeting:Put*" ], "Resource": [ "arn:aws:mobiletargeting:region:accountId:apps/810c7aab86d42fb2b56c8c966example", "arn:aws:mobiletargeting:region:accountId:apps/810c7aab86d42fb2b56c8c966example/*", "arn:aws:mobiletargeting:region:accountId:reports" ] }, { "Effect": "Allow", "Action": [ "ses:Get*", "kinesis:ListStreams", "firehose:ListDeliveryStreams", "iam:ListRoles", "ses:List*", "sns:ListTopics", "ses:Describe*", "s3:List*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" } } } ] }

例: タグに基づいて Amazon Pinpoint リソースを表示する

アイデンティティベースのポリシーの条件を使用して、タグに基づいて Amazon Pinpoint リソースへのアクセスを制御できます。このポリシー例は、このようなポリシーを作成して Amazon Pinpoint リソースの表示を許可する方法を示しています。ただし、ユーザーにアクセス許可が付与されるのは、Owner リソースタグの値がユーザー名になっている場合のみです。このポリシーでは、このアクションをコンソールで実行するために必要なアクセス許可も付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListResources", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "*" }, { "Sid": "ViewResourceIfOwner", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "arn:aws:mobiletargeting:*:*:*", "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "userName" }, "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:mobiletargeting:region:accountId:*" } } } ] }

このタイプのポリシーをアカウントの ユーザーにアタッチできます。richard-roe という名前のユーザーが Amazon Pinpoint リソースを表示する場合、リソースには Owner=richard-roe または owner=richard-roe というタグが付いている必要があります。それ以外の場合、アクセスは拒否されます。条件キー名では大文字と小文字が区別されないため、条件タグキー OwnerOwnerowner の両方に一致します。詳細については、『IAM ユーザーガイド』の「IAM JSON ポリシー要素: 条件」を参照してください。

例: ユーザー自身のアクセス許可を表示することをユーザーに許可する

この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を 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": "*" } ] }

例: Amazon Pinpoint API アクションへのアクセスを許可する

このセクションでは、Amazon Pinpoint のプライマリ API である Amazon Pinpoint API から利用できる機能へのアクセスを許可するポリシーの例を示します。この API の詳細については、「Amazon Pinpoint API リファレンス」を参照してください。

読み取り専用アクセス

次のポリシー例では、特定のリージョンの Amazon Pinpoint アカウント内のすべてのリソースへの読み取り専用アクセスを許可します AWS 。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewAllResources", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "arn:aws:mobiletargeting:region:accountId:*" } ] }

前の例では、region を AWS リージョンの名前に置き換え、accountIdを自分のアカウント ID に置き換えます AWS 。

管理者アクセス権

次のポリシー例では、Amazon Pinpoint アカウント内のすべての Amazon Pinpoint アクションとリソースへのフルアクセスを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccess", "Effect": "Allow", "Action": [ "mobiletargeting:*" ], "Resource": "arn:aws:mobiletargeting:region:accountId:*" } ] }

前述の例で、accountId は自分の AWS アカウント ID に置き換えます。

例: Amazon Pinpoint SMS および音声 API アクションへのアクセスを許可する

このセクションでは、Amazon Pinpoint SMS および音声 API から利用できる機能へのアクセスを許可するポリシーの例を示します。これは、Amazon Pinpoint で SMS チャンネルと音声チャンネルを使用および管理するための高度なオプションを提供する補足 API です。この API の詳細については、「Amazon Pinpoint SMS および音声リファレンス」を参照してください。

読み取り専用アクセス

次のポリシー例では、アカウント内のすべての Amazon Pinpoint SMS および音声 API アクションとリソースへの読み取り専用アクセスを許可します AWS 。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoiceReadOnly", "Effect": "Allow", "Action": [ "sms-voice:Get*", "sms-voice:List*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:sms-voice:region:accountId:*" } } } ] }

管理者アクセス権

次のポリシー例では、アカウント内のすべての Amazon Pinpoint SMS および音声 API アクションとリソースへのフルアクセスを許可します AWS 。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoiceFullAccess", "Effect": "Allow", "Action": [ "sms-voice:*", ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:sms-voice:region:accountId:*" } } } ] }

例: 特定の IP アドレスに対して Amazon Pinpoint プロジェクトへのアクセスを制限する

次のポリシーの例では、指定したプロジェクト (ProjectId) で Amazon Pinpoint アクションを実行するアクセス許可をすべてのユーザーに付与します。ただし、リクエストは条件に指定されている IP アドレス範囲から行う必要があります。

このステートメントの条件では、許可されたインターネットプロトコルバージョン 4 (IPv4) のアドレスの 54.240.143.* 範囲を識別します。ただし、54.240.143.188 を除きます。Condition ブロックは、 IpAddress および NotIpAddress条件と、 AWS全体のaws:SourceIp条件キーである 条件キーを使用します。これらの条件キーの詳細については、『IAM ユーザーガイド』の「ポリシーでの条件の指定」を参照してください。aws:SourceIp IPv4 値は標準の CIDR 表記を使用します。詳細については、『IAM ユーザーガイド』の「IP アドレス条件演算子」を参照してください。

{ "Version":"2012-10-17", "Id":"AMZPinpointPolicyId1", "Statement":[ { "Sid":"IPAllow", "Effect":"Allow", "Principal":"*", "Action":"mobiletargeting:*", "Resource":[ "arn:aws:mobiletargeting:region:accountId:apps/projectId", "arn:aws:mobiletargeting:region:accountId:apps/projectId/*" ], "Condition":{ "IpAddress":{ "aws:SourceIp":"54.240.143.0/24" }, "NotIpAddress":{ "aws:SourceIp":"54.240.143.188/32" } } } ] }

例: タグに基づいて Amazon Pinpoint へのアクセスを制限する

次のポリシーの例では、指定したプロジェクト (projectId) で Amazon Pinpoint アクションを実行するアクセス許可を付与します。ただし、アクセス許可が付与されるのは、リクエスト元のユーザーの名前が Owner リソースタグの値として、条件に指定されている場合のみです。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ModifyResourceIfOwner", "Effect": "Allow", "Action": "mobiletargeting:*", "Resource": [ "arn:aws:mobiletargeting:region:accountId:apps/projectId", "arn:aws:mobiletargeting:region:accountId:apps/projectId/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "userName" } } } ] }

例: Amazon Pinpoint から、Amazon SES で検証されたアイデンティティを使用して E メールを送信することを許可する

Amazon Pinpoint コンソールで E メール ID (E メールアドレスやドメインなど) を検証すると、その ID は Amazon Pinpoint と Amazon SES の両方で使用できるように自動的に設定されます。ただし、Amazon SES で E メール ID を検証し、その ID を Amazon Pinpoint で使用する場合は、その ID にポリシーを適用する必要があります。

次のポリシー例では、Amazon SES で検証された E メール ID を使用して E メールを送信するためのアクセス許可を Amazon Pinpoint に付与します。

{ "Version":"2008-10-17", "Statement":[ { "Sid":"PinpointEmail", "Effect":"Allow", "Principal":{ "Service":"pinpoint.amazonaws.com" }, "Action":"ses:*", "Resource":"arn:aws:ses:region:accountId:identity/emailId", "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId" }, "StringLike":{ "aws:SourceArn":"arn:aws:mobiletargeting:region:accountId:apps/*" } } } ] }

AWS GovCloud (米国西部) リージョンで Amazon Pinpoint を使用する場合は、代わりに次のポリシー例を使用します。

{ "Version":"2008-10-17", "Statement":[ { "Sid":"PinpointEmail", "Effect":"Allow", "Principal":{ "Service":"pinpoint.amazonaws.com" }, "Action":"ses:*", "Resource":"arn:aws-us-gov:ses:us-gov-west-1:accountId:identity/emailId", "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId" }, "StringLike":{ "aws:SourceArn":"arn:aws-us-gov:mobiletargeting:us-gov-west-1:accountId:apps/*" } } } ] }