3.9.3.6. サービスプリンシパルの作成
OpenShift Container Platform およびそのインストールプログラムは Azure Resource Manager 経由で Microsoft Azure リソースを作成する必要があるため、これを表すサービスプリンシパルを作成する必要があります。
前提条件
- Azure CLI のインストールまたは更新を実行します。
-
jq
パッケージをインストールします。 - Azure アカウントには、使用するサブスクリプションに必要なロールがなければなりません。
手順
Azure CLI にログインします。
$ az login
認証情報を使用して Web コンソールで Azure にログインします。
Azure アカウントでサブスクリプションを使用している場合は、適切なサブスクリプションを使用していることを確認してください。
利用可能なアカウントの一覧を表示し、クラスターに使用するサブスクリプションの
tenantId
の値を記録します。$ az account list --refresh
出力例
[ { "cloudName": "AzureCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", "user": { "name": "you@example.com", "type": "user" } } ]
アクティブなアカウントの詳細を表示し、
tenantId
値が使用するサブスクリプションと一致することを確認します。$ az account show
出力例
{ "environmentName": "AzureCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", 1 "user": { "name": "you@example.com", "type": "user" } }
- 1
tenantId
パラメーターの値が適切なサブスクリプションの UUID であることを確認します。
適切なサブスクリプションを使用していない場合には、アクティブなサブスクリプションを変更します。
$ az account set -s <id> 1
- 1
- 使用する必要のあるサブスクリプションの
id
の値を<id>
の代わりに使用します。
アクティブなサブスクリプションを変更したら、アカウント情報を再度表示します。
$ az account show
出力例
{ "environmentName": "AzureCloud", "id": "33212d16-bdf6-45cb-b038-f6565b61edda", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "8049c7e9-c3de-762d-a54e-dc3f6be6a7ee", "user": { "name": "you@example.com", "type": "user" } }
-
直前の出力の
tenantId
およびid
パラメーターの値を記録します。OpenShift Container Platform のインストール時にこれらの値が必要になります。 アカウントのサービスプリンシパルを作成します。
$ az ad sp create-for-rbac --role Contributor --name <service_principal> 1
- 1
<service_principal>
を、サービスプリンシパルに割り当てる名前に置き換えます。
出力例
Changing "<service_principal>" to a valid URI of "http://<service_principal>", which is the required format used for service principal names Retrying role assignment creation: 1/36 Retrying role assignment creation: 2/36 Retrying role assignment creation: 3/36 Retrying role assignment creation: 4/36 { "appId": "8bd0d04d-0ac2-43a8-928d-705c598c6956", "displayName": "<service_principal>", "name": "http://<service_principal>", "password": "ac461d78-bf4b-4387-ad16-7e32e328aec6", "tenant": "6048c7e9-b2ad-488d-a54e-dc3f6be6a7ee" }
-
直前の出力の
appId
およびpassword
パラメーターの値を記録します。OpenShift Container Platform のインストール時にこれらの値が必要になります。 サービスプリンシパルに追加パーミッションを付与します。
-
クラスターはそのコンポーネントの認証情報を割り当てできるように、
Contributor
およびUser Access Administrator
ロールを常にアプリケーション登録サービスプリンシパルに追加する必要があります。 -
Cloud Credential Operator (CCO) を mint モード で操作するには、アプリケーション登録サービスプリンシパルで
Azure Active Directory Graph/Application.ReadWrite.OwnedBy
API パーミッションも必要です。 - CCO を passthrough モード で操作するには、アプリケーション登録サービスプリンシパルで追加の API パーミッションは必要ありません。
CCO モードの詳細は、Red Hat Operator の参照情報のCloud Credential Operator について参照してください。
User Access Administrator
ロールを割り当てるには、以下のコマンドを実行します。$ az role assignment create --role "User Access Administrator" \ --assignee-object-id $(az ad sp list --filter "appId eq '<appId>'" \ | jq '.[0].id' -r) 1
- 1
<appId>
を、サービスプリンシパルのappId
パラメーター値に置き換えます。
Azure Active Directory Graph
パーミッションを割り当てるには、以下のコマンドを実行します。$ az ad app permission add --id <appId> \ 1 --api 00000002-0000-0000-c000-000000000000 \ --api-permissions 824c81eb-e3f8-4ee6-8f6d-de7f50d565b7=Role
- 1
<appId>
を、サービスプリンシパルのappId
パラメーター値に置き換えます。
出力例
Invoking "az ad app permission grant --id 46d33abc-b8a3-46d8-8c84-f0fd58177435 --api 00000002-0000-0000-c000-000000000000" is needed to make the change effective
このコマンドで付与する特定のパーミッションについての詳細は、GUID Table for Windows Azure Active Directory Permissions を参照してください。
パーミッション要求を承認します。アカウントに Azure Active Directory テナント管理者ロールがない場合は、所属する組織のガイドラインに従い、テナント管理者にパーミッション要求を承認するようにリクエストしてください。
$ az ad app permission grant --id <appId> \ 1 --api 00000002-0000-0000-c000-000000000000
- 1
<appId>
を、サービスプリンシパルのappId
パラメーター値に置き換えます。
-
クラスターはそのコンポーネントの認証情報を割り当てできるように、