사용자 관리
Cloud Directory를 사용할 경우 보안 및 셀프 서비스를 강화하는 사전 빌드된 기능을 통해 확장 가능한 레지스트리에서 사용자를 관리할 수 있습니다.
Cloud Directory 사용자는 App ID 사용자와 다릅니다. 사용자는 구성된 다양한 ID 제공자 옵션을 사용하여 앱에 등록하거나, 디렉토리에 사용자를 추가할 수 있습니다. 다음 섹션에서 언급되는 사용자는 ID 제공자로서 Cloud Directory와 연관된 사용자입니다.
사용자 정보 보기
API를 사용하거나 대시보드를 사용하여 모든 Cloud Directory 사용자에 대해 JSON 오브젝트로 알려진 모든 정보를 확인할 수 있습니다.
콘솔에서 사용자 정보 보기
App ID 대시보드에서 앱 사용자에 대한 세부사항을 볼 수 있습니다.
-
App ID 인스턴스의 Cloud Directory > 사용자 탭으로 이동하십시오.
-
테이블을 검토하거나 이메일 주소로 검색하여 정보를 보려는 사용자를 찾으십시오. 검색어는 정확해야 합니다.
-
사용자 행의 오버플로우 메뉴에서 사용자 세부사항 보기를 클릭하십시오. 사용자 정보가 포함된 페이지가 열립니다. 다음 표에서 볼 수 있는 정보를 확인하십시오.
App ID 대시보드에서 사용자에 대한 세부 정보를 확인할 수 있습니다 세부사항 설명 사용자 ID 사용자 ID는 구성한 사용자 등록 유형에 따라 다릅니다. 예를 들어 이메일 및 비밀번호 플로우가 구성되어 있는 경우 ID는 사용자의 이메일입니다. 사용자 이름 및 비밀번호 플로우를 사용하는 경우 ID는 등록 시 제공한 사용자 이름입니다. 이메일 사용자에게 첨부되는 기본 이메일 주소입니다. 이름 및 성 사용자의 이름 및 성은 등록 프로세스 중에 제공된 이름 및 성입니다. 마지막 로그인 사용자가 애플리케이션에 마지막으로 로그인한 시간의 시간소인입니다. 참고: 대시보드를 통해 사용자를 추가한 경우에는 사용자가 앱에 직접 사인인할 때까지 로그인이 비어 있습니다. 사인인이 발생하면 App ID 사용자가 됩니다. ID App ID에서 사용자에게 지정한 ID입니다. 콘솔에는 표시되지 않지만 값을 복사하여 텍스트 편집기에 붙여넣으면 값을 확인할 수 있습니다. 사전정의된 속성 사전 정의된 속성은 SCIM 기반 사용자에 대해 알려진 속성입니다. 사용자 정의 속성 사용자 정의 속성은 사용자 프로파일에 추가되거나 애플리케이션과 상호작용하는 사용자에 대해 학습한 추가 정보입니다. 요약 모든 속성을 컴파일하여 Cloud Directory 사용자의 전체 개요를 제공하는 하나의 프로파일을 생성합니다. 자세한 정보는 사용자 프로파일을 참조하십시오.
API로 사용자 정보 보기
App ID API를 사용하여 앱 사용자에 대한 세부사항을 볼 수 있습니다.
-
서비스 인스턴스에서 테넌트 ID를 얻으십시오.
-
이메일 주소와 같은 식별 조회로 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를 통해 사용자를 추가할 수 있습니다.
사용자가 애플리케이션에 등록하는 경우 셀프 서비스 워크플로우를 통해 등록됩니다. 이 경우 환영 또는 검증 요청과 같은 이메일이 자동으로 트리거됩니다. 관리자가 사용자를 앱에 추가하는 경우에 셀프 서비스 워크플로우가 시작되지 않습니다. 즉, 사용자는 애플리케이션으로부터 이메일을 받지 않습니다. 사용자가 추가되었다는 알림을 계속 받으려면 App ID 관리 API를 통해 메시징 흐름을 트리거할 수 있습니다.
셀프 서비스 등록을 사용 안함으로 설정하거나 사용자를 대신해 추가하는 경우 해당 사용자는 추가될 때 환영 또는 검증 이메일을 수신하지 않습니다.
콘솔에서 사용자 추가하기
-
App ID 대시보드의 Cloud Directory > 사용자 탭으로 이동하십시오.
-
사용자 추가를 클릭하십시오. 양식이 열립니다.
-
이름, 성, 이메일 및 비밀번호를 입력하십시오. 등록하려는 이메일을 다른 사용자가 이미 사용하고 있지 않은지 확인하십시오. 비밀번호를 올바르게 입력하기 위해 비밀번호 다시 입력 필드에 해당 비밀번호를 입력하여 확인하십시오.
-
저장 을 클릭하십시오. 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" -
사용자에게 첨부된 이메일로 디렉토리를 검색하여 사용자 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명 이상의 많은 사용자를 마이그레이션하는 경우 단일 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>' -
내보내기가 준비되었거나 요청이 실패하면 제공된 이메일 주소로 이메일이 전송됩니다. 내보내기를 다운로드하려면 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에 요청을 전송하여 내보내기를 수동으로 삭제하도록 선택할 수 있습니다.
내보내기/모든 요청에 제공해야 하는 매개변수에 대한 설명 매개변수 설명 encryptionSecret사용자 해시 비밀번호를 암호화 및 복호화하기 위해 사용되는 사용자 정의 문자열입니다. import/all API를 사용하는 데 필요한 암호화 시크릿을 보유하십시오. IBM 은 시크릿을 저장하지 않으므로 시크릿이 유실되면 내보낸 데이터에 액세스할 수 없습니다. emailAddress내보내기가 준비되었거나 요청이 실패한 경우 이메일을 보내는 이메일 주소입니다. expires내보내기를 삭제해야 하는 일 수를 지정하기 위해 설정할 수 있는 정수 (1 ≤ 값 ≤ 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 사용자 목록이 있으므로 사용자를 새 인스턴스로 가져올 수 있습니다. 가져오기-모두 API 엔드포인트를 사용하면 한 번의 요청으로 상당한 수의 사용자(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내보내기가 준비되었거나 요청이 실패한 경우 이메일을 보내는 이메일 주소입니다. tenantID서비스 인증 정보에서 찾을 수 있는 서비스 테넌트 ID입니다. App ID 대시보드에서 서비스 자격 증명을 찾거나 만들 수 있습니다. fileexport/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를 통해 사용할 수 있는 마이그레이션 스크립트를 제공합니다. 또는 반출/모두 및 반입/모두 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 tokenIAM 토큰을 얻는 방법에 대한 도움말은 문서를 참조하십시오. 명령 예제:
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