NerdGraph API 를 사용하여 사용자 그룹과 해당 그룹이 액세스할 수 있는 항목을 보고 관리할 수 있습니다. UI에서 이 작업을 수행하는 방법은 사용자 관리 UI 문서 를 참조하세요.
NerdGraph를 사용하여 사용자를 생성하고 해당 정보를 보려면 NerdGraph로 사용자 관리 를 참조하십시오.
요구 사항
NerdGraph를 통해 사용자 및 그룹을 관리하기 위한 몇 가지 요구 사항:
사용자 그룹 및 역할을 사용자 정의하려면 Pro 또는 시리즈 에디션이 필요합니다.
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" } ] } },역할 생성
사용자 지정 역할을 만들기 전에 해당 역할에 할당할 권한을 식별해야 합니다.
권한 ID를 검색합니다.
계정 범위 권한 목록을 검색하려면 다음 쿼리를 사용하십시오.
query { customerAdministration { permissions { items { category feature id product subsetIds } nextCursor } }}조직별 권한 범위를 지정하려면 다음 쿼리를 실행하십시오.
query { customerAdministration { permissions(filter: { scope: { eq: "organization" } }) { items { category feature id product subsetIds } nextCursor } }}다음 필드를 참고하십시오.
items: 각각 다음 속성을 포함하는 권한 개체의 제외:category: (문자열) 권한이 속한 범주 또는 그룹입니다.feature: (문자열) 권한이 연결된 특정 기능입니다.id: (문자열) 각 권한에 대한 고유 식별자입니다.product: (문자열) 권한이 적용되는 제품입니다.subsetIds: (어레이) 하위 집합이나 관련 권한을 나타내는 ID 목록입니다.
사용자 지정 역할을 생성합니다
새 역할에 할당하려는 각 권한에 대한 고유 식별자를 얻은 후에는 다음 뮤테이션을 사용하여 역할을 생성하십시오. 계정, 조직 또는 엔티티 수준의 세 가지 범위에서 역할을 생성할 수 있습니다. 생성하는 역할의 유형은 할당하려는 권한의 범위와 일치해야 합니다.
계정 범위 역할
mutation { customRoleCreate( container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ACCOUNT ROLE" permissionIds: [1, 2, 3] scope: "account" ) { id }}조직 범위 역할
mutation { customRoleCreate( container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ORGANIZATION ROLE" permissionIds: [4, 5, 6] scope: "organization" ) { id }}엔티티 범위 역할
mutation { customRoleCreate( container: { id: "YOUR_ORGANIZATION_ID", type: "ORGANIZATION" } name: "MY CUSTOM ENTITY ROLE" permissionIds: [7, 8, 9] scope: "entity" ) { id }}매개변수
container:id: (문자열) 조직의 고유 식별자입니다.YOUR_ORGANIZATION_ID실제 조직 ID로 바꾸세요.type: (문자열) 컨테이너의 유형입니다. 현재 지원되는 유일한 유형은"ORGANIZATION"입니다.
name: (문자열) 사용자 지정 역할에 할당된 이름입니다.permissionIds: (어레이) 사용자 지정 역할에 할당된 기능을 나타내는 권한 ID 목록입니다. 위의 권한 쿼리에서 가져온 ID를 사용하십시오.scope: (문자열) 역할 권한이 적용되는 수준입니다. 지원되는 값:"account"역할 권한은 계정 수준에서 적용됩니다."organization"역할 권한은 조직 수준에서 적용됩니다."entity"역할 권한은 엔티티 수준에서 적용됩니다.
응답
id: 새로 생성된 사용자 정의 역할의 고유 ID를 반환합니다.중요
- 변형을 실행하기 전에
YOUR_ORGANIZATION_ID특정 조직 ID로 바꾸세요. - 예시
permissionIds권한 쿼리에서 가져온 실제 권한 ID로 바꾸세요. - 사용하는 권한 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"] } ]}그룹 또는 사용자에게 액세스 권한을 부여하세요
접근 권한은 그룹 또는 사용자를 역할에 연결하고 그들이 접근할 수 있는 항목을 정의합니다. 액세스 권한을 생성하면 사용자 또는 그룹에게 역할에 정의된 권한을 부여하고, 이 권한은 특정 대상(조직, 계정, 사용자 또는 기타 그룹)에 적용됩니다.
접근 권한을 부여받을 사람을 지정하려면 다음과 같이 하십시오.
- 사용자의 경우:
id과 함께grantee보고서를 사용하고type: USER - 그룹의 경우:
grantee다음으로 바꾸세요.groupId: "YOUR_GROUP_ID"
계정 범위 보조금
다음은 계정 범위 역할에 대한 액세스 권한을 부여하는 예입니다.
mutation { authorizationManagementGrantAccess( grantAccessOptions: { accountAccessGrants: { accountId: YOUR_ACCOUNT_ID dataAccessPolicyId: "YOUR_DATA_ACCESS_POLICY_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}조직 범위 보조금
다음은 조직 범위 역할에 대한 액세스 권한을 부여하는 예입니다.
mutation { authorizationManagementGrantAccess( grantAccessOptions: { organizationAccessGrants: { roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}엔티티 범위 부여
다음은 엔티티 범위 역할에 대한 액세스 권한을 부여하는 예입니다.
mutation { authorizationManagementGrantAccess( grantAccessOptions: { entityAccessGrants: { entity: { id: "YOUR_ENTITY_ID", type: "YOUR_ENTITY_TYPE" } roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}그룹 범위 보조금
다음은 그룹 범위 역할에 대한 액세스 권한을 부여하는 예입니다.
mutation { authorizationManagementGrantAccess( grantAccessOptions: { groupAccessGrants: { groupId: "YOUR_TARGET_GROUP_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { name } }}응답 예시
성공에 대한 응답:
{ "data": { "authorizationManagementGrantAccess": { "accessGrants": [ { "id": "ACCESS_GRANT_ID" } ], "roles": [ { "name": "ROLE_NAME" } ] } }}실패에 대한 응답:
{ "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와 함께 authorizationManagementUpdateAccess 변이를 사용하십시오.
중요
현재 액세스 권한 업데이트는 계정 범위 권한에 대해서만 가능합니다.
다음은 계정 접근 권한을 업데이트하는 예입니다.
mutation { authorizationManagementUpdateAccess( updateAccessOptions: { accountAccessGrant: { dataAccessPolicyId: "YOUR_NEW_DATA_ACCESS_POLICY_ID" } ids: "YOUR_ACCESS_GRANT_ID" } ) { grants { id } }}역할 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 } } } } } } } } }}그룹 또는 사용자에 대한 권한 취소
액세스 권한을 취소하면 그룹 또는 사용자와 역할 간의 연결이 제거되어 해당 그룹이나 사용자가 가지고 있던 권한이 박탈됩니다. 조직, 계정, 모임 또는 그룹 수준에서 부여를 취소할 수 있습니다. 권한을 취소할 때는 권한을 부여할 때와 마찬가지로 grantee (사용자) 또는 groupId (그룹)을 사용하여 액세스 권한을 잃는 사용자를 지정하십시오.
계정 범위 취소
다음은 계정 범위 역할에 대한 액세스 권한을 취소하는 예입니다.
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { accountAccessGrants: { accountId: YOUR_ACCOUNT_ID dataAccessPolicyId: "YOUR_DATA_ACCESS_POLICY_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}조직 범위 취소
다음은 조직 범위 역할에 대한 액세스 권한을 취소하는 예입니다.
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { organizationAccessGrants: { roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}엔티티 범위 취소
다음은 엔티티 범위 역할에 대한 액세스 권한을 취소하는 예입니다.
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { entityAccessGrants: { entity: { id: "YOUR_ENTITY_ID", type: "YOUR_ENTITY_TYPE" } roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}그룹 범위 취소
다음은 그룹 범위 역할에 대한 액세스 권한을 취소하는 예입니다.
mutation { authorizationManagementRevokeAccess( revokeAccessOptions: { groupAccessGrants: { groupId: "YOUR_TARGET_GROUP_ID" roleId: "YOUR_ROLE_ID" grantee: { id: "YOUR_USER_ID", type: USER } } } ) { accessGrants { id } roles { id } }}응답 예시
성공에 대한 응답:
{ "data": { "authorizationManagementRevokeAccess": { "accessGrants": [ { "id": "ACCESS_GRANT_ID" } ], "roles": [ { "id": "ROLE_ID" } ] } }}