サービス アカウントを使用して、サードパーティ アプリケーションによる VMware Cloud Director へのアクセスを自動化できます。
共有
VMware Cloud Director 10.4.1 以降で、ユーザーに表示されるサービス アカウント情報を制限する場合は、制限付きのサービス アカウント ビュー権限を特定のロールにのみ付与できます。制限付きのサービス アカウント ビュー権限を持つユーザーがサービス アカウントに対して GET 要求を実行すると、応答には、サービス アカウントの softwareId
、softwareVersion
、uri
、および status
が null
として表示されます。
実装
VMware Cloud Director への自動アクセスを提供するために、サービス アカウントでは API トークンを使用します。サービス アカウントは、API ベースのアクセスのみを対象としています。サービス アカウントにアクセス権を付与すると、認証されたクライアント アプリケーションは OAuth 更新トークンである API トークンと、最初の VMware Cloud Director セッションを表すアクセス トークンを受け取ってすぐに使用します。アプリケーションには、VMware Cloud Director での認証用の API トークンが必要です。アクセス トークンは、アプリケーションがサービス アカウントを使用して API 要求を行う際に使用する VMware Cloud Director セッション トークン(JWT トークン)です。アプリケーションのサービス アカウントでは API トークンを使用するため、VMware Cloud Director のユーザー API トークンと同じ制限が適用されます。
サービス アカウントには、「サービス アカウント認証の要求」を使用してアクセス権が付与されます。これにより、トークンを使用する必要があるアプリケーションにのみトークンへのアクセス権が付与され、トークンを使用できるようになります。他のアクターはトークンにアクセスできません。管理者はサービス アカウントに対するアクセス権を管理します。ただし、管理者であっても、アクセス権を付与する実際のトークンにアクセスすることはできません。VMware Cloud Director ではサービス アカウントにトークンのみを提供します。そのために、VMware Cloud Director では既知の標準を使用します。管理者および管理者がトークンを付与するアプリケーションが、付与とトークンの転送を通じて同期されていることを確認するために、アプリケーションのユーザー コードを把握していれば API トークン付与プロセスを開始できます。
ユーザー API トークンとは異なり、サービス アカウントに付与される API トークンは、RFC 6749 セクション 6 に従って、使用するたびにローテーションされます。未使用のサービス アカウントの API トークンは、取り消さない限り期限切れになることはありません。
サービス アカウントに割り当てることができるロールは 1 つのみです。OAuth 準拠の API では、ロールは範囲フィールドを介して、そのロールの名前を含む URL エンコードされた Uniform Resource Name (URN) として伝達されます。URN の形式は urn:vcloud:role:[roleName]
です。URN エンコーディングについては、RFC 8141 を参照してください。
ステータス | 説明 |
---|---|
作成済み | アカウントは作成後に初期状態になります。 |
要求済み | 要求者がデバイス認証要求を使用して開始したアクセスに対する未処理の要求が 1 つ以上あります。 |
付与済み | 管理者が未処理の要求を付与し、サービス アカウントのポーリングと API トークンの取得を待機しています。 |
アクティブ | サービス アカウントが API トークンを取得し、そのトークンを使用して VMware Cloud Director にアクセスできます。 |
制限
サービス アカウントの使用はサードパーティ アプリケーションを対象としているため、サービス アカウントにはいくつかの制限があります。
- ユーザー管理タスクの実行
- API トークンの作成
- 他のサービス アカウントの管理
- ユーザー
- グループ
- ロール
- グローバル ロール
- 権限バンドル
- トークン:管理
- トークン:すべての管理
マルチサイト
VMware Cloud Director 10.4.1 以降では、サービス アカウントはマルチサイト機能を使用して、地理的に分散された複数の VMware Cloud Director インストール環境またはサーバ グループとその組織を単一エンティティとして管理および監視できます。詳細についてはマルチサイト展開の構成と管理を参照してください。サービス アカウントが、認証の対象となる組織とは異なる組織に要求を行う場合は、サービス アカウントが関連付けられた組織に存在し、同じ名前とソフトウェア ID を保持していることを確認します。要求を満たす必要がある組織の名前を指定する X-VMWARE-VCLOUD-AUTH-CONTEXT ヘッダーも含める必要があります。マルチサイト デプロイの構成および管理の詳細については、VMware Cloud Director API プログラミング ガイドを参照してください。
VMware Cloud Director Service Provider Admin Portal を使用したサービス アカウントの作成
Service Provider Admin Portalを使用して、VMware Cloud Director への自動アクセス用のアカウントを作成できます。
手順
結果
Created
というステータスで表示されます。
例
VMware Cloud Director API を使用してサービス アカウントを作成することもできます。API 要求では、ユーザー API トークンの作成時と同じ API エンドポイントが使用されますが、software_id
フィールドがある場合は、サービス アカウントを作成する目的が示されます。
POST /oauth/provider/register Accept:application/json Content-Type:application/json Authorization:Bearer eyJhbGciOiJSUzI...7g7rA Body: { "client_name": "exampleServiceAccount", "software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", "scope": "urn:vcloud:role:System%20Administrator", "client_uri": "https://www.companyname.com", "software_version": "1.0" }
{ "client_name": "exampleServiceAccount", "client_id": "734e3845-1573-4f07-9b6c-b493c9042187", "grant_types": [ "urn:ietf:params:oauth:grant-type:device_code" ], "token_endpoint_auth_method": "none", "client_uri": "https://www.company_name.com", "software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", "software_version": "1.0", "scope": "urn:vcloud:role:System%20Administrator" }
次のタスク
VMware Cloud Director Service Provider Admin Portal を使用したサービス アカウントへのアクセス権の付与
サービス アカウントを作成した後に、アプリケーションがアクセス トークンを受け取るための認証を要求した場合は、VMware Cloud Director Service Provider Admin Portalを使用してトークンを付与できます。
Created
に戻り、手順を再度開始する必要があります。
前提条件
- Service Provider Admin Portalのサービス アカウントの詳細からクライアント ID をコピーします。
- アカウントを要求しているアプリケーションが https://site.cloud.example.com/oauth/provider/device_authorization API エンドポイントに OAuth 2.0 Device Authorization Grant RFC 準拠の要求を行っていることを確認します。デバイス認証要求の詳細については、RFC 8628 セクション 3.1を参照してください。
キー 値 client_ID
Generated_Client_ID
アプリケーションからアクセスが要求された場合、Service Provider Admin Portalのサービス アカウントのステータスは
Requested
に変化します。アプリケーションは、デバイス コード、ユーザー コード、およびいくつかの追加情報を受け取ります。要求の例:POST /oauth/provider/device_authorization Accept:application/json Content-Type: application/x-www-form-urlencoded Body: client_id=734e3845-1573-4f07-9b6c-b493c9042187
応答の例:{ "device_code": "tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw", "user_code": "3VL8-SQVJ", "verification_uri": "https://[VCD]/provider/administration/access-control/service-accounts", "expires_in": 3600, "interval": 60 }
デバイスでは、RFC に従って、上記の応答
/oauth/provider/token
で指定された頻度(秒単位)でポーリングを実行する必要があります。デバイスでは、VMware Cloud Director からトークンを受け取るまで、または要求がタイムアウトになるまで、デバイス コードを使用する必要があります。要求の例:POST: /oauth/provider/token Accept:application/json Content-Type: application/x-www-form-urlencoded Body: client_id= 734e3845-1573-4f07-9b6c-b493c9042187&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code&device_code=tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw
付与前の応答の例:{ "error": "authorization_pending", "error_description": "Device authorization request pending", "error_uri": null, "minorErrorCode": "authorization_pending", "message": "Device authorization request pending", "stackTrace": null }
付与後の応答の例:{ "access_token": "eyJhbGciOiJSU…HqJaDud1sVA", "token_type": "Bearer", "expires_in": 2592000, "refresh_token": "SsybukUed8SBP2p1AaFiGJhrntQNWZVX" }
アクセス要求の確認または拒否をしなかった場合、ユーザー コードがタイムアウトになります。タイムアウト期間は、デバイス認証要求の応答に表示されます。
VMware Cloud Director では、アプリケーションと管理者が相互に対応するデバイス コードとユーザー コードを使用する場合にのみ、アプリケーションにプライマリ API トークンを付与します。
- アプリケーションからユーザー コードを取得します。手順 4 でこのコードを入力する必要があります。
手順
結果
サービス要求のステータスが Granted
に変化します。VMware Cloud Director では、サービス アカウントにリンクされているアプリケーションに、API トークンの形式でプライマリ API トークンを付与します。RFC の規定により、応答に含まれるのは、サービス アカウントがすぐに使用できる、ユーザー セッションを表す OAuth アクセス トークンです。アプリケーションで OAuth アクセス トークンをすぐに使用しない場合、構成されたアイドル セッション タイムアウトに従ってセッションがタイムアウトになります。サービス アカウントが明示的にログアウトする場合もあります。これが推奨されるのは、セキュリティ上の理由のほか、サービス アカウントが VMware Cloud Director に対する API 呼び出しを行うために適したテスト実行を提供するためです。アプリケーションが API トークンを取得すると、ステータスは Active
に変化します。
次のタスク
- 割り当てられたサービス アカウント ロール、ソフトウェア ID、ソフトウェア バージョン、クライアント URI、または割り当ての制限を変更するには、サービス アカウントを選択して、[サービス アカウントの編集] をクリックします。変更は次回のトークン更新時に有効になります。
- サービス アカウントに対するアクセス権を取り消して、付与された API トークンを無効にするには、[更新] をクリックします。VMware Cloud Director は、すべてのアクティブなセッションを終了します。API トークンを取り消してもサービス アカウントは削除されませんが、アカウントのステータスは
Created
に変化します。アプリケーションがすでに再度アクセスを要求している場合、サービス アカウントのステータスはRequested
に変化します。サービス アカウントのステータスをActive
にするには、この手順を再度実行してサービス アカウントにアクセス権を付与する必要があります。