きめ細かいアクセス制御のための IAM 条件
このページでは、IAM 条件を使用して接続へのアクセスを制限する方法について説明します。
IAM 条件によって、Integration Connectors リソースを細かく制御できます。デフォルトでは、Integration Connectors ユーザーまたはロールで、接続に対してサポートされているすべての操作を実行できます。IAM 条件を使用すると、特定のユーザーまたはロールを制限して、接続に対して選択したオペレーションのみを実行できます。たとえば、ユーザーが test-connection で始まる名前の接続のみを変更できるように制限し、イベントへの登録やスキーマのメタデータの表示など、接続に対するその他の権限を持たないようにすることができます。
準備
Integration Connectors は、Google Cloud の Identity and Access Management(IAM)を使用して、Integration Connectors リソースのロールと権限を管理します。したがって、Integration Connectors リソースに対する IAM の条件を指定または変更する前に、次の IAM コンセプトをよく理解してください。
IAM 条件の追加
IAM 条件を Integration Connectors リソースに追加するには、次の情報が必要です。
- 名前付きリソース URI - Integration Connectors 内のすべてのリソースに一意のリソース URI があります。たとえば、接続リソースの URI は
projects/PROJECT_ID/locations/CONNECTION_LOCATION/connections/{connection_name}です。 使用可能なすべての URI の一覧については、Integration Connectors REST リソースをご覧ください。 リソースに対するアクセス権限をきめ細かいレベルで制御するには、命名規則に従ってリソースに名前を付ける必要があります。ご自分の要件に基づいて、使用する命名規則を決定できます。たとえば、マーケティング チームが所有するすべての接続に接頭辞marketing-を付けることができます。この例では、マーケティング チームの接続のリソース URI は、projects/PROJECT_ID/locations/CONNECTION_LOCATION/connections/marketing-で始まります。 - 親のみの権限 - リソースまたはその子リソースに親のみの権限が必要であるかどうかを確認します。詳細については、親のみの権限をご覧ください。
- リソースタイプ: 条件でリソースタイプをフィルタリングすることで、リソースの範囲をさらに絞り込むことができます。Integration Connectors は、次のリソースの条件をサポートしています。
リソース名 リソースの種類 接続 connectors.googleapis.com/Connection ManagedZone connectors.googleapis.com/ManagedZone EndpointAttachment connectors.googleapis.com/EndpointAttachment EventSubscription connectors.googleapis.com/EventSubscription ConnectionSchemaMetadata connectors.googleapis.com/ConnectionSchemaMetadata
例
次の表は、Integration Connectors ユーザーまたはロールに適用できるサンプル リソース条件の一覧です。
| IAM リソースの条件 | 説明 |
|---|---|
(resource.name.startsWith
("projects/PROJECT_ID/locations/CONNECTION_LOCATION/
connections/marketing-") && resource.type == "connectors.googleapis.com/Connection")
|| (resource.type != "connectors.googleapis.com/Connection"
&& resource.name.extract("/operations/{operation}") == "") |
この条件を適用するユーザーまたはロールは、次のオペレーションのみを実行できます。
ユーザーは、個々の長時間実行オペレーションを表示、キャンセル、削除できません。ユーザーがオペレーションの進行状況を追跡できるようにするには、制限付きユーザーがオペレーションを追跡できるようにするをご覧ください。 |
(resource.name.startsWith
("projects/PROJECT_ID/locations/CONNECTION_LOCATION/
connections/marketing-") && resource.type == "connectors.googleapis.com/Connection") ||
(resource.name.startsWith ("projects/PROJECT_ID/locations/CONNECTION_LOCATION/
connections/marketing-") && resource.type == "connectors.googleapis.com/ConnectionSchemaMetadata")
|| (resource.type != "connectors.googleapis.com/Connection"
&& resource.type != "connectors.googleapis.com/ConnectionSchemaMetadata"
&& resource.name.extract("/operations/{operation}") == "") |
この条件を適用するユーザーまたはロールは、次のオペレーションのみを実行できます。
ユーザーは、個々の長時間実行オペレーションを表示、キャンセル、削除できません。 |
制限付きユーザーにオペレーションの追跡を許可する
上記の例の条件でオペレーションが除外されている場合、制限付きユーザーは、管理が許可されている接続を作成、更新、削除できますが、結果として発生する長時間実行オペレーションのステータスを確認することはできません。制限付きユーザーがオペレーションを追跡する必要がある場合は、connectors.operations.get 権限のみを含む条件なしの別のカスタムロールを付与します。
このロールを持つユーザーは、プロジェクト内のすべてのオペレーションを表示できます。これには、アクセスできない接続のオペレーションも含まれます。これは、ユーザーがすべての接続を一覧表示できるため、すでに表示できる接続情報と同じです。条件によってアクセスが制限されているユーザーに connectors.operations.cancel 権限または connectors.operations.delete 権限を付与しないでください。これらの権限を付与すると、ユーザーはプロジェクト内の任意の接続のオペレーションをキャンセルまたは削除できるようになります。
Application Integration サービス アカウント用の IAM 条件 の追加
Application Integration サービス アカウントに IAM 条件を適用できます。これにより、統合の実行中にサービス アカウントでアクセスできる接続を制限できます。たとえば、名前が marketing- で始まる接続のみにアクセスできるようにサービス アカウントを制限できます。
詳細については、サービス アカウントに IAM 条件を適用するをご覧ください。
次の表は、Application Integration サービス アカウントに適用できるサンプル リソース条件の一覧です。
| IAM リソースの条件 | 説明 |
|---|---|
resource.name.startsWith
("projects/PROJECT_ID/locations/CONNECTION_LOCATION/
connections/marketing-") |
この条件が適用されるサービス アカウントでは、名前が marketing- で始まる接続のみを実行できます。 |
次のステップ
IAM のドキュメントで次の情報を確認します。