Identity and Access Management(IAM)には、プリンシパルがアクセスできるリソースを制御するために役立ついくつかのポリシータイプがあります。このページでは、これらのポリシータイプの使用方法と管理方法の違いについて説明します。
IAM ポリシーのタイプ
IAM には次のタイプのポリシーがあります。
- 許可ポリシー
- 拒否ポリシー
次の表に、これらのポリシータイプの違いを示します。
ポリシー | ポリシーの機能 | ポリシーの管理に使用される API | ポリシーとターゲットの関係 | ポリシーをターゲットに接続する方法 | ポリシーの親リソース |
---|---|---|---|---|---|
許可ポリシー | プリンシパルにリソースへのアクセス権を付与する | 許可ポリシーを管理するリソースの API |
1 対 1 の関係 各許可ポリシーは 1 つのリソースに適用されます。各リソースには 1 つの許可ポリシーのみを適用できます。 |
ポリシーの作成時にリソースを指定する | 許可ポリシーが適用されるリソースと同じ |
拒否ポリシー | プリンシパルが特定の権限を使用できないようにする | IAM v2 API |
1 対多の関係 各拒否ポリシーは 1 つのリソースに適用されます。各リソースには最大 500 個の拒否ポリシーを設定できます。 |
拒否ポリシーを作成するときにリソースを指定する | 拒否ポリシーが適用されているリソースと同じ |
以降のセクションでは、各ポリシータイプについて詳しく説明します。
プリンシパルにアクセス権を付与するポリシー
プリンシパルにリソースへのアクセス権を付与するには、IAM 許可ポリシーを使用します。
許可ポリシーを使用すると、 Trusted Cloudのリソースへのアクセス権を付与できます。許可ポリシーは、ロール バインディングとメタデータで構成されます。ロール バインディングでは、リソースに対して特定のロールを付与するプリンシパルを指定します。
許可ポリシーは常に 1 つのリソースに適用されます。許可ポリシーをリソースに適用すると、そのポリシーはリソースの子孫に継承されます。
許可ポリシーを作成して適用するには、許可ポリシーを受け入れるリソースを特定し、そのリソースの setIamPolicy
メソッドを使用して許可ポリシーを作成します。許可ポリシー内のすべてのプリンシパルに、リソースとそのリソースのすべての子孫に対して指定されたロールが付与されます。各リソースに適用できる許可ポリシーは 1 つだけです。
許可ポリシーの詳細については、許可ポリシーについてをご覧ください。
プリンシパルへのアクセスを拒否するポリシー
プリンシパルがリソースにアクセスできないようにするには、IAM 拒否ポリシーを使用します。IAM 拒否ポリシーは IAM v2 API で使用できます。
許可ポリシーと同様に、拒否ポリシーは常に 1 つのリソースに適用されます。拒否ポリシーは、プロジェクト、フォルダ、組織に適用できます。このプロジェクト、フォルダ、または組織は、リソース階層内のポリシーの親としても機能します。リソースに拒否ポリシーを適用すると、そのポリシーはリソースの子孫に継承されます。
拒否ポリシーを作成して適用するには、IAM v2 API を使用します。拒否ポリシーを作成するときに、拒否ポリシーが接続されているリソースを指定します。拒否ポリシー内のすべてのプリンシパルは、指定された権限を使用してそのリソースとそのリソースの子孫にアクセスできなくなります。各リソースには、最大 500 個の拒否ポリシーを関連付けることができます。
拒否ポリシーの詳細については、拒否ポリシーをご覧ください。
ポリシー評価
プリンシパルがリソースにアクセスを試みると、IAM は関連するすべての許可ポリシーと拒否ポリシーを評価し、プリンシパルがリソースにアクセスできるかどうかを確認します。これらのポリシーのいずれかで、プリンシパルがリソースにアクセスできないことが示されている場合、IAM はアクセスを拒否します。
実際には、IAM はすべてのポリシータイプを同時に評価し、結果をまとめて、プリンシパルがリソースにアクセスできるかどうかを判断します。ただし、このポリシー評価は次の段階で行うことを想定しています。
-
IAM は、関連するすべての拒否ポリシーを確認し、プリンシパルで権限が拒否されているかどうか確認します。関連する拒否ポリシーには、リソースに接続している拒否ポリシーだけでなく、継承された拒否ポリシーも含まれます。
- これらの拒否ポリシーのいずれかでプリンシパルが必要とする権限が拒否されている場合、IAM はリソースへのアクセスを許可しません。
- プリンシパルが必要とする権限を拒否するポリシーがない場合、IAM は次のステップに進みます。
-
IAM は、関連するすべての許可ポリシーをチェックして、プリンシパルに必要な権限があるかどうか確認します。関連する許可ポリシーには、リソースに接続している許可ポリシーだけでなく、継承された許可ポリシーも含まれます。
- プリンシパルに必要な権限が付与されていない場合、IAM はリソースへのアクセスを許可しません。
- プリンシパルに必要な権限が付与されている場合、IAM はリソースへのアクセスを許可します。
次の図に、このポリシーの評価フローを示します。