AWS AppSync のアイデンティティベースのポリシー
デフォルトでは、ユーザーおよびロールには、AWS AppSync リソースを作成または変更するアクセス許可はありません。また、AWS Management Console、AWS Command Line Interface (AWS CLI)、または AWS API を使用してタスクを実行することもできません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。その後、管理者はロールに IAM ポリシーを追加し、ユーザーはロールを引き受けることができます。
これらのサンプル JSON ポリシードキュメントを使用して IAM ID ベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーを作成する (コンソール)」を参照してください。
AWS AppSync で定義されるアクションとリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、「サービス認可リファレンス」の「AWSAppSync のアクション、リソース、および条件キー」を参照してください。
IAM アイデンティティベースのポリシーを作成および設定するためのベストプラクティスについては、「IAM ポリシーのベストプラクティス」を参照してください。
AWS AppSync の IAM アイデンティティベースのポリシーのリストについては、「AWS AppSync の AWS マネージドポリシー」を参照してください。
トピック
AWS AppSync コンソールの使用
AWS AppSync コンソールにアクセスするには、一連の最小限のアクセス許可が必要です。これらのアクセス許可により、AWS アカウント の AWS AppSync リソースの詳細をリストおよび表示できます。最小限必要なアクセス許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) ではコンソールが意図したとおりに機能しません。
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソール権限を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスを許可します。
IAM ユーザーとロールが引き続き AWS AppSync コンソールを使用できるよう、エンティティに AWS AppSync の ConsoleAccess
または ReadOnly
AWS 管理ポリシーもアタッチします。詳細については、IAM ユーザーガイドのユーザーへの許可の追加を参照してください。
自分の権限の表示をユーザーに許可する
この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を 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": "*" } ] }
1 つの Amazon S3 バケットへのアクセス
この例では、AWS アカウントの IAM ユーザーに Amazon S3 バケットの 1 つである examplebucket
へのアクセスを付与します。また、ユーザーがオブジェクトを追加、更新、および削除できるようにします。
このポリシーでは、ユーザーに s3:PutObject
、s3:GetObject
、s3:DeleteObject
のアクセス許可を付与するだけでなく、s3:ListAllMyBuckets
、s3:GetBucketLocation
、および s3:ListBucket
のアクセス許可も付与します。これらが、コンソールで必要とされる追加のアクセス許可です。またコンソール内のオブジェクトのコピー、カット、貼り付けを行うためには、s3:PutObjectAcl
および s3:GetObjectAcl
アクションが必要となります。コンソールを使用して、ユーザーにアクセス許可を付与し、テストする例の解説については、「チュートリアル例: ユーザーポリシーを使用したバケットへのアクセスのコントロール」を参照してください。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"ListBucketsInConsole", "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets" ], "Resource":"arn:aws:s3:::*" }, { "Sid":"ViewSpecificBucketInfo", "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource":"arn:aws:s3:::examplebucket" }, { "Sid":"ManageBucketContents", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:DeleteObject" ], "Resource":"arn:aws:s3:::examplebucket/*" } ] }
タグに基づく AWS AppSync widget
の表示
アイデンティティベースのポリシーの条件を使用して、タグに基づいて AWS AppSync リソースへのアクセスをコントロールできます。この例では、ウィジェット
を表示できるポリシーを作成する方法を示します。ただし、アクセス許可は、widget
タグ Owner
にそのユーザーのユーザー名の値がある場合にのみ付与されます。このポリシーでは、このアクションをコンソールで実行するために必要なアクセス許可も付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListWidgetsInConsole", "Effect": "Allow", "Action": "appsync:ListWidgets", "Resource": "*" }, { "Sid": "ViewWidgetIfOwner", "Effect": "Allow", "Action": "appsync:GetWidget", "Resource": "arn:aws:appsync:*:*:widget/*", "Condition": { "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"} } } ] }
このポリシーをアカウントの IAM ユーザーにアタッチできます。richard-roe
という名前のユーザーが AWS AppSync widget
を表示しようとする場合、widget
に Owner=richard-roe
または owner=richard-roe
をタグ付けする必要があります。それ以外の場合、アクセスは拒否されます。条件キー名では大文字と小文字が区別されないため、条件タグキー Owner
は Owner
と owner
の両方に一致します。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素: 条件」を参照してください。