はじめに
これまでIBM CloudのGUIでリソース・グループやアクセス・グループを作りユーザーに権限を割り当てていました。これらの作業自動化の検討の一環として、CLIで同じ作業を試してみました。
テストシナリオ
以下の構成をテストシナリオとします。
- Test01-resourceという名前のリソース・グループを作成します。
- Test01-accessという名前のアクセス・グループを作成します。
- Test01-accessに以下のアクセス権限を割り当てます。これらにより、アクセス・グループに追加されたユーザー自身がCode EngineサービスのインスタンスをTest01-resource内に作成し管理可能となります。
- Test01-resourceを範囲としてCode EngineサービスのAdministratorとManagerロールを割り当てます。
- Test01-resourceへのViewerロールを割り当てます。
- Test01-accessへユーザーを追加します。これにより、アクセス・グループの権限をユーザーに割り当てられます。
必要な管理者権限を持つユーザーがibmcloud loginコマンドでログインし操作対象のアカウントが選択されているという前提で、以下の作業を実施します。
リソース・グループ作成
リソース・グループ作成コマンドibmcloud resource group-createを実行します。
% ibmcloud resource group-create Test01-resource
Creating resource group Test01-resource under account (アカウントID) as (実行者のユーザーID)...
OK
Resource group Test01-resource was created.
Resource Group ID: a43d6b01544c465faf1cba85249e65f3
%
アクセス・グループ作成
アクセス・グループ作成コマンドibmcloud iam access-group-createコマンドを実行します。
% ibmcloud iam access-group-create Test01-access -d 'テスト用アクセス・グループ'
Creating access group Test01-access under account (アカウント名) as (実行者のユーザーID)...
OK
Name: Test01-access
ID: AccessGroupId-a9c19a85-6948-490d-83fb-520eb1d0650b
Description: テスト用アクセス・グループ
%
アクセス・グループへのアクセス権限の割り当て
アクセス・グループ・ポリシーを作成するibmcloud iam access-group-policy-createコマンドを実行します。
Code Engine サービスのAdministratorとManagerロールを含むポリシー作成
% ibmcloud iam access-group-policy-create Test01-access --roles Administrator,Manager --service-name codeengine --resource-group-name Test01-resource
Creating policy for access group Test01-access under account (アカウントID) as (実行者のユーザーID)...
OK
Policy 93cc3155-c7c8-4093-a589-38833e114a85 for access group Test01-access was successfully created
Policy ID: 93cc3155-c7c8-4093-a589-38833e114a85
Version: 1-987fd257b86ded495554216305c64496
Roles: Administrator, Manager
Resources:
Resource Group ID a43d6b01544c465faf1cba85249e65f3
Resource Group Name Test01-resource
Service Name codeengine
Memo Policy applies to the resource(s) within the resource group
%
リソース・グループへのViewerロールを含むポリシーの作成
--resource
の値は、リソース・グループ作成時に返ってきたResource Group ID
の値です。
% ibmcloud iam access-group-policy-create Test01-access --roles Viewer --resource-type resource-group --resource a43d6b01544c465faf1cba85249e65f3
Creating policy for access group Test01-access under account (アカウントID) as (実行者のユーザーID)...
OK
Policy afcd0a66-df45-42e6-b97f-0d28e0a359a3 for access group Test01-access was successfully created
Policy ID: afcd0a66-df45-42e6-b97f-0d28e0a359a3
Version: 1-4b3dc04d8c9933c7cb9374258df52825
Roles: Viewer
Resources:
Resource Group ID a43d6b01544c465faf1cba85249e65f3
Resource Group Name Test01-resource
Memo Policy applies to the resource group
%
コマンドのパラメーターについて
このセクションは、ibmcloud iam access-group-policy-create
コマンドに与えるパラメーターについて詳細を説明しています。Code Engine サービスへAdministratorとManagerロールを含むポリシー作成する際に、パラメーターの値がどこから取得できるのか調べてみました。
--service-nameの値
- ibmcloud catalog searchコマンドでIBM CloudのカタログからCode Engineを検索し、カタログ内のIDを調べます。
- ibmcloud catalog entryコマンドでサービスの詳細からName フィールドの値を取り出します。
% ibmcloud catalog search 'Code Engine'
Getting offerings...
OK
Name ID Kind
Code Engine 2ad2fdd0-bba5-11ea-8966-5d6402fed1c7 service
Email Delivery, powered by Sendgrid d1e3f0d2-0f49-ddfd-0eb9-2897b9d3a45d iaas
OSS Record: Code Engine(codeengine) oss.codeengine oss
Annotator for Clinical Data f3a6bad0-297a-11e9-8bc5-bf215cf01ef0 service
%
% ibmcloud catalog entry 2ad2fdd0-bba5-11ea-8966-5d6402fed1c7
Getting catalog entry...
OK
ID Name Kind Group Provider Tags
2ad2fdd0-bba5-11ea-8966-5d6402fed1c7 codeengine service false IBM apidocs_enabled,cbr_enabled,codeengine,containers,fs_ready,ibm_created,ibm_release,rc_compatible,functions,serverless,cde,engne,engene,egnine,financialsector,telecommunications,lifesciences,retail,transportation,support_ibm
%
--rolesの値
サービスにより割り当て可能なロールが異なっています。ibmcloud iam rolesコマンドで、サービスに定義済みのロールを取得できます。
% ibmcloud iam roles --service codeengine
Getting access policy roles of codeengine under account (アカウントのID) as (実行者のユーザーID)...
Display Name Name CRN Description
Manager crn:v1:bluemix:public:iam::::serviceRole:Manager As a manager, you have permissions beyond the writer role to complete privileged actions as defined by the service. In addition, you can create and edit service-specific resources.
Reader crn:v1:bluemix:public:iam::::serviceRole:Reader As a reader, you can perform read-only actions within a service such as viewing service-specific resources.
Writer crn:v1:bluemix:public:iam::::serviceRole:Writer As a writer, you have permissions beyond the reader role, including creating and editing service-specific resources.
Compute Environment Administrator crn:v1:bluemix:public:codeengine::::serviceRole:ComputeEnvironmentAdministrator Can manage Code Engine Compute Environments.
Service Configuration Reader crn:v1:bluemix:public:iam::::role:ConfigReader The ability to read services configuration for Governance management.
Viewer crn:v1:bluemix:public:iam::::role:Viewer As a viewer, you can view service instances, but you can't modify them.
Administrator crn:v1:bluemix:public:iam::::role:Administrator As an administrator, you can perform all platform actions based on the resource this role is being assigned, including assigning access policies to other users.
Operator crn:v1:bluemix:public:iam::::role:Operator As an operator, you can perform platform actions required to configure and operate service instances, such as viewing a service's dashboard.
Editor crn:v1:bluemix:public:iam::::role:Editor As an editor, you can perform all platform actions except for managing the account and assigning access policies.
Key Manager crn:v1:bluemix:public:resource-controller::::role:KeyManager As an key manager, the service can perform platform actions required to manage resource keys, such as creating a new resource key for a resource instance.
%
アクセス・グループへのユーザーの追加
アカウント内の既存ユーザーを追加する場合は、ibmcloud iam access-group-user-addコマンドを実行します。
% ibmcloud iam access-group-user-add Test01-access (追加するユーザーID)
Adding (追加するユーザーID) to access group Test01-access as (追加するユーザーID)...
OK
(追加するユーザーID) added successfully
%
アカウントへのユーザー追加が必要な場合は、ibmcloud account user-inviteコマンドを実行します。
まとめ
この記事ではCLIによるリソース・グループとアクセス・グループの作成、アクセス・グループ・ポリシーの作成とアクセス・グループへのユーザーの追加をテストしました。手順やパラメータはTerraformを使用した操作にも応用できるため、今後テストし自動化手段への適用を検討できると考えられます。