New Relic의 NerdGraph API 를 사용하여 사용자 그룹과 액세스 권한을 보고 관리할 수 있습니다. UI에서 이 작업을 수행하는 방법은 사용자 관리 UI 문서 를 참조하세요.
요구 사항
NerdGraph를 통해 사용자 및 그룹을 관리하기 위한 몇 가지 요구 사항:
Pro 또는 Enterprise 에디션 이 필요합니다(Standard 에디션 조직은 그룹 또는 액세스 권한을 구성할 수 없음).
SCIM 프로비저닝 을 사용하는 경우 해당 인증 도메인에 대해 그룹을 생성하거나 그룹에 사용자를 추가할 수 없습니다. 그룹과 사용자가 SCIM을 통해 관리되기 때문입니다.
귀하는 최신 사용자 모델 의 사용자여야 합니다.기타 권한 관련 요구 사항:
시작하기 전에
NerdGraph를 사용하여 사용자를 관리하기 전에:
- 사용자 관리 개념 을 충분히 이해하고 있는지 확인합니다.
- 아직 액세스하지 않은 경우 액세스 관리 UI를 살펴보고 그룹 및 액세스 권한 부여의 작동 방식에 대한 이해를 높이고 이미 존재하는 액세스 권한 부여를 이해하는 것이 도움이 될 수 있습니다.
- 생성해야 하는 그룹 및 액세스 권한에 대한 계획을 잘 세우십시오. 미리 스프레드시트에 이를 매핑하는 것이 도움이 될 수 있습니다.
- NerdGraph 탐색기 에는 이러한 요청에 사용되는 필드를 정의하는 기본 제공 문서가 있습니다.
- New Relic 계정의 변경 사항을 추적 할 수 있습니다.
그룹 생성 및 액세스 권한 부여를 위한 제안된 워크플로
이러한 쿼리와 변형을 다양한 방법과 다양한 순서로 사용할 수 있지만 그룹 및 액세스 권한 설정을 위한 한 가지 일반적인 워크플로는 다음과 같습니다.
- 사용자 정보 및 사용 가능한 역할 쿼리: 이것은 New Relic에 있는 사용자와 사용 가능한 역할을 이해하는 데 도움이 되는 첫 번째 장소가 될 수 있습니다. 이제 막 시작하는 경우 아직 사용자를 추가하지 않았을 수 있으며 표준 역할만 있을 수 있습니다.
- 선택 사항: 새 그룹 만들기 : SCIM 프로비저닝을 사용하는 경우 사용할 수 없습니다. 기존 그룹을 사용하거나 새 그룹을 생성할 수 있습니다. 그룹을 만든 후 액세스 권한을 만들어 역할 및 계정에 대한 액세스 권한을 부여해야 합니다. 그룹 자체는 해당 그룹의 사용자에게 액세스 권한을 부여하지 않습니다. 사용자가 역할 및 계정에 대한 액세스 권한을 얻는 것은 액세스 권한 부여를 통해서만 가능합니다.
- 액세스 권한 생성 : 역할 및 계정에 대한 액세스 권한을 그룹에 할당합니다.
완료되면 생성한 그룹에 이미 사용자가 있고 해당 그룹에 액세스 권한이 부여된 경우 몇 분 이내에 액세스할 수 있어야 합니다( EU 지역 New Relic 계정 의 경우 최대 20분이 소요될 수 있음). 정도). 사용자가 아직 해당 그룹에 없는 경우(방금 새 그룹을 만든 경우 해당) 해당 그룹에 사용자를 추가 할 수 있습니다.
기존 역할 쿼리
다음은 역할에 대한 정보를 반환하는 예입니다.
{ 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" } ] } } ] } } ] } } } } }}
그룹 만들기
다음은 그룹 을 만드는 예입니다.
mutation {
userManagementCreateGroup(createGroupOptions: {authenticationDomainId: "YOUR_AUTH_DOMAIN", 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: "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: "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: [GROUP_ID_1, GROUP_ID_2], 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: "ACCOUNT_ID", roleId: "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" ] } ]}
그룹에서 권한 부여 취소
다음은 그룹에서 액세스 권한을 취소하는 예입니다.
mutation {
authorizationManagementRevokeAccess(revokeAccessOptions: {accountAccessGrants: {accountId: "ACCOUNT_ID", roleId: "ROLE_ID"}, groupId: "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" } ] } }}