すべてのプロダクト
Search
ドキュメントセンター

Resource Access Management:社内システムのアカウントを SCIM に基づいて RAM に同期する

最終更新日:Apr 22, 2025

メンテナンスと管理コストを削減するために、企業は一連のルールに基づいて、社内システムの既存アカウントをクラウドに同期できます。Alibaba Cloud は、System for Cross-domain Identity Management(SCIM)および Open Authorization(OAuth)アプリケーションのセキュリティ認証に基づいて、企業の社内システムから Resource Access Management(RAM)にユーザー情報を同期できます。

前提条件

  • 管理権限を持つ RAM ユーザー、または OAuth 管理権限を持つ RAM ユーザーを使用して、RAM コンソールで操作を実行することをお勧めします。

背景情報

  • SCIM は、クラウドベースのアプリケーションとサービスでユーザー ID を管理するために使用されるプロトコルです。SCIM 2.0 は、リソースを共通項とし、すべての SCIM オブジェクトがリソースから派生するオブジェクトモデル上に構築されています。リソースには、id、externalId、および meta 属性が含まれています。RFC 7643 は、共通属性を拡張した User、Group、および EnterpriseUser を定義しています。このトピックでは、User 属性を使用してユーザー情報を同期します。 RFC 7643 の詳細については、「RFC 7643」をご参照ください。

  • OAuth は、ユーザーリソースの認証のための安全でオープンなシンプルな標準を定義しています。サードパーティは、ユーザーのユーザー名とパスワードを取得することなく、ユーザーに関する認証情報を取得できます。OAuth は、[Web アプリケーション][ネイティブアプリケーション][サーバーアプリケーション] のアプリケーションタイプをサポートしています。[Web アプリケーション][ネイティブアプリケーション] は 3-legged OAuth を使用します。[サーバーアプリケーション] は 2-legged OAuth を使用します。SCIM は 2-legged OAuth を使用して、アプリケーション(コンシューマー)と API(サービスプロバイダー)間の認証を完了します。その後、アプリケーションは API を呼び出してデータを同期できます。 OAuth の詳細については、「OAuth 2.0」および「概要」をご参照ください。

  • Alibaba Cloud SCIM エンドポイント: https://scim.aliyun.com

  • OAuth を使用してアクセストークン(access_token)を取得するために使用されるエンドポイント: https://oauth.aliyun.com/v1/token

ステップ 1: OAuth アプリケーションを作成して承認する

  1. Alibaba Cloud アカウントを使用して、RAM コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、[OAuth プレビュー] をクリックします。

  3. [エンタープライズアプリケーション] タブで、[アプリケーションの作成] をクリックして OAuth アプリケーションを作成します。

    表示されるページで、[アプリケーションタイプ][サーバーアプリケーション] に設定します。詳細については、「アプリケーションを作成する」をご参照ください。

    サーバーアプリケーションが作成されると、アプリケーションの詳細ページでアプリケーション ID(client_id)を取得できます。

  4. アプリケーションの名前をクリックします。 [OAuth スコープ] タブで、[OAuth スコープの追加] をクリックしてスコープを追加します。

    表示されるパネルで、[すべての OAuth スコープ] セクションの [/acs/scim] を選択します。詳細については、「OAuth スコープを追加する」をご参照ください。

  5. OAuth アプリケーションを承認します。

    1. [OAuth スコープ] タブで、[承認] をクリックします。

    2. [サードパーティアプリケーションの承認] ページで、[クロスドメイン ID 管理へのアクセス] を選択し、[承認] をクリックします。

  6. [アプリシークレット] タブで、[シークレットの作成] をクリックしてアプリケーションシークレットを作成します。

    重要
    • アプリケーションシークレット(AppSecretValue)は、作成時にのみ表示されます。後で使用するためにシークレットを保存することをお勧めします。

ステップ 2: アカウントデータを同期する

クライアントまたは SCIM API を使用してアカウントデータを同期できます。たとえば、One Identity をクライアントとして使用できます。

  • One Identity で SCIM 情報を設定し、One Identity を使用してアカウントデータを同期できます。 One Identity の設定方法の詳細については、「One Identity ユーザーガイド」をご参照ください。

  • また、SCIM API を使用して、企業の社内システムのアカウントを RAM ユーザーにマッピングすることもできます。その後、RAM ユーザーのフィールドを作成、削除、クエリ、または変更できます。 RAM ユーザーの次のフィールドを作成、削除、クエリ、または変更できます。

    • id: RAM ユーザーの ID。グローバルに一意であり、サーバーによって生成されます。

    • externalId: RAM ユーザーの外部キー。ユーザーレベルで一意であり、クライアントによって指定されます。このキーは、RAM ユーザーを企業の社内システムのユーザーに関連付けるために使用されます。

      説明

      RAM コンソールで RAM ユーザーを作成した場合、RAM ユーザーには externalId フィールドがありません。

    • userName: RAM ユーザーのユーザー名。ユーザーレベルで一意であり、クライアントによって指定されます。

    • displayName: RAM ユーザーの表示名。クライアントによって指定されます。

SCIM API を使用してアカウントデータを同期するには、次の手順を実行します。

  1. 承認されたサーバーアプリケーションの ID(client_id)とシークレット(AppSecretValue)を取得します。

  2. client_idAppSecretValue を使用して https://oauth.aliyun.com/v1/token にアクセスし、access_token を取得します。

    API リクエストを送信するときは、"Authorization: Basic Base64Encode(client_id:AppSecretValue)" 形式で Authorization ヘッダーを指定します。たとえば、client_id が cid で AppSecretValue が 123456 の場合、Authorization ヘッダーを "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"
    }
  3. SCIM でサポートされている ResourceTypeSchema をクエリします。

    次のサンプルコードは、ResourceType をクエリするために使用されます。

    curl --location --request GET 'https://scim.aliyun.com/ResourceTypes'

    次のサンプルコードは、Schema をクエリするために使用されます。

    curl --location --request GET 'https://scim.aliyun.com/Schemas'
  4. RAM ユーザーのフィールドを作成、クエリ、削除、または変更します。

    • RAM ユーザーを作成します。

      企業の社内システムのアカウントデータに基づいて、ユーザー名(userName)、表示名(displayName)、および外部キー(externalId)を指定します。次に、RAM ユーザーを作成します。

      リクエスト例

      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 は、iduserName、および 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 に同期する前に、論理削除を物理削除にマッピングすることをお勧めします。