ユーザーの管理
Cloud Directory では、セキュリティーとセルフサービスを強化する作成済みの機能を使用して、スケーラブルなレジストリーでユーザーを管理できます。
Cloud Directory ユーザーは App ID ユーザーと同じではありません。 管理者が構成したさまざまな ID プロバイダー・オプションを使用してユーザーがアプリに登録することも、管理者が独自のディレクトリーにユーザーを追加することもできます。 以下のセクションに出てくるユーザーは、ID プロバイダーである Cloud Directory に関連付けられているユーザーです。
ユーザー情報の表示
API またはダッシュボードを使用して、Cloud Directory ユーザーすべて関する既知のすべての情報を JSON オブジェクトとして表示できます。
コンソールでユーザー情報を見る
App ID ダッシュボードを使用して、アプリ・ユーザーについての詳細を表示できます。
-
App ID インスタンスの**「Cloud Directory」>「ユーザー」**タブに移動します。
-
テーブルに目を通すか E メール・アドレスで検索して、情報を表示するユーザーを見つけます。 検索語は正確に一致するものでなければなりません。
-
ユーザーの行のオーバーフロー・メニューで、**「ユーザーの詳細の表示 (View user details)」**をクリックします。 ユーザーの情報を含むページが開きます。 表示される情報について、次の表に記載します。
App ID ダッシュボードを見れば、ユーザーの詳細がわかります。 詳細 説明 ユーザー ID ユーザー ID は、構成したユーザー登録のタイプによって異なります。 例えば、E メールとパスワードのフローがある場合、ID はユーザーの E メールです。 ユーザー名とパスワードのフローを使用する場合、ID は登録時に指定されるユーザー名です。 E メール ユーザーに関連付けられた 1 次 E メール・アドレス。 姓名 登録プロセス時にユーザーが入力した姓と名前。 前回のログイン ユーザーがアプリケーションに最後にログインしたときのタイム・スタンプ。 注: ダッシュボードで管理者がユーザーを追加した場合は、ユーザー自身がアプリにサインインするまでこのログインはブランクです。 サインインが行われると、ユーザーは App ID ユーザーにもなります。 ID App ID でユーザーに割り当てられた ID。 コンソールでは表示されませんが、値をコピーしてテキストエディタに貼り付ければ値を見ることができます。 事前定義された属性 事前定義された属性は、SCIM に基づく既知のユーザー情報です。 カスタム属性 カスタム属性は、ユーザーのプロファイルに追加された追加情報、または、ユーザーとアプリケーションの対話の中で収集された追加のユーザー情報です。 要約 すべての属性がコンパイルされ、Cloud Directory ユーザーの完全な概要を示す 1 つのプロファイルが形成されます。 詳しくは、ユーザー・プロファイルを参照してください。
APIでユーザー情報を見る
App ID API を使用して、アプリ・ユーザーについての詳細を表示できます。
-
サービスのインスタンスからテナント ID を取得します。
-
E メール・アドレスなどの識別照会を使用して App ID ユーザーを検索し、ユーザー ID を見つけます。
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users?query=<identifyingSearchQuery>" \ -H "accept: application/json" \ -H "authorization: Bearer <token>"
例:
curl -X GET https://us-south.appid.cloud.ibm.com/management/v4/e19a2778-3262-4986-8875-8khjafsdkhjsdafkjh/cloud_directory/Users?query=user@domain.com -H "accept: application/json" -H "authorization: Bearer eyJraWQiOiIyMDE3MTEyOSIsImFsZ...."
-
前のステップで取得した ID を使用して、
cloud_directory/users
エンドポイントに対して GET 要求を行い、完全なユーザー・プロファイルを表示します。curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>" \ -H "accept: application/json" \ -H "authorization: Bearer <token>"
応答の例:
{ "sub": "c155c0ff-337a-46d3-a22a-a8f2cca08995", "name": "Test User", "email": "testuser@test.com", "identities": [ { "provider": "cloud_directory", "id": "f1772fcc-ff70-4d88-81a0-07dd7a3d988f", "idpUserInfo": { "displayName": "Test User", "active": true, "mfaContext": {}, "emails": [ { "value": "testuser@test.com", "primary": true } ], "meta": { "lastLogin": "2019-05-20T16:33:20.699Z", "created": "2019-05-20T16:25:13.019Z", "location": "/v1/6b8ab644-1d4a-4b3e-bcd9-777ba8430a51/Users/f1772fcc-ff70-4d88-81a0-07dd7a3d988f", "lastModified": "2019-05-20T16:33:20.707Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "name": { "givenName": "Test", "familyName": "User", "formatted": "Test User" }, "id": "f1772fcc-ff70-4d88-81a0-07dd7a3d988f", "status": "CONFIRMED", "idpType": "cloud_directory" } } ] }
App ID がサポートするユーザー・データ・セットの詳細を確認するには、SCIM コア・スキーマを参照してください。
ユーザーの追加
アプリケーションに登録したユーザーは、ユーザーとして追加されます。 テストのために、App ID ダッシュボードまたは API を使用してユーザーを追加できます。
ユーザーがアプリケーションに登録する場合は、ユーザーがセルフサービス・ワークフローを介して登録を行います。そのワークフローによって、ウェルカムや検証要求などの E メールが自動的にトリガーされます。 管理者がユーザーをアプリに追加する場合は、セルフサービス・ワークフローは開始されません。つまり、ユーザーはアプリケーションから E メールを受信しません。 ユーザーに追加されたことを通知したい場合は、 App ID 管理 API を使ってメッセージングフローをトリガーすることができます。
セルフサービス登録を無効にした場合や、本人の代わりに管理者がユーザーを追加した場合、ユーザーは追加されてもウェルカム E メールや検証 E メールを受信しません。
コンソールでユーザーを追加する
-
App ID ダッシュボードの**「Cloud Directory」>「ユーザー」**タブに移動します。
-
**「ユーザーの追加」**をクリックします。 フォームが開きます。
-
名、姓、E メール、パスワードを入力します。 登録しようとしている E メールが別のユーザーによってまだ取得されていないことを確認してください。 パスワードを正しく入力したことを確認するために、**「パスワードの再入力」**フィールドにパスワードを入力します。
-
保存 をクリックします。 Cloud Directory ユーザーが作成されます。
API を使用したユーザーの追加
-
アプリケーション資格情報またはサービス資格情報からテナント ID を取得します。
-
IBM Cloud IAM トークンを取得します。
curl -X GET "https://iam.cloud.ibm.com/oidc/token" \ -H "accept: application/x-www-form-urlencoded"
-
以下のコマンドを実行して、新しいユーザーとプロファイルを同時に作成します。
curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/sign_up?shouldCreateProfile=true&language=en" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -H "authorization: Bearer <token>" \ -d "{ \"active\": true, \"emails\": [ { \"value\": \"<user@domain.com>\", \"primary\": true } ], \"userName\": \"<userName>\", \"password\": \"<userPassword>\"}"
ユーザーの削除
ディレクトリからユーザーを削除したい場合は、コンソールから、またはAPIを使用してユーザーを削除することができます。
コンソールでの単一ユーザーの削除
-
App ID ダッシュボードの**「Cloud Directory」>「ユーザー」**タブに移動します。
-
削除するユーザーの横にあるチェック・ボックスをクリックします。 ボックスが開きます。
-
ボックスで、**「削除」**をクリックします。 画面が開きます。
-
ユーザーの削除は元に戻せないということを理解した上で、**「削除」**をクリックして確定します。 間違って削除した場合、ディレクトリーにユーザーを再度追加できますが、そのユーザーに関する情報はすべてなくなっています。
API を使用した単一ユーザーの削除
-
テナント ID を取得します。
-
IBM Cloud IAM トークンを取得します。
curl -X GET "https://iam.cloud.ibm.com/oidc/token" \ -H "accept: application/x-www-form-urlencoded"
-
ユーザーに関連付けられている E メールを使用し、ディレクトリーを検索してユーザーの ID を見つけます。
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users?email=<user@domain.com>" \ -H "accept: application/json"
-
ユーザーを削除します。
curl -X DELETE "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/remove/<userID>" \ -H "accept: application/json" \ -H "authorization: Bearer <token>"
API を使用した複数ユーザーの削除
一括削除 API を使用して、クラウド・ディレクトリー・ユーザーとそれに対応するプロファイルを一括削除することもできます。
要求ごとに最大 100 人のユーザーを削除できます。
-
テナント ID を取得します。
-
IBM Cloud IAM トークンを取得します。
curl -X GET "https://iam.cloud.ibm.com/oidc/token" \ -H "accept: application/x-www-form-urlencoded"
-
ユーザー ID のリストを指定して以下のコマンドを実行し、ユーザーを削除します。
curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/bulk_remove" \ -H "accept: application/json" \ -H "authorization: Bearer <token>" -d '{ "ids": [ "fed2634a-7a6c-4f6a-855d-8e3c73a5b5cc", "9380158c-19c9-4303-9111-a91743f4bad8" ] }'
ユーザーのマイグレーション
場合によっては、App ID のインスタンスの追加が必要になることがあります。 新しいインスタンスへの移行を支援するために、マイナーな移行のためのエクスポートとインポートAPIを使用することができます。 相当数のユーザー(16,000人以上)を移行する場合、1回のAPIリクエストで すべてのユーザーをエクスポート したり、 すべてのユーザーをインポート したりして、作業効率を向上させることができます。
App ID の両方のインスタンスで、Manager
という IAM 役割が割り当てられている必要があります。
すべてのユーザーのエクスポート
新しいインスタンスにプロファイルをインポートする前に、それらのプロファイルを元のサービス・インスタンスからエクスポートする必要があります。
多数のユーザー (16,000 以上) をエクスポートする場合は、 export/all
API エンドポイントを使用できます。
-
サービスの元のインスタンスからすべてのユーザーをエクスポートします。
curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/all' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ --data-raw '{"encryptionSecret" : "<encryptionSecret>", "emailAddress" : "jdoe@example.com"}'
-
必要に応じて、要求の状況を取得します。
curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/status?id=<id>' --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <IAMToken>'
-
エクスポートの準備ができたら、または要求が失敗すると、指定された E メール・アドレスに E メールが送信されます。 エクスポートをダウンロードするには、 export/download API を使用します。
curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/download?id=<id>' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <IAMToken>'
エクスポート・ファイルは、エクスポート要求が成功した場合にのみ作成されます。 要求が失敗すると、脆弱性リスクを軽減するために、収集されたデータが削除されます。 エクスポートは、7 日後、または要求の本文で指定した日数 (1 日から 30 日の範囲) が経過すると自動的に削除されます。 delete API に要求を送信することにより、エクスポートを手動で削除することを選択できます。
export/allリクエストで提供する必要があるパラメータの説明 パラメーター 説明 encryptionSecret
ハッシュ処理されたユーザーのパスワードの暗号化と復号のために使用するカスタム・ストリング。 import/all API を使用するために必要な暗号化秘密鍵を保持します。 IBM はシークレットを保管しないため、シークレットが失われた場合は、エクスポートされたデータにアクセスできません。 emailAddress
エクスポートの準備ができたとき、または要求が失敗した場合に E メールが送信される先の E メール・アドレス。 expires
エクスポートを削除しなければならなくなるまでの日数を指定するために設定できる整数 (1 ≤ value ≤ 30)。 デフォルト値は7。 tenantID
サービスのテナント ID はサービス資格情報の中にあります。 サービス認証情報は、 App ID ダッシュボードで検索または作成できます。
ユーザーの一括エクスポート
エクスポートエンドポイントは、約16,000ユーザー未満のマイナーエクスポートのために予約されています。 特定のテナント ID に関連付けられているすべての Cloud Directory ユーザーをエクスポートするには、 export/all API エンドポイントを使用します。
-
元のサービス・インスタンスからユーザーをエクスポートします。
curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export?encryption_secret=mySecret' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer <IAMToken>'
エクスポート・リクエストで提供する必要があるパラメータの説明 パラメーター 説明 encryptionSecret
ハッシュ処理されたユーザーのパスワードの暗号化と復号のために使用するカスタム・ストリング。 tenantID
サービスのテナント ID はサービス資格情報の中にあります。 サービス資格情報は、App ID ダッシュボードで確認できます。 Cloud Directory のユーザーとそれらのユーザーのプロファイルのみが返されます。 他の ID プロバイダーのユーザーは返されません。
すべてのユーザーのインポート
エクスポートした Cloud Directory のユーザーのリストが作成されたら、それらを新しいインスタンスにインポートできます。 import-all APIエンドポイントを使用すると、1回のリクエストで相当数のユーザー(16,000人以上)をインポートできます。
-
ダウンロードしたエクスポート済みユーザーのリストをインポートします。
curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import/all' \ --header 'Content-Type: multipart/form-data' \ --header 'Authorization: Bearer <IAMToken>' \ --form 'file=@<User/desktop/myfolder/user_list.json>' \ --form 'encryptionSecret=mySecret' \ --form 'emailAddress=jdoe@example.com'
-
必要に応じて、要求の状況を取得します。
curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import/status?id=<id>' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <IAMToken>'
インポート/オールリクエストで提供する必要があるパラメータの説明 パラメーター 説明 encryptionSecret
ハッシュ処理されたユーザーのパスワードの暗号化と復号のために使用するカスタム・ストリング。 暗号化シークレットは、 export/all API に付加したものと同じシークレットです。 IBM はシークレットを保管しないため、シークレットが失われた場合は、エクスポートされたデータにアクセスできません。 emailAddress
エクスポートの準備ができたとき、または要求が失敗した場合に E メールが送信される先の E メール・アドレス。 tenantID
サービスのテナント ID はサービス資格情報の中にあります。 サービス認証情報は、 App ID ダッシュボードで検索または作成できます。 file
export/download エンドポイントからの出力。
ユーザーの一括インポート
インポート API エンドポイントを使用して、小規模なユーザー・グループをインポートできます。 インポート API エンドポイントでは、要求ごとに最大 50 人のユーザーのみを追加できます。 単一の要求ですべてのユーザーを追加するには、 import/all API エンドポイントを使用します。
-
ユーザーに役割が割り当てられている場合は、App ID の新しいインスタンス内に役割とスコープを必ず作成してください。
役割とスコープは、以前のインスタンス内にあるものと同じつづりを使用して、完全に一致するように作成する必要があります。
-
ユーザーは、新しい Cloud Directory ID を使用してインポートされます。 アプリが何らかの方法で Cloud Directory ID を参照する場合、カスタム属性を作成して、アプリケーションが ID を直接呼び出すのではなく、属性を呼び出すように調整することができます。
-
新しいサービス・インスタンスにユーザーをインポートします。
curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import?encryption_secret=mySecret' --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Bearer <IAMToken>' -d '{"users": [ { "scimUser": { "originalId": "3f3f6779-7978-4383-926f-a43aef3b724b", "name": { "givenName": "John", "familyName": "Doe", "formatted": "John Doe" }, "displayName": "John Doe", "emails": [ { "value": "user@example.com", "primary": true } ], "status": "PENDING" }, "displayName": "Jane-Doe", "emails": [ { "value": "jdoe@example.com", "primary": true } ], "status": "PENDING" }, "passwordHash": "<passwordHashHere>", "passwordHashAlg": <passwordHashAlgorithm>, "profile": { "attributes": {} }, "roles": [] } ]}'
マイナー輸出入のための移行スクリプト
App ID には、エクスポートまたはインポートの API エンドポイントを使用する際にマイグレーション・プロセスの高速化に役立つ、CLI で使用可能なマイグレーション・スクリプトが用意されています。 あるいは、マイグレーション・プロセスをさらに効率的にするために、 export/all および import/all API エンドポイントを使用できます。
- リポジトリーを複製します。
git clone https://github.com/ibm-cloud-security/appid-sample-code-snippets/tree/master/export-import-cloud-directory-users.git
-
端末で、リポジトリーの複製先フォルダーに移動します。
-
次のコマンドを実行します。
npm install
-
パラメーターを指定して、以下のコマンドを実行します。
users_export_import 'sourceTenantId' 'destinationTenantId' 'region' 'iamToken'
パラメーターの説明 パラメーター 説明 sourceTenantId
ユーザーのエクスポート元となる、App ID のインスタンスのテナント ID。 destinationTenantId
ユーザーのインポート先となる、App ID のインスタンスのテナント ID。 region
使用可能なリージョンについてはこちらを参照してください。 IAM token
IAM トークンの取得については、資料を確認してください。 コマンド例:
users_export_import e00a0366-53c5-4fcf-8fef-ab3e66b2ced8 73321c2b-d35a-497a-9845-15c580fdf58c ng eyJraWQiOiIyMDE3MTAyNS0xNjoyNzoxMCIsImFsZyI6IlJTMjU2In0.eyJpYW1faWQiOiJJQk1pZC0zMTAwMDBUNkZTIiwiaWQiOiJJQk1pZC0zMTAwMDBUNkZTIiwicmVhbG1pZCI6IklCTWlkIiwiaWRlbnRpZmllciI6IjMxMDAwIFQ2RlMiPCJnaXZlbl9uYW1lIjoiUm90ZW0iLCJmYW1pbHlfbmFtZSI6IkJyb3NoIiwibmFtZSI6IlJvdGVtIEJyb3NoIiwiZW1haWwiOiJyb3RlbWJyQGlsLmlibS5jb20iLCJzdWIiOiJyb3RlbWJyQGlsLmlibS5jb20iLCJhY2NvdW50Ijp7ImJzcyI6ImQ3OWM5YTk5NjJkYzc2Y2JkMDZlYTVhNzhjMjY0YzE5In0sImlhdCI6MTUzNrE3Mjg4NCwiZXhwIjoxNTM3MTc2NDg0LCJpc3MiOiJodHRwczovL2lhbS5zdGFnZTEuYmx1ZW1peC5uZXQvaWRlbnRpdHkiLCJncmFudF90eXBlIjoidXJuOmlibTpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpwYXNzY29kZSIsInNjb3BlIjoiaWJtIG9wZW5pZCIsImNsaWVudF9pZCI6ImJ4IiwiYWNyIjoxLCJhbXIiOlsicHdkIl19.c4vLPzhvvNZLjaLy7znDa37qV4o-yuGmSKmJoQKrEQNZU8IC0NIjxwSo7W9kb0pDi3Yf_03_9ufTTGNfjtltzNWycSXjkNgoL-b9_nU61oHdgn0stY1KmNicqyBWfgUU--4xa904QN_QjRHBaUBeJf3XWEphPIMoF7mZeOxEZLnCMcQXSz9pImCMiP4SNT38cHLiI90Yx01rM7hpteepWULh5MYh-B2V03Gkgxfqvv951HF1LDg6eT4Q9in11laTQKtKuomripUju_4GIIjORVYw9NaAVKIJ9lKrPX0SKPhStsa59qGsC_7Uersms5EY1W1VbZVqOZPJbtp6tVf-Lw