メニュー
AWS Identity and Access Management
ユーザーガイド

AWS IAM アクセス権限の概要

アクセス権限は、誰が AWS リソースにアクセスできるか、またそれらのリソース上でどのようなアクションを実行できるかを指定することを可能にします。すべての IAM ユーザーは、権限のない状態からスタートします。言い換えると、デフォルト設定では、ユーザーは何もできず、そのユーザーのアクセスキーを参照することすらできません。ユーザーに何かの操作をするアクセス権限を付与する場合には、ユーザーにアクセス権限を追加する(つまり、ポリシーをユーザーに関連付ける)か、ユーザーを該当のアクセス権限を持つグループに追加します。

例えば、自らのアクセスキーをリスト化するためのユーザー権限を付与することができます。また、権限を拡大し、各ユーザーが自らのキーを作成、更新、および削除できるようにすることもできます。

グループだとそれらのアクセス権限をグループに付与することで、グループ内のすべてのユーザーに権限を与えることができます。たとえば、管理者グループに、すべての AWS アカウントのリソースにおける、すべての IAM アクションを行うためのアクセス権限を付与することができます。その他の例: マネージャーに対し、AWS アカウントの Amazon EC2 インスタンスを記述するためのグループ権限を付与することができます。

ユーザー、グループ、およびロールに基本的な権限を委任する方法については、「IAM ユーザー、グループ、および認証情報を管理するための権限の委任」を参照してください。基本的な権限を示すポリシーのさらに多くの例については、「IAM リソースの管理に関するポリシーの例」を参照してください。

ID ベース(IAM)のアクセス権限およびリソースベースのアクセス権限

アクセス権限は、ID ベース、またはリソースベースという 2 とおりの方法で割り当てることができます。

  • ID ベースまたは IAM のアクセス権限は IAM ユーザー、グループ、またはロールに関連付けられ、そのユーザー、グループ、またはロールが実行できることを指定できます。たとえば、Bob という IAM ユーザーに対し、Amazon Elastic Compute Cloud (Amazon EC2) RunInstances アクションの使用が可能で、MyCompany という名の Amazon DynamoDB テーブルからアイテムを取得できることを記述したアクセス権限を割り当てることができます。ユーザーである Bob には、自らの IAM 認証情報を管理できるアクセス権限を付与することもできます。ID ベースのアクセス権限は管理またはインラインとすることができます。

  • リソースベースのアクセス権限をリソースに関連付けます。Amazon S3 バケット、Amazon Glacier ボールト、Amazon SNS トピック、Amazon SQS キュー、および AWS Key Management Service 暗号化キーに対するリソースベースのアクセス権限を指定できます。リソースベースのアクセス権限によって、誰がリソースにアクセスでき、彼らがリソースでどのようなアクションを実行できるかを指定できます。リソースベースのポリシーはインラインのみで、管理ポリシーはありません。

注記

リソースベースのアクセス権限とリソースレベルのアクセス権限には違いがあります。リソースベースのアクセス権限は、このトピックで説明しているように、リソースに直接アタッチできるアクセス権限です。リソースレベルのアクセス権限は、ユーザーがどのアクションを実行できるかだけでなく、ユーザーがどのリソースに対してそのアクションを実行できるかを指定する機能を意味します。一部の AWS サービスでは、アクションに対してアクセス権限を指定できますが、そのアクションに対して個々のリソースを指定することはできません。また他のサービスでは、アクションと個々のリソースの組み合わせに対してアクセス権限を指定できます。

リソースベースのアクセス権限は、一部の AWS サービスでのみサポートされます。リソースベースおよびリソースレベルのアクセス権限をサポートするサービスのリストについては、「IAM と連携する AWS サービス」を参照してください。

以下の図は、両タイプのアクセス権限を表したものです。最初の列はアイデンティティ(2 人のユーザーと 2 つのグループ)にアタッチされたアクセス権限を示しています。これらのアクセス権限により、アクションを使用できる特定の対象リソースが識別されます。これらのアクションは、リソースレベルのアクセス権限をサポートします。2 番目の列は、リソースにアタッチされたアクセス権限を示します。これらのサービスは、リソースベースのアクセス権限をサポートします。

 アクセス権限の種別

注記

ポリシーを AWS リソースにアタッチすると (IAM ロールの信頼ポリシーを含む)、AWS はユーザーが作成するポリシーを検証、処理、変換してから保存します。AWS がユーザークエリに対してポリシーを返すと、AWS はポリシーを人間が読み取れる形式に変換し直します。これにより、ポリシーに表示される内容が変わる場合があります。つまり、重要でない空白文字は削除され、JSON マップ内の要素は再度順序付けされ、Principal 要素内の AWS アカウント ID は AWS アカウントのルートユーザーの ARN に置き換えられる場合があります。 このような変更の可能性があるため、JSON ポリシードキュメントを文字列として比較しないでください。

特定のアクセス権限を持つユーザーが、アクセス権限が関連付けられたリソースを要求する場合があります。このような場合、AWS がリソースへのアクセスを許可するかどうかを判断する際、両方のアクセス権限が評価されます。ポリシーの評価方法に関する詳細については、「IAM ポリシーの評価論理」を参照してください。

注記

Amazon S3 は、IAM ユーザーに対するポリシーとリソースに対するポリシー(Amazon S3 ではバケットポリシーと呼ばれます)をサポートしています。さらに、Amazon S3 は、IAM ポリシーおよびアクセス権限から独立した、ACL と呼ばれるアクセス権限メカニズムをサポートしています。IAM ポリシーは、Amazon S3 ACL と組み合わせて使用できます。詳細については、Amazon Simple Storage Service 開発者ガイド の「Access Control」を参照してください。

リソース作成者であっても自動的にアクセス権限を有するわけではない

AWS アカウントのセキュリティ認証情報を使用しているユーザーは、そのアカウントに属するリソースであらゆるアクションを実行する権限を持っています。ただし、それは IAM ユーザーには当てはまりません。IAM ユーザーはリソースを作成するためのアクセス権限を付与されることはありますが、そのユーザーの権限は、たとえ自ら作成したリソースに対するものであっても、明示的に付与された権限に限定されます。このユーザーのアクセス権限は、アカウントのオーナーまたはユーザー権限の管理へのアクセス権限を付与されたその他のユーザーによって、いつでも無効にすることができます。

AWS アカウント全体にわたるアクセス権限の付与

お客様は自らのアカウント内の IAM ユーザーに対し、お客様のリソースへのアクセス権限を直接付与できます。他のアカウントのユーザーがお客様のリソースへのアクセスを必要としている場合は、IAM ロールを作成します。このロールは、特定の権限を含むエンティティであり、特定のユーザーに関連付けられることはありません。これにより他のアカウントのユーザーはロールを使用して、ロールに割り当てられた権限に応じてリソースにアクセスできます。詳細については、「IAM ロール」を参照してください。

注記

ID ベース(IAM)のアクセス権限およびリソースベースのアクセス権限」のリソースベースポリシーをサポートするサービス (Amazon S3、Amazon SNS、Amazon SQS など) では、ロールを使用する代わりに、共有したいリソース (バケット、トピック、キュー) にポリシーをアタッチできます。リソースベースポリシーは、リソースへのアクセス許可を持つ AWS アカウントを指定できます。

あるサービスから他のサービスへのアクセス権限

多くの AWS サービスは、他の AWS サービスにアクセスします。たとえば、Amazon EMR、Elastic Load Balancing、および Auto Scaling といった一部の AWS サービスは、Amazon EC2 インスタンスを管理します。Amazon S3 バケット、Amazon SNS トピック、Amazon SQS キューなどを活用する AWS サービスもあります。

こうした場合におけるアクセス権限の管理方法は、サービスによって異なります。ここでは、異なるサービスでアクセス権限がどのように扱われるかについての例をいくつか紹介します。

  • Auto Scaling の場合、ユーザーは Auto Scaling へのアクセス権限を持っている必要がありますが、Amazon EC2 インスタンスを管理する権限を明示的に付与されている必要はありません。

  • AWS Data Pipeline では、IAM ロールによってパイプラインで何ができるかが決定され、ユーザーはロールを引き受けるための権限が必要です(詳細については、『AWS Data Pipeline 開発者ガイド』の「IAM を使用してパイプラインにアクセス権限を付与する」を参照してください)。

アクセス権限を適切に設定して AWS サービスが意図するタスクを実行できるようにする方法の詳細については、呼び出すサービスのドキュメントを参照してください。

ユーザーの代理操作を実行する IAM ロールでサービスを設定する

ユーザーの代理操作を行うように AWS サービスを設定したい場合、サービスに許可されている内容を定義する IAM ロールの ARN を提供するのが通常です。AWS はユーザーがサービスにロールを渡すアクセス権限があるか確認します。詳細については、「AWS サービスにロールを渡すアクセス権限をユーザーに許可する」を参照してください。