NerdGraph API 를 사용하여 사용자 그룹과 해당 그룹이 액세스할 수 있는 항목을 보고 관리할 수 있습니다. UI에서 이 작업을 수행하는 방법은 사용자 관리 UI 문서 를 참조하세요.
NerdGraph를 사용하여 사용자를 생성하고 해당 정보를 보려면 NerdGraph로 사용자 관리 를 참조하십시오.
요구 사항
NerdGraph를 통해 사용자 및 그룹을 관리하기 위한 몇 가지 요구 사항:
사용자 그룹 및 역할을 사용자 정의하려면 Pro 또는 Enterprise 버전이 필요합니다.
SCIM 프로비저닝 을 사용하는 경우 해당 인증 도메인에 대해 그룹을 생성하거나 그룹에 사용자를 추가할 수 없습니다. 그룹과 사용자가 SCIM을 통해 관리되기 때문입니다.
귀하는 최신 사용자 모델 의 사용자여야 합니다.기타 권한 관련 요구 사항:
시작하기 전에
NerdGraph를 사용하여 사용자를 관리하기 전에:
- 사용자 관리 개념 을 충분히 이해하고 있는지 확인합니다.
- 아직 살펴보지 않았다면 Access management UI를 살펴보고 그룹 및 사용자 액세스 작동 방식을 더 잘 이해하고 이미 존재하는 그룹을 이해하는 것이 좋습니다. 이를 수행하기 전에 만들어야 하는 그룹 액세스에 대한 계획을 세우는 것이 좋습니다. 다음은 계획 스프레드시트의 예입니다.
- NerdGraph 탐색기 에는 이러한 요청에 사용되는 필드를 정의하는 기본 제공 문서가 있습니다.
- New Relic 계정의 변경 사항을 추적 할 수 있습니다.
그룹 생성을 위한 제안된 워크플로
이러한 쿼리와 변형을 다양한 방법과 다양한 순서로 사용할 수 있지만 다음은 그룹 설정을 위한 한 가지 일반적인 워크플로입니다.
- 사용자 정보 및 사용 가능한 역할 쿼리: 이것은 New Relic에 있는 사용자와 사용 가능한 역할을 이해하는 데 도움이 되는 첫 번째 장소가 될 수 있습니다. 이제 막 시작하는 경우 아직 사용자를 추가하지 않았을 수 있으며 표준 역할만 있을 수 있습니다.
- 선택사항: 새 그룹 만들기: Not available if using SCIM provisioning. 기존 그룹을 사용하거나 새 그룹을 만들 수 있습니다. 그룹을 생성한 후에는 역할 및 계정에 대한 액세스 권한을 부여해야 합니다. 그룹 자체는 해당 그룹의 사용자에게 액세스 권한을 부여하지 않습니다. 사용자가 실제로 뉴렐릭에 액세스할 수 있는 역할과 계정이 할당된 경우에만 가능합니다.
- 그룹에 대한 액세스 권한 부여 : 그룹에 역할 및 계정에 대한 액세스 권한을 할당합니다.
작업이 완료되면 생성한 그룹에 이미 사용자가 있고 해당 그룹에 하나 이상의 역할과 계정에 대한 액세스 권한이 있는 경우 몇 분 이내에 액세스 권한이 있어야 합니다( EU 지역 New Relic 계정 의 경우 이 작업을 수행할 수 있음). 최대 20분 정도 소요). 사용자가 아직 해당 그룹에 없는 경우(새 그룹을 만든 경우 해당) 해당 그룹에 사용자를 추가 할 수 있습니다.
쿼리 그룹
다음은 지정된 인증 도메인의 기존 그룹을 쿼리하는 예입니다.
{ actor { organization { userManagement { authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") { authenticationDomains { groups { groups { displayName id } } } } } } }}
기존 역할 쿼리
다음은 역할에 대한 정보를 반환하는 예입니다.
{ actor { organization { authorizationManagement { authenticationDomains { authenticationDomains { groups { groups { roles { roles { accountId displayName id name organizationId type } } } } } } } } }}
다음은 결과의 예입니다.
{ "data": { "actor": { "organization": { "authorizationManagement": { "authenticationDomains": { "authenticationDomains": [ { "groups": { "groups": [ { "roles": { "roles": [ { "accountId": "account-id", "displayName": "name", "id": "id", "name": "role-name", "organizationId": null, "type": "role-type" }, { "accountId":null, "displayName": "name", "id": "id", "name": "role-name", "organizationId": "organization-id", "type": "role-type" } ] } } ] } } ] } } } } }}
사용자 쿼리
사용자 정보 쿼리
다음은 사용자에 대한 정보를 쿼리하는 예입니다.
{ actor { organization { userManagement { authenticationDomains { authenticationDomains { groups { groups { users { users { id email name timeZone } } } } } } } } }}
다음은 결과의 예입니다.
{ "data": { "actor": { "organization": { "userManagement": { "authenticationDomains": { "authenticationDomains": [ { "groups": { "groups": [ { "users": { "users": [ { "email": "example@newrelic.com", "id": "123456789", "name": "Example Relic", "timeZone": "Etc/UTC" } ] } } ] } } ] } } } } }}
사용자의 그룹 구성원 쿼리
다음은 사용자가 속한 그룹을 쿼리하는 예입니다.
{ actor { organization { userManagement { authenticationDomains { authenticationDomains { users { users { groups { groups { displayName } } email } } } } } } }}
다음은 응답 예시입니다.
{ "data": { "actor": { "organization": { "userManagement": { "authenticationDomains": { "authenticationDomains": [ { "users": { "users": [ { "email": "pete@example.com", "groups": { "groups": [ { "displayName": "Admin" }, { "displayName": "Basic Sub Account" } ] } },
역할 생성
역할을 만드는 예는 다음과 같습니다.
mutation { customRoleCreate( container: { id: "$YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ROLE" permissionIds: [1, 2, 3] scope: "ACCOUNT" ) { id }}
매개변수
container
:id
: (문자열) 조직의 고유 식별자입니다. 조직을 실제 조직 ID로 바꾸세요.type
: (문자열) 컨테이너의 유형입니다. 현재 지원되는 유형은 "조직"뿐입니다.name
: (문자열) 사용자 정의 역할에 할당된 이름입니다. 예: "내 사용자 지정 역할".
permissionIds
: (어레이) 사용자 지정 역할에 할당된 기능을 나타내는 권한 ID 목록입니다. 이러한 ID가 시스템의 유효한 권한과 일치하는지 확인하세요.scope
: (문자열) 역할의 권한이 적용되는 수준입니다. 이 인스턴스에서 범위는 "ACCOUNT"입니다.
응답
id
: 새로 생성된 사용자 정의 역할의 고유 ID를 반환합니다.중요
- 변형을 실행하기 전에
$YOUR_ORGANIZATION_ID
특정 조직 ID로 바꾸세요. - 제공된
permissionIds
이 유효하고 부여하려는 권한과 일치하는지 확인하세요.
- 변형을 실행하기 전에
사용자 지정 역할을 만들기 전에 해당 역할에 할당할 권한을 식별해야 합니다.
다음 쿼리를 사용하여 권한 목록을 검색하세요.
mutation { customerAdministration { permissions { items { category feature id product subsetIds } nextCursor } }}
이는 계정 범위의 권한을 반환합니다. 조직에 범위가 지정된 권한의 경우 대신 다음 쿼리를 실행하세요.
{ customerAdministration { permissions(filter: { scope: { eq: "organization" } }) { items { category feature id product subsetIds } nextCursor } }}
다음 필드를 참고하십시오.
items
: 각각 다음 속성을 포함하는 권한 개체의 제외:category
: (문자열) 권한이 속한 범주 또는 그룹입니다.feature
: (문자열) 권한이 연결된 특정 기능입니다.id
: (문자열) 각 권한에 대한 고유 식별자입니다.product
: (문자열) 권한이 적용되는 제품입니다.subsetIds
: (어레이) 하위 집합이나 관련 권한을 나타내는 ID 목록입니다.
새 역할에 할당하려는 각 권한에 대한 고유 식별자를 얻은 후 해당 역할을 만듭니다.
역할 업데이트
다음은 역할을 업데이트하는 예입니다.
mutation { customRoleUpdate( id: $ROLE_ID name: "MY NEW CUSTOM ROLE NAME" permissionIds: [4, 5, 6] ) { id }}
매개변수
id
: 수정하려는 사용자 정의 역할의 고유 식별자입니다.$ROLE_ID
역할의 실제 ID로 바꾸세요.name
: 사용자 정의 역할에 할당하려는 새 이름입니다. 이 예에서는MY NEW CUSTOM ROLE NAME
입니다.permissionIds
: 이 역할에 할당하려는 권한 ID의 식별자입니다. 이러한 ID가 유효하고 구현하려는 권한과 일치하는지 확인하세요.
역할 삭제
역할을 삭제하는 예는 다음과 같습니다.
mutation { customRoleDelete(id: $ROLE_ID) { id }}
매개변수
id
: 삭제하려는 역할의 고유 식별자입니다.$ROLE_ID
제거하려는 역할의 실제 ID로 바꾸세요.
응답
id
: 삭제된 역할의 ID를 반환하여 뮤테이션이 성공적으로 실행되었음을 확인합니다.
그룹 만들기
다음은 그룹 을 만드는 예입니다.
mutation { userManagementCreateGroup( createGroupOptions: { authenticationDomainId: "YOUR_AUTH_DOMAIN_ID" displayName: "GROUP_DISPLAY_NAME" } ) { group { displayName id } }}
성공적인 응답:
{ "data": { "userManagementCreateGroup": { "group": { "displayName": "GROUP_DISPLAY_NAME" "id": "GROUP_ID" } } }}
사용자 그룹 업데이트
다음은 그룹 업데이트의 예입니다.
mutation { userManagementUpdateGroup( updateGroupOptions: { displayName: "YOUR_UPDATED_GROUP_NAME" id: "YOUR_GROUP_ID" } ) { group { id displayName } }}
성공에 대한 응답:
{ "data": { "userManagementUpdateGroup": { "group": { "displayName": "YOUR_UPDATED_GROUP_NAME", "id": "GROUP_ID" } } }}
실패에 대한 응답:
{ "data": { "userManagementUpdateGroup": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "Group could not be found", "path": ["userManagementUpdateGroup"] } ]}
그룹 삭제
다음은 그룹 을 삭제하는 예입니다.
mutation { userManagementDeleteGroup(groupOptions: { id: "YOUR_GROUP_ID" }) { group { id } }}
성공에 대한 응답:
{ "data": { "userManagementDeleteGroup": { "group": { "id": "GROUP_ID" } } }}
실패에 대한 응답:
{ "data": { "userManagementDeleteGroup": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "Couldn't find Group with 'id'='ENTERED_GROUP_ID", "path": ["userManagementDeleteGroup"] } ]}
그룹에 사용자 추가
다음은 그룹에 사용자를 추가하는 예입니다.
mutation { userManagementAddUsersToGroups( addUsersToGroupsOptions: { groupIds: [FIRST_GROUP_ID, SECOND_GROUP_ID] userIds: [YOUR_USERS_IDS] } ) { groups { displayName id } }}
성공에 대한 응답:
{ "data": { "userManagementAddUsersToGroups": { "groups": [ { "displayName": "GROUP_1_NAME", "id": "GROUP_ID_1" }, { "displayName": "GROUP_NAME_2", "id": "GROUP_ID_2" } ] } }}
실패에 대한 응답:
{ "data": { "userManagementAddUsersToGroups": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "The following ids were not found: group_ids: 'NON_EXISTENT_GROUP_ID'", "path": ["userManagementAddUsersToGroups"] } ]}
그룹에서 사용자 제거
다음은 그룹에서 사용자를 제거하는 예입니다.
mutation { userManagementRemoveUsersFromGroups( removeUsersFromGroupsOptions: { groupIds: [YOUR_GROUP_IDS] userIds: [YOUR_USER_IDS] } ) { groups { displayName id } }}
성공에 대한 응답:
{ "data": { "userManagementRemoveUsersFromGroups": { "groups": [ { "displayName": "YOUR_GROUP_NAME", "id": "YOUR_GROUP_ID" } ] } }}
실패에 대한 응답:
{ "data": { "userManagementRemoveUsersFromGroups": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "The following ids were not found: user_ids: 'NON-EXISTENT_USER_ID'", "path": ["userManagementRemoveUsersFromGroups"] } ]}
그룹에 액세스 권한 부여
다음은 역할 및 계정에 대한 액세스 권한을 그룹에 부여하는 예입니다.
mutation { authorizationManagementGrantAccess( grantAccessOptions: { groupId: "YOUR_GROUP_ID" accountAccessGrants: { accountId: YOUR_ACCOUNT_ID roleId: "YOUR_ROLE_ID" } } ) { roles { displayName accountId } }}
성공에 대한 응답:
{ "data": { "authorizationManagementGrantAccess": { "roles": [ { "displayName": "ROLE_NAME_1", "id": "ROLE_ID_1" }, { "displayName": "ROLE_NAME_2", "id": "ROLE_ID_2" }, { "displayName": "ROLE_NAME_3", "id": "ROLE_ID_3" }, { "displayName": "ROLE_NAME_4", "id": "ROLE_ID_4" } ] } }}
실패에 대한 응답:
{ "data": { "authorizationManagementGrantAccess": null }, "errors": [ { "extensions": { "errorClass": "SERVER_ERROR" }, "locations": [ { "column": 3, "line": 2 } ], "message": "Validation failed: Role must exist, Role can't be blank, Role scope does not match granted_on type", "path": ["authorizationManagementGrantAccess"] } ]}
역할 ID 찾기
그룹에 대한 액세스 권한 부여와 같은 일부 사용 사례의 경우 역할 ID, 즉 New Relic에서 해당 역할을 나타내는 숫자 ID가 필요할 수 있습니다.
기본 역할 및 관리 설정 에 대한 몇 가지 ID는 다음과 같습니다.
All product admin:
1254
.Standard user:
1253
.Read only:
1252
.Organization manager setting
1994
- Read only:
1995
- Read only:
Authentication domain setting:
- Manage:
1996
- Read only:
1997
- Add users:
14517
- Read users:
14603
- Manage:
Group admin:
14516
다음은 사용자 정의 역할의 ID를 찾는 쿼리입니다.
{ actor { organization { authorizationManagement { authenticationDomains(id: "YOUR_AUTHENTICATION_DOMAIN_ID") { authenticationDomains { groups { groups { displayName id roles { roles { roleId name } } } } } } } } }}
그룹에서 권한 부여 취소
다음은 그룹에서 액세스 권한을 제거하는 예입니다.
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { accountAccessGrants: { accountId: YOUR_ACCOUNT_ID roleId: "YOUR_ROLE_ID" } groupId: "YOUR_GROUP_ID" } ) { roles { accountId displayName } }}
성공에 대한 응답:
{ "data": { "authorizationManagementRevokeAccess": { "roles": [ { "displayName": "ROLE_NAME_1", "id": "ROLE_ID_1" }, { "displayName": "ROLE_NAME_2", "id": "ROLE_ID_2" }, { "displayName": "ROLE_NAME_3", "id": "ROLE_ID_3" } ] } }}