サービス・バインディングのアクセス権限の構成
Code Engine のサービス・バインディングは、 IBM Cloud サービスにアクセスするためにサービスIDを使用する。 サービスIDには、 Code Engine プロジェクトの代わりにサービスインスタンスと通信するための認証情報が含まれています。 サービス・インスタンスを Code Engine ワークロードにバインドする前に、 Code Engine に自動的にサービス ID を作成して管理してもらうか、管理するサービス ID を使用するかに基づいて、バインドのためのアクセスを設定する必要があります。
プロジェクトのすべてのユーザーがサービス・バインディングを作成および削除できるようにプロジェクトを構成する必要がありますか? 十分な許可があれば、コンソールの「プロジェクト統合 (Project integrations)」ページを使用して、単一ページからサービス・バインディング操作を構成できます。 これらのアクションを実行するための十分な権限がない場合は、このページを使用して、必要な権限を理解することができます。 プロジェクト全体の設定の構成 を参照してください。
アプリ、ジョブ、または関数を特定の IBM Cloud サービス・インスタンスにバインドする前に、 独自のサービス ID を作成して管理する か、 Code Engine サービスで自動的に ID を作成して管理するかを決定します。 選択に基づいて、適切なアクセス・ポリシーを割り当てます。 Code Engine では、プロジェクトごとに 1 つのサービス ID を使用してサービス・バインディングを処理します。
-
Code Engine で自動的にサービス ID を作成して管理する場合は、 デフォルトのサービス・バインディング・アクセス・ポリシー を構成します。 Code Engine プロジェクトで使用される IBM Cloud アカウントに適切なアクセス・ポリシーが割り当てられていることを確認します。
- Code Engine プロジェクトが、バインド先のサービス・インスタンスと 同じ リソース・グループ内にある場合は、 デフォルトのサービス・バインディング・アクセス・ポリシー を構成する必要があります。
- Code Engine プロジェクトが、バインド先のサービス・インスタンスの 異なる リソース・グループ内にある場合は、サービス・バインディングのサービス ID を自動的に作成および管理するように デフォルトのサービス・バインディング・アクセス・ポリシー for Code Engine を構成する必要があり、 別のリソース・グループにサービスをバインドするようにプロジェクトを構成する を行う必要があります。
-
アクセス・ポリシーをより詳細に制御したい場合は、サービス・インスタンスで構成されている サービス・バインディングにカスタム・サービス ID を使用する ことを選択できます。 この場合は、カスタム・サービス ID にアクセス・ポリシーを割り当てます。 カスタム・サービス ID を使用するようにプロジェクトを構成する必要があります。
デフォルトのサービスバインディングアクセスポリシーの使用
デフォルトでは、プロジェクトで使用されるアカウントに十分な許可がある場合、 Code Engine は、 Code Engine プロジェクトのリソース・グループ内のすべてのサービスにアクセスするためのサービス ID を自動的に作成します。 サービス ID は、最初のサービス・バインディング操作中に作成されます。
Code Engine プロジェクトがバインド先のサービス・インスタンスとして 同じ リソース・グループ内にある場合に、デフォルトのサービス・バインディング・アクセス・ポリシーを使用するには、 サービス・バインディングのサービス ID を自動的に作成および管理するための Code Engine のアクセス権限の構成。
サービス・バインディングのサービス ID を自動的に作成および管理するための Code Engine のアクセス権限の構成
サービス・インスタンスが Code Engine プロジェクトと同じリソース・グループ内にあり、 Code Engine がサービス・バインディングのサービス ID を自動的に作成して管理するようにしたい場合、 Code Engine プロジェクトで使用する IBM Cloud アカウントには、少なくとも Writer サービス・アクセス権限と Operator プラットフォーム・アクセス権限が必要です。
アカウントにこれらの許可が設定されている場合、サービス・バインディングを作成すると、 Code Engine は、 Code Engine プロジェクトのリソース・グループ内のすべてのサービスに対して、 Operator および Manager アクセス権限を持つサービス ID を検査して自動的にセットアップします。 Code Engine は、このサービス ID を使用して、サービス・バインディングによって IBM Cloud
サービスにアクセスします。
Code Engine がプロジェクトのサービス・バインディングに使用されるサービス ID を作成するたびに、このサービス ID が同じプロジェクト内の後続のサービス・バインディングで再使用されます。ただし、 project update CLI コマンドを 別のリソース・グループにサービスをバインドするようにプロジェクトを構成する に対して実行する場合、または project update CLI コマンドを実行して Code Engine サービス・バインディングのアクセス許可を持つカスタム・サービス ID を使用する場合を除きます。
例えば、 Code Engine で IBM Cloudant サービス・インスタンスのサービス・バインディングのサービス ID を自動的に作成して管理するとします。 また、 Code Engine プロジェクトと IBM Cloudant サービス・インスタンスで使用される my-user アカウントが両方とも同じリソース・グループ内にあるとします。
以下のステップでは、 Code Engine が my-user のサービス・バインディングのサービス ID を自動的に作成して管理できるように、必要なアクセス許可をセットアップする 1 つの方法について説明します。 サービス・インスタンスのアカウント所有者は、以下のステップを実行して、 my-user の許可を割り当てます。
-
Code Engine サービス・バインディングを作成するユーザーの IAM リソース・グループを作成します。
- アクセス(IAM)の概要を起動します。
- 「管理」 > 「アカウント」 > 「リソース・グループ」 > 「リソース・グループの作成」 を選択します。
- リソース・グループを作成します (例:
CodeEngine_servicebindings_resourcegroup)。
-
バインド先のサービス・インスタンスを同じリソース・グループ内に作成します。 この例では、
CodeEngine_servicebindings_resource groupリソース・グループに IBM Cloudant サービス・インスタンスを作成します。 -
Code Engine サービス・バインディングを作成するユーザーの IAM アクセス・グループを作成します。
-
アクセス(IAM)の概要を起動します。
-
「管理」 > 「アクセス (IAM)」 > 「アクセス・グループ」 を選択します。
-
グループを作成します (例:
CodeEngine_servicebindings_accessgroup)。 -
この新規アクセス・グループ内から、 「アクセス」 タブをクリックし、以下の 2 つのアクセス・ポリシーをアクセス・グループに割り当てます。 最初のアクセス・ポリシーの場合:
- 「サービス」では、「
All Identity and Access enabled services」を選択してください。 - リソースの場合は、前のステップで作成した特定のリソース・グループ (例えば、
CodeEngine_servicebindings_resourcegroup) を選択します。 - リソース・グループ・アクセスの場合は、
Viewerを選択します。 - 役割とアクションについては、
Administratorのプラットフォーム・アクセス権限を選択します。 - 「追加」 をクリックして、このアクセス・グループにアクセス・ポリシーを追加します。
- 「サービス」では、「
-
このアクセス・グループに 2 番目のアクセス・ポリシーを割り当てます。
- 「サービス」では、「
Code Engine」を選択してください。 - リソースの場合は、前のステップで作成した特定のリソース・グループ (例えば、
CodeEngine_servicebindings_resourcegroup) を選択します。 - リソース・グループ・アクセスの場合は、
Viewerを選択します。 - 役割とアクションについては、「
Writerのサービス・アクセス」と「Operatorのプラットフォーム・アクセス」を選択します。 - 「追加」 をクリックして、このアクセス・グループにアクセス・ポリシーを追加します。
- 「サービス」では、「
-
「割り当て」 をクリックして、このアクセス・グループにアクセス・ポリシーを割り当てます。
-
-
my-userユーザーをこのアクセス・グループに追加します。
これで、 Code Engine でサービス・バインディングを作成する準備ができました。ここで、 Code Engine は、指定されたサービス・インスタンスに対するサービス資格情報を作成するための十分な権限を持つサービス ID を自動的に作成します。 アプリ、ジョブ、または機能のワークロードへのサービス・インスタンスのバインド を参照してください。
別のリソース・グループ内のサービスをバインドするためのプロジェクトの構成
デフォルトでは、プロジェクトで使用されるアカウントに十分な許可がある場合、 Code Engine は、 Code Engine プロジェクトのリソース・グループ内のすべてのサービスにアクセスするためのサービス ID を自動的に作成します。 サービス ID は、最初のサービス・バインディング操作中に作成されます。
ただし、 Code Engine ワークロードにバインドする IBM Cloud サービス・インスタンスが、ワークロードの Code Engine プロジェクトのリソース・グループよりも 異なる リソース・グループ内にあり、 Code Engine にサービス・バインディングのサービス ID を自動的に作成して管理させる場合は、サービス・バインディングを作成する前に以下のアクションを実行する必要があります。
- サービス・バインディングのサービス ID を自動的に作成および管理するように Code Engine のアクセスを構成します。
- 他のリソース・グループ内のサービス・インスタンスにアクセスするようにプロジェクトを更新します。
例えば、 Code Engine プロジェクトが Default リソース・グループ内にあり、 dev リソース・グループ内に存在するサービス・インスタンスにバインドする場合は、 Code Engine が他のリソース・グループ内のサービス・インスタンスにアクセスできるように Code Engine プロジェクトを更新する必要があります。
他のリソース・グループ内のサービス・インスタンスにアクセスするためのプロジェクトの更新
バインド先のリソースが別のリソース・グループ内にある場合は、別のリソース・グループ内のリソースにアクセスできるように、CLI を使用して Code Engine プロジェクトを構成します。 ibmcloud ce project update コマンドを使用し、 --binding-resource-group オプションを指定して、リソース・グループ内のすべてのサービス・インスタンスのサービス・バインディング・アクセス用に Code Engine プロジェクトを構成します。 このコマンドは、バインド先のリソース・グループを Code Engine プロジェクトに通知します。 プロジェクトを更新してサービスを別のリソース・グループにバインドするには、CLI を使用する必要があります。
この project update このコマンドは、現在のコンテキストとして選択されているプロジェクト内で動作します。 コマンドを使う前に project update コマンドを使う前に、目的のプロジェクトにいることを確認する。 ibmcloud ce project current コマンドを使用して、現在ターゲットになっているプロジェクトの詳細を表示します。 必要に応じて、 ibmcloud ce project select コマンドを使用して、プロジェクトを現在のコンテキストとして選択してください。
-
デフォルトのリソース・グループ内のすべてのサービス・インスタンスのサービス・バインディングのアクセスを構成するには、次のようにします。
ibmcloud ce project update --binding-resource-group Default -
リソース・グループの ID を指定して、リソース・グループ内のすべてのサービス・インスタンスのサービス・バインディング・アクセスを構成するには、以下のようにします。
ibmcloud ce project update --binding-resource-group-id abcdabcdabcdabcdabcdabcdabcdabcdリソース・グループ ID を含むリソース・グループのリストを取得するには、
ibmcloud resource groupsを実行します。 -
すべてのリソースグループ内のすべてのサービスインスタンスに対して、サービスバインディングへのアクセスを設定するには:
ibmcloud ce project update --binding-resource-group "*"
project update コマンドを実行すると、プロジェクト用のサービスIDが作成され、これを使用して現在のプロジェクトのサービスバインディングが設定されます。 このサービス ID を作成する権限がない場合は、プロジェクトでサービス・バインディングを処理する準備ができていないというエラーを受け取ります。 アクセス・ポリシーについてアカウント管理者に問い合わせるか、 サービス・バインディングのサービス ID を自動的に作成して管理するために Code Engine のアクセス権限を構成する ように管理者に依頼してください。
サービス・バインディングでのカスタム・サービス ID の使用
アクセス・ポリシーまたはリソース・グループをさらに制御したい場合は、サービス・インスタンスのカスタム・サービス ID を作成できます。
アカウント所有者が、 Code Engine がサービスのサービス ID バインディングを自動的に作成して管理するために必要となる、リソース・グループ内の 「すべての ID およびアクセス対応サービス (All Identity and Access enabled services)」 に対する Administrator アクセス権限をユーザーに付与しない場合は、特定のサービス・インスタンスにアクセスするためにカスタム・サービス
ID を使用することを選択できます。 アカウント所有者は、ユーザー・アクセスのスコープを特定のサービス・タイプまたはサービス・インスタンスに設定することができます。 このような場合は、カスタム・サービス ID がこのコントロールを提供します。
サービス・バインディングにカスタム・サービス ID を使用するには、以下のようにします。
Code Engine サービス・バインディングに対するアクセス権を持つカスタム・サービス ID を作成する
カスタム・サービス ID を使用する場合は、このサービス ID がサービス・バインディングのサービス資格情報を作成できるように、カスタム・サービス ID に Operator プラットフォーム・アクセス権限を付与する必要があります。
例えば、 Code Engine ワークロードを IBM Cloudant サービス・インスタンスにバインドするサービス・バインディングを作成するとします。 ただし、リソース・グループ内のすべての 「すべての ID およびアクセス対応サービス」 に対する Administrator アクセス権限をユーザーに付与する必要はありません。 ただし、 IBM Cloudantの特定のインスタンスに対するアクセス権限をユーザーに付与する必要があります。
以下のステップでは、 Code Engine が my-user のサービス・バインディングを作成できるように、必要なアクセス許可を持つカスタム・サービス ID をセットアップする 1 つの方法について説明します。 サービス・インスタンスのアカウント所有者は、以下のステップを実行してカスタム・サービス ID を作成します。
-
Code Engine サービス・バインディングを作成するユーザーの IAM リソース・グループを作成します。
- アクセス(IAM)の概要を起動します。
- 「管理」 > 「アカウント」 > 「リソース・グループ」 > 「リソース・グループの作成」 を選択します。
- リソース・グループを作成します (例:
CodeEngine_servicebindings_resourcegroup)。
-
バインド先のサービス・インスタンスを同じリソース・グループ内に作成します。 この例では、
CodeEngine_servicebindings_resource groupリソース・グループに IBM Cloudant サービス・インスタンスを作成します。 -
Code Engine サービス・バインディングを作成するユーザーの IAM アクセス・グループを作成します。
- アクセス(IAM)の概要を起動します。
- 「管理」 > 「アクセス (IAM)」 > 「アクセス・グループ」 を選択します。
- グループを作成します (例:
CodeEngine_servicebindings_accessgroup)。 - この新規アクセス・グループ内から、 「アクセス」 タブをクリックし、 Code Engine サービスに以下のアクセス・ポリシーを割り当てます。
- サービスについては、 Code Engine を選択します。
- リソースの場合は、前のステップで作成した特定のリソース・グループ (例えば、
CodeEngine_servicebindings_resourcegroup) を選択します。 - リソース・グループ・アクセスの場合は、
Viewerを選択します。 - 役割とアクションについては、「
Writerのサービス・アクセス」と「Operatorのプラットフォーム・アクセス」を選択します。 - 「追加」 をクリックして、このアクセス・グループにアクセス・ポリシーを追加します。
- 「割り当て」 をクリックして、このアクセス・グループにアクセス・ポリシーを割り当てます。
- バインド先のサービス・インスタンスを同じリソース・グループ内に作成します。 この例では、
CodeEngine_servicebindings_resource groupリソース・グループに IBM Cloudant サービス・インスタンスを作成します。
-
my-userユーザーをこのアクセス・グループに追加します。 -
バインド先のサービス・インスタンスのサービス ID を作成します。
- アクセス(IAM)の概要を起動します。
- 「管理」 > 「アクセス (IAM)」 > 「サービス ID」 を選択します。
- サービス ID を作成します (例:
CodeEngine_servicebindings_serviceid)。 - この新規サービス ID 内から、 「グループの割り当て」 をクリックします。 「アクセス権限の割り当て」ページで、 「アクセス・ポリシー」 を選択します。 「アクセス・グループ」 は選択しないでください。 以下のアクセス・ポリシーを割り当てます。
- サービスの場合は、バインド先のサービス・インスタンスを選択します (例: IBM Cloudant サービス・インスタンス)。
- リソースの場合は、このサービスへのサービス・バインディングを作成できるユーザー用に作成した特定のリソース・グループを選択します。
- リソース・グループ・アクセスの場合は、
Viewerを選択します。 - 役割とアクションについては、「
Managerのサービス・アクセス」と「Operatorのプラットフォーム・アクセス」を選択します。 - 「追加」 をクリックして、このサービス ID にアクセス・ポリシーを追加します。
- 「割り当て」 をクリックして、このサービス ID にアクセス・ポリシーを割り当てます。
サービス・バインディング用のカスタム・サービス ID を取得したので、そのカスタム・サービス ID を使用するように Code Engine プロジェクトを構成する必要があります。
カスタム・サービス ID を使用するためのプロジェクトの構成
管理対象のカスタム・サービス ID を使用するようにサービス・バインディングの Code Engine プロジェクトを構成するには、 ibmcloud ce project update CLI コマンドを使用して --binding-service-id オプションを指定します。 CLI でのみカスタム・サービス ID を使用するようにプロジェクトを更新できます。
この project update このコマンドは、現在のコンテキストとして選択されているプロジェクト内で動作します。 コマンドを使う前に project update コマンドを使う前に、目的のプロジェクトにいることを確認する。 ibmcloud ce project current コマンドを使用して、現在ターゲットになっているプロジェクトの詳細を表示します。 必要に応じて、 ibmcloud ce project select コマンドを使用して、プロジェクトを現在のコンテキストとして選択してください。
-
コンソールのサービス ID ページで [詳細] をクリックするか、
ibmcloud iam service-idsという CLI コマンドを実行して、カスタムサービスの ID を確認してください。 -
ibmcloud ce project updateコマンドを実行します。 たとえば、サービス ID が「ServiceId-12a3456b-c78d-901e-f2a3b4cabcde」の場合:ibmcloud ce project update --binding-service-id ServiceId-12a3456b-c78d-901e-f2a3b4cabcde
project update --binding-service-id コマンドを実行するたびに、 Code Engine は既存のサービス ID を置き換え、このサービス ID をサービス・バインディングに使用します。
次のステップ
サービス・バインディングへのアクセスが構成されたので、 サービス・インスタンスをアプリ、ジョブ、または機能のワークロードにバインド する準備ができました。