企業がクラウドへ移行するに伴い、オンプレミス環境のアカウントを同期することは、メンテナンスコストの削減において極めて重要です。Alibaba Cloud では、System for Cross-domain Identity Management (SCIM) プロトコルと Open Authorization (OAuth) を活用して、お客様のオンプレミスシステムから Resource Access Management (RAM) へアカウントデータを同期できます。
前提条件
このトピックで説明する RAM コンソール内のすべての操作は、RAM 管理者または OAuth 管理権限を持つ RAM ユーザーとして実行することを推奨します。
背景情報
System for Cross-domain Identity Management (SCIM) は、マルチテナント型クラウドアプリケーションにおけるユーザー ID 管理のためのプロトコルです。SCIM 2.0 はオブジェクトモデルに基づいて構築されており、すべての SCIM オブジェクトはコアとなる
Resourceを基盤としています。このResourceには、id、externalId、およびmetaの属性があります。RFC 7643 では、User、Group、EnterpriseUserなどの拡張が定義されています。本トピックでは、Userオブジェクトを用いてユーザー情報を同期します。Open Authorization (OAuth) は、アクセス委任のためのオープン標準です。これにより、第三者アプリケーションがユーザーの認証情報を公開せずに、ユーザーのリソースにアクセスできます。Alibaba Cloud では、Web アプリケーション、ネイティブアプリケーション、サーバーアプリケーション の 3 種類の OAuth アプリケーションをサポートしています。Web アプリケーション および ネイティブアプリケーション では 3-legged OAuth を、サーバーアプリケーション では 2-legged OAuth を使用します。SCIM では、主に 2-legged OAuth 機構を用いてクライアントアプリケーションと API サービスプロバイダー間の通信を認可し、データ同期を実現します。OAuth の詳細については、「OAuth 2.0」および「OAuth アプリケーションの概要」をご参照ください。
Alibaba Cloud SCIM エンドポイント:
https://scim.aliyun.com。Alibaba Cloud OAuth エンドポイント(アクセストークン取得用):
https://oauth.aliyun.com/v1/token。
ステップ 1:OAuth アプリケーションの作成と承認
RAM コンソールに Alibaba Cloud アカウントでログインします。
左側のナビゲーションウィンドウで、OAuth プレビュー をクリックします。
エンタープライズアプリケーション タブで、アプリケーションの作成 をクリックします。
アプリケーションタイプ を サーバーアプリケーション に設定します。「OAuth アプリケーションの作成」をご参照ください。
サーバーアプリケーションを作成後、その詳細ページよりアプリケーション ID(client_id)を確認します。
アプリケーション名をクリックし、OAuth スコープ タブで、OAuth スコープの追加 をクリックします。
OAuth スコープ には /acs/scim を選択します。「OAuth スコープの管理」をご参照ください。
OAuth アプリケーションを承認します。
OAuth スコープ タブで、承認 をクリックします。
サードパーティアプリケーションの承認 ページで、クロスドメイン ID 管理へのアクセス を選択し、承認 をクリックします。
アプリケーションシークレット タブで、シークレットの作成 をクリックしてアプリケーションシークレットを作成します。
重要アプリケーションシークレット(AppSecretValue)は、作成時にのみ表示されます。安全な場所に保存してください。
ステップ 2:アカウントデータの同期
One Identity などのクライアント、または SCIM API を使用してアカウントデータを同期できます。
クライアント:クライアント(例:One Identity)で SCIM 設定を構成し、それを用いてアカウントデータを同期できます。「One Identity ドキュメント」をご参照ください。
SCIM API:SCIM API を使用して、オンプレミス環境のアカウントを RAM ユーザーにマップします。API では、以下の RAM ユーザー属性に対する作成、クエリ、変更、削除操作をサポートしています:
id:RAM ユーザーの ID。この ID はグローバルに一意であり、サーバーによって生成されます。externalId:RAM ユーザーの外部キー。クライアントがこの ID を指定することで、Alibaba Cloud 上の RAM ユーザーとお客様のオンプレミスシステム上のユーザーを関連付けます。説明RAM コンソールで作成された RAM ユーザーには、
externalId属性はありません。userName:RAM ユーザー名。この名前はユーザー単位で一意であり、クライアントが指定します。displayName:RAM ユーザーの表示名。この名前はクライアントが指定します。
以下に、Alibaba Cloud SCIM API を使用したアカウントデータの同期手順を示します。
承認済みのサーバーアプリケーションのアプリケーション ID(
client_id)およびアプリケーションシークレット(AppSecretValue)を取得します。client_id:アプリケーション ID。「ステップ 1:OAuth アプリケーションの作成と承認」の手順を参照してください。
AppSecretValue:アプリケーションシークレット。「ステップ 1:OAuth アプリケーションの作成と承認」の手順を参照してください。
https://oauth.aliyun.com/v1/tokenに、client_idおよびAppSecretValueを使用してアクセスし、access tokenを取得します。Authorizationヘッダーは、"Authorization: Basic Base64Encode(client_id:AppSecretValue)"の形式である必要があります。たとえば、client_idがcid、AppSecretValueが123456の場合、ヘッダーは"Authorization: Basic Y2lkOjEyMzQ1Ng=="となります。リクエスト例:
curl --location --request POST --header "Authorization: Basic Y2lkOjEyMzQ1Ng==" https://oauth.aliyun.com/v1/token?grant_type=client_credentials&client_id=463790568674183****応答例:
{ "scope": "/acs/scim", "request_id": "8dc768e0-d6fe-4f52-a788-05631dd6c584", "access_token": "eyJ***hKg", "token_type": "Bearer", "expires_in": "3599" }Alibaba Cloud SCIM がサポートする
ResourceTypeおよびSchemaをクエリします。サポートされる
ResourceTypeのクエリ:curl --location --request GET 'https://scim.aliyun.com/ResourceTypes'サポートされる
Schemaのクエリ:curl --location --request GET 'https://scim.aliyun.com/Schemas'RAM ユーザーの作成、クエリ、変更、削除を行います。
RAM ユーザーの作成
RAM ユーザーを作成するには、お客様のオンプレミスシステムのアカウント情報をもとに、RAM ユーザー名(
userName)、表示名(displayName)、および外部キー(externalId)を指定します。リクエスト例:
curl --location --request POST 'https://scim.aliyun.com/Users' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json' \ --data-raw '{ "displayName": "j2gg0s_****", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "userName": "j2gg0screatedbyscim_exa****" }'応答例:
{ "displayName": "j2gg0s_****", "meta": { "created": "2020-02-14T03:58:59Z", "location": "https://scim.aliyun.com/Users/27648498165273****", "lastModified": "2020-02-14T03:58:59Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27648498165273****", "userName": "j2gg0screatedbyscim_exa****" }特定の RAM ユーザーのクエリ
GET /Users/{id}を使用して、idで RAM ユーザーをクエリします。GET /Users?filter=externalId eq xxxを使用して、externalIdで RAM ユーザーをクエリします。GET /Users?filter=userName eq xxxを使用して、userNameで RAM ユーザーをクエリします。以下のコードはリクエストおよび応答の例です。リクエスト例:
curl --location --request GET 'https://scim.aliyun.com/Users?filter=userName%20eq%20%22j2gg0screatedbyscim****%22' \ --header 'Authorization: Bearer eyJ***hKg'応答例:
{ "startIndex": 1, "totalResults": 1, "itemsPerPage": 30, "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "Resources": [ { "displayName": "j2gg0screatedbyscim****", "meta": { "created": "2019-12-11T01:53:19Z", "location": "https://scim.aliyun.com/Users/27769827602919****", "lastModified": "2019-12-11T02:10:39Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27769827602919****", "userName": "j2gg0screatedbyscim****" } ] }説明SCIM フィルターについて、Alibaba Cloud では、
id、userName、およびexternalId属性に対して、andおよびeqのみをサポートしています。
RAM ユーザーの属性の変更
リクエスト例:
curl --location --request PUT 'https://scim.aliyun.com/Users/27648498165273****' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json' \ --data-raw '{ "displayName": "j2gg0s_new_****", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "userName": "j2gg0screatedbyscim_new_exa****" }'応答例:
{ "displayName": "j2gg0s_new_****", "meta": { "created": "2020-02-14T03:58:59Z", "location": "https://scim.aliyun.com/Users/27648498165273****", "lastModified": "2020-02-14T04:03:55Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27648498165273****", "userName": "j2gg0screatedbyscim_new_exa****"}RAM ユーザーの削除
リクエスト例:
curl --location --request DELETE 'https://scim.aliyun.com/Users/27648498165273****' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json'HTTP ステータスコード 204 が返された場合、RAM ユーザーの削除が正常に完了しています。
説明Alibaba Cloud では、現在ソフト削除はサポートされていません。お客様のシステムでソフト削除がサポートされている場合は、Alibaba Cloud へのデータ同期前に、ソフト削除をハード削除にマップしてください。