Amazon SQS でのアクセス管理の概要
すべてAWSのリソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、アクセス権限のポリシーによって管理されます。アカウント管理者は、IAMアクセス権限ポリシーをアイデンティティ (ユーザー、グループ、ロール) にアタッチできます。一部のサービス ( Amazon SQS など) では、アクセス権限ポリシーをリソースにアタッチすることもできます。
注記
アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、「IAM ユーザーガイド」の「IAM のベストプラクティス」を参照してください。
アクセス権限を付与する場合、アクセス権限を取得するユーザー、取得するアクセス権限の対象となるリソース、およびリソースに対して許可される特定のアクションを指定します。
Amazon Simpleキューサービス リソースと操作
Amazon SQS では、唯一のリソースはキューです。ポリシーで Amazon リソースネーム (ARN)を使用して、ポリシーを適用するリソースを識別します。次のリソースには、関連付けられた一意のARN があります。
| リソースタイプ | ARN 形式 |
|---|---|
| キュー | arn:aws:sqs: |
キューの ARN 形式の例を以下に示します。
-
AWSアカウント 123456789012:に属する
my_queue米国東部(オハイオ)リージョンのというキューの ARN。arn:aws:sqs:us-east-2:123456789012:my_queue -
Amazon SQSがサポートする異なるリージョンごとの
my_queueというキューのARN。arn:aws:sqs:*:123456789012:my_queue -
キュー名に対して
*または?をワイルドカードとして使用する ARN。次の例で、ARN はプレフィックスmy_prefix_が付いたすべてのキューに一致します。arn:aws:sqs:*:123456789012:my_prefix_*
GetQueueAttributes アクションを呼び出して既存のキューの ARN 値を取得できます。QueueArn 属性の値は、キューの ARN です。ARNの詳細については、IAM ユーザーガイドの「IAM ARN」を参照してください。
Amazon SQSには、キューリソースを操作するための一連の アクションが用意されています。詳細については、「Amazon SQS (Amazon SQS)、 API のアクセス権限: アクションとリソースのリファレンスについて」を参照してください。
リソース所有権についての理解
AWS アカウント は、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエンティティ (ルートアカウント、ユーザー、または IAM ロール) の AWS アカウント です。次の例は、この仕組みを示しています。
-
AWS アカウント アカウントのルートアカウントの認証情報を使用してAmazon SQSキューを作成する場合、この アカウントがリソースのAWS アカウント所有者です ( Amazon SQSでは、リソースはAmazon SQSキューです)。
-
AWS アカウント にユーザーを作成し、そのユーザーにキューを作成するためのアクセス許可を付与する場合、そのユーザーはキューを作成できます。ただし、(ユーザーが属する) AWS アカウントアカウントはキューリソースを所有しています。
-
Amazon SQSキューを作成するためのAWS アカウントアクセス権限を持つIAM ロールを作成する場合は、ロールを引き受けることのできるいずれのユーザーもキューを作成できます。(ロールが属する) AWS アカウントはキューリソースを所有しています。
リソースへのアクセスの管理
アクセス許可ポリシー では、誰が何にアクセスできるかを記述します。以下のセクションで、アクセス権限のポリシーを作成するために使用可能なオプションについて説明します。
注記
このセクションでは、Amazon SQSのコンテキストでの IAM の使用について説明します。これは、IAMサービスに関する詳細情報を取得できません。IAM に関する詳細なドキュメントについては、「IAM ユーザーガイド」の「What is IAM?」(IAM とは?) を参照してください。IAM ポリシーの構文と説明については、「IAM ユーザーガイド」の「AWS IAM ポリシーリファレンス」を参照してください。
IAM アイデンティティに添付されたポリシーはアイデンティティベースのポリシー (IAM ポリシー) と呼ばれ、リソースに添付されたポリシーはリソースベースのポリシーと呼ばれます。
アイデンティティベースポリシー
ユーザーにAmazon SQSキューのアクセス権限を付与する方法は、 ポリシーシステムを使用する方法とIAMポリシーシステムを使用する方法の 2 つです。いずれかのシステムまたは両方を使用して、ユーザーまたはロールにポリシーをアタッチできます。ほとんどの場合、どちらのシステムを使用しても同じ結果が得られます。例えば、次の操作を実行できます:
-
アカウントのユーザーまたはグループに許可ポリシーをアタッチする–Amazon SQS キューを作成する許可を付与するために、ユーザーまたはユーザーが所属するグループに許可ポリシーをアタッチできます。
-
別の AWS アカウント のユーザーに許可ポリシーをアタッチする – 別の AWS アカウント のユーザーに許可ポリシーをアタッチして、ユーザーが Amazon SQS キューとやり取りできるようにします。ただし、クロスアカウントアクセス許可は、次のアクションには適用されません。
クロスアカウント権限は、次のアクションには適用されません。
これらのアクションに対してアクセスを付与するには、ユーザーが Amazon SQS キューを所有するのと同じ AWS アカウントに属している必要があります。
-
アクセス許可ポリシーをロールにアタッチする (クロスアカウントアクセス許可を付与する) – SQS キューにクロスアカウントアクセス許可を付与するには、IAM ポリシーとリソースベースのポリシーの両方を組み合わせる必要があります。
-
アカウント A (キューを所有) で、
-
リソースベースのポリシーを SQS キューにアタッチします。このポリシーは、アカウント B (IAM ロールなど) のプリンシパルに必要なアクセス許可 (
SendMessage、ReceiveMessageなど) を明示的に付与する必要があります。
-
-
アカウント A で IAM ロールを作成します。
-
アカウント B または AWS のサービス がロールを引き受けるのを許可する信頼ポリシー。
注記
AWS のサービス (Lambda や EventBridge など) にロールを引き受させたい場合は、信頼ポリシーでサービスプリンシパル (lambda.amazonaws.com など) を指定します。
-
キューとやり取りするアクセス許可を引き受けたロールに付与するアイデンティティベースのポリシー。
-
-
アカウント B で、アカウント A でのロールを引き受けるアクセス許可を付与します。
-
クロスアカウントプリンシパルを許可するようにキューのアクセスポリシーを設定する必要があります。IAM のアイデンティティベースのポリシーだけでは、SQS キューへのクロスアカウントアクセスには不十分です。
IAM を使用した許可の委任の詳細については、「IAM ユーザーガイド」の「アクセス管理」を参照してください。
Amazon SQS はIAMポリシーを使用して作業する一方で、独自のポリシーインフラストラクチャがあります。キューでAmazon SQSポリシーを使用して、キューにアクセスできるAWSアカウントを指定できます。アクセスタイプと条件を指定できます (たとえば、リクエストが 2010年12月31日より前の場合はSendMessage、ReceiveMessageを使用するアクセス権限を付与する条件)。アクセス許可を付与できる特定のアクションは、Amazon SQS アクションリスト全体のサブセットです。Amazon SQS ポリシーを記述して、*「すべての アクションを許可」を意味するを指定した場合、ユーザーがこのサブセット内のすべてのアクション実行できることを意味します。
次の図は、これらのベーシックなAmazon SQS ポリシーのうち1つの概念を表しており、アクションのサブセットを取り上げています。ポリシーは queue_xyz 用であり、AWS アカウント1および AWS アカウント 2に指定されたキューで許可されたアクションのいずれかを使用するアクセス権限を与えます。
注記
ポリシー内のリソースが123456789012/queue_xyzとして指定されています (123456789012は、キューを所有するアカウントの AWS アカウントID です)。
IAMと、ユーザーおよび Amazon リソースネーム(ARN)の概念の導入により、SQSポリシーに関するいくつかの点が変わりました。次の図と表は、その変更を示しています。
異なるアカウントのユーザーに権限を付与する方法については、IAMユーザーガイド「チュートリアル:アクセス権の委任AWSIAM ロールを使用するアカウントを参照してください。
*に含まれるアクションのサブセットが拡大されました。可能なアクションの一覧については、Amazon SQS (Amazon SQS)、 API のアクセス権限: アクションとリソースのリファレンスについてを参照してください。
Amazon リソースネーム (ARN)を使用してリソースを指定できます。これは、IAMポリシーでリソースを指定するためのスタンダードな方法です。Amazon SQSキューのARN形式については、「Amazon Simpleキューサービス リソースと操作」を参照してください。
たとえば上の図の Amazon SQS AWS ポリシーによると、AWS アカウントにしたがって、 1または アカウント2のセキュリティ認証情報を持つどのユーザーでもqueue_xyzにアクセスできます。さらに、自身のAWS アカウント (ID 123456789012)内のユーザー Bobおよび Susanもキューにアクセスできます。
IAMの導入前は、 Amazon SQSによりキューの作成者に、キューに対する完全なコントロールが付与されていました (そのキューで使用できるすべての Amazon SQ アクションへのアクセス)。これは、作成者が AWS セキュリティ認証情報を使用している場合以外は当てはまらなくなりました。キューを作成するアクセス権限を持つユーザーは、作成されたキューで何らかの操作を実行するには、他のAmazon SQSアクションを使用するアクセス権限も持っている必要があります。
以下に、ユーザーにすべてのAmazon SQSアクションを許可するが、対象を名前にリテラル文字列というプレフィックスがついているキューに限るポリシーの例を示しますbob_queue_。
詳細については、IAMユーザーガイドAmazon SQS でのポリシーの使用「ID (ユーザー、グループ、ロール)」とのIAM ポリシーの概要」を参照してください。
ポリシー要素の指定:アクション、効果、リソース、プリンシパル
Amazon Simple キューサービス リソースの種類ごとに、このサービスは、一連のアクションを定義します。これらの アクションを実行するためのアクセス権限を付与するために、Amazon SQSではポリシーに一連のアクションを定義できます。
注記
1つの アクションの実行で、複数のアクションのアクセス権限が必要になる場合があります。特定のアクションのアクセス権限を付与した場合は、アクションを許可または拒否するリソースを識別します。
最も基本的なポリシーの要素を次に示します。
-
リソース–ポリシーで Amazon リソースネーム (ARN)を使用して、ポリシーを適用するリソースを識別します。
-
アクション–アクションのキーワードを使用して、許可または拒否するリソースアクションを識別します。たとえば、
sqs:CreateQueue権限は、Amazon Simple キューサービスCreateQueueアクション の実行をユーザーに許可します。 -
効果–ユーザーが特定のアクションを要求する際の効果を指定します。許可または拒否のいずれかになります。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセスが許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。
-
プリンシパル-アイデンティティベースのポリシー(IAMポリシー)で、ポリシーが添付されているユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、アクセス許可 (リソースベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。
Amazon SQS ポリシーの構文と記述の詳細については、IAM ユーザーガイドのAWSIAM ポリシーリファレンスを参照してください。
すべてのAmazon Simpleキューサービスアクションおよびそれに適用されるリソースを示す表については、「Amazon SQS (Amazon SQS)、 API のアクセス権限: アクションとリソースのリファレンスについて」を参照してください。