アクセス許可とポリシーがアクセス管理を提供する方法
AWS Identity and Access Management (IAM) のアクセス管理では、アカウントでプリンシパルエンティティが実行できる操作を定義します。プリンシパルエンティティとは、IAM エンティティ (IAM ユーザーまたは IAM ロール) を使用して認証されているユーザーまたはアプリケーションのことです。アクセス管理は、認可と呼ばれることもあります。AWS でのアクセスを管理するには、ポリシーを作成し、IAM アイデンティティ (IAM ユーザー、IAM グループ、または IAM ロール) または AWS リソースにアタッチします。ポリシーは AWS のオブジェクトであり、アイデンティティやリソースに関連付けて、これらのアクセス許可を定義します。AWS は、プリンシパルが IAM エンティティ (IAM ユーザーまたは IAM ロール) を使用してリクエストを行うと、それらのポリシーを評価します。ポリシーでの権限により、リクエストが許可されるか拒否されるかが決まります。大半のポリシーは JSON ドキュメントとして AWSに保存されます。ポリシーのタイプと用途の詳細については、「AWS Identity and Access Management でのポリシーとアクセス許可」を参照してください。
ポリシーとアカウント
AWS で 1 つのアカウントを管理する場合は、ポリシーを使用してそのアカウント内でアクセス許可を定義します。複数のアカウントをまたいでアクセス許可を管理する場合、IAM ユーザーのアクセス許可を管理するのが難しくなります。IAM ロール、リソースベースのポリシー、アクセスコントロールリスト (ACL) はクロスアカウントのアクセス許可で使用できます。ただし、複数のアカウントを所有している場合は、このようなアクセス許可を管理しやすいように AWS Organizations サービスを使用することをお勧めします。詳細については、Organizations ユーザーガイドの「AWS Organizations とは」を参照してください。
ポリシーとユーザー
IAM ユーザーは AWS アカウント のアイデンティティです。IAM ユーザーを作成する場合、ユーザーはアクセス許可を付与されるまでアカウントのいずれのリソースにもアクセスできません。許可を IAM ユーザーに付与するには、ID ベースのポリシーを作成して、IAM ユーザーか、IAM ユーザーが属する IAM グループにアタッチします。以下の例で示す JSON ポリシーでは、dynamodb:*
リージョン内の Books
アカウントの 123456789012
テーブルに対してすべての Amazon DynamoDB アクション (us-east-2
) を実行することを IAM ユーザーに許可します。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-east-2:123456789012:table/Books" } }
このポリシーを IAM ユーザーにアタッチすると、そのユーザーには、DynamoDB インスタンスの Books
テーブルですべてのアクションを実行するための許可が付与されます。ほとんどの IAM ユーザーには、付与された許可の合計を表すために組み合わされた複数のポリシーがあります。
ポリシーによって明示的に許可されていないアクションやリソースは、デフォルトで拒否されます。例えば、前述のポリシーがユーザーにアタッチされた単一のポリシーである場合、そのユーザーは Books
テーブルに対して DynamoDB アクションを実行できますが、他のテーブルに対してアクションを実行することはできません。同様に、そのユーザーは Amazon EC2、Amazon S3、または他の AWS サービスでアクションを実行することは許可されません。これらのサービスを利用するための許可はポリシーに含まれていないためです。
ポリシーと IAM グループ
IAM ユーザーを IAM グループにまとめ、そのグループにポリシーをアタッチできます。その場合、個々の IAM ユーザーは、まだ独自の認証情報を持っていますが、その IAM グループのすべての IAM ユーザーは、IAM グループにアタッチされている許可を持っています。アクセス許可の管理を簡素化するために IAM グループを使用します。
IAM ユーザーまたは IAM グループには、さまざまなアクセス許可を付与する複数のポリシーをアタッチできます。その場合、ポリシーの組み合わせによって、プリンシパルの有効な許可が決まります。アクションとリソースの両方についての明示的な Allow
許可がプリンシパルに付与されていない場合、そのプリンシパルはそれらの許可を持ちません。
フェデレーティッドユーザーとロール
フェデレーションユーザーは、IAM ユーザーとは異なり、AWS アカウント に永続的な ID を持っていません。フェデレーティッドユーザーにアクセス許可を割り当てるには、ロールと呼ばれるエンティティを作成し、ロールのアクセス許可を定義できます。フェデレーティッドユーザーが AWS にサインインすると、そのユーザーはロールに関連付けられ、ロールで定義されているアクセス許可が付与されます。詳細については、「サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する」を参照してください。
アイデンティティベースのポリシーとリソースベースのポリシー
アイデンティティベースのポリシーは、IAM アイデンティティ ( IAM ユーザー、グループ、ロールなど) にアタッチするアクセス許可ポリシーです。リソースベースのポリシーは、Amazon S3 バケットなどのリソースまたは IAM ロール信頼ポリシーにアタッチする許可ポリシーです。
アイデンティティベースのポリシーでは、アイデンティティが実行できるアクション、リソース、および条件を制御します。アイデンティティベースのポリシーはさらに次のように分類できます。
-
管理ポリシー - AWS アカウント 内の複数のユーザー、グループ、およびロールにアタッチできるスタンドアロンのアイデンティティベースのポリシーです。次の 2 種類の管理ポリシーを使用できます。
-
AWS 管理ポリシー – AWS が作成および管理する管理ポリシー。ポリシーを初めて利用する場合は、AWS 管理ポリシーから開始することをお勧めします。
-
カスタマー管理ポリシー - AWS アカウント で作成および管理する管理ポリシー。カスタマー管理ポリシーでは、AWS 管理ポリシーに比べて、より正確にポリシーを管理できます。ビジュアルエディタで および IAM ポリシーを作成および編集することも、JSON ポリシードキュメントを直接作成することもできます。詳細については、カスタマー管理ポリシーでカスタム IAM アクセス許可を定義するおよびIAM ポリシーを編集するを参照してください。
-
-
インラインポリシー – お客様が作成および管理するポリシーであり、単一のユーザー、グループ、またはロールに直接埋め込まれます。通常、インラインポリシーを使用することは推奨されていません。
リソースベースのポリシーでは、指定されたプリンシパルが実行できるリソースと条件を制御します。リソースベースのポリシーはインラインポリシーであり、管理リソースベースのポリシーはありません。クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。
IAM サービスは、ユーザーが IAM ロールにアタッチするロールの信頼ポリシーと呼ばれるリソースベースのポリシーの 1 つのタイプをサポートします。IAM ロールは、リソースベースのポリシーをサポートする ID かつリソースであるため、信頼ポリシーと ID ベースのポリシーのいずれも IAM ロールにアタッチする必要があります。信頼ポリシーでは、ロールを引き受けることができるプリンシパルエンティティ (アカウント、ユーザー、ロール、フェデレーティッドユーザー) を定義します。IAM ロールと、他のリソースベースのポリシーとの違いについては、「IAM でのクロスアカウントのリソースへのアクセス」を参照してください。
リソースベースのポリシーをサポートするサービスを確認するには、「IAM と連携する AWS のサービス」を参照してください。 リソースベースのポリシーの詳細については、「アイデンティティベースおよびリソースベースのポリシー」を参照してください。