명시적 역할
내부 사용자와 외부 사용자 모두에게 인스턴스에 액세스할 수 있도록 권한을 부여할 수 있습니다. 그러나 두 유형의 사용자가 모두 같은 수준의 액세스 권한을 갖는 것을 원하지 않을 수도 있습니다. 추가 보안을 제공하려면 인스턴스에서 내부 및 외부 사용자를 구분할 수 있도록 모든 사용자에게 적어도 하나의 역할이 있어야 합니다.
Paris 릴리스에서는 사용자가 명시적 역할(snc_internal 및 snc_external)을 모두 사용할 수 없습니다. 그룹 및 역할 포함에는 두 역할을 모두 포함할 수 없습니다. 이는 이러한 그룹이나 역할에 할당된 그룹 구성원 또는 사용자가 자동으로 두 역할을 가질 수 있기 때문입니다. ServiceNow AI Platform에서는 이러한 시나리오를 생성하는 모든 운영을 중단합니다.
- snc_external 역할이나 public 역할을 상속하는 역할이 없는 테이블
- snc_external 역할 또는 snc_external 역할을 상속하는 역할에 접근 권한을 부여하지 않는 프로세서, UI 페이지와 같은 기록이 아닌 형식의 자원.
- 플랫폼 분석 대시보드.
snc_internal 역할을 상승된 것으로 표시하지 마십시오. 표시할 경우 내부 사용자가 인스턴스에 액세스할 수 없습니다.
Explicit Roles 플러그인
Explicit Roles 플러그인이 활성화되는 경우:
- 모든 사용자가 내부 자원에 액세스하려면 snc_internal 역할을 가지고 있거나 외부 자원에 액세스하려면 snc_external 역할을 가지고 있어야 합니다. 위의 명시적인 역할 중 하나라도 없는 사용자는 public 자원에만 액세스할 수 있습니다.
- 기존의 모든 사용자에게는 snc_internal 역할이 자동으로 할당됩니다. 이 역할은 기존 액세스 수준이나 시스템 동작을 변경하지 않습니다. 대신 외부 사용자와 내부 사용자를 구분할 수 있는 범주를 제공합니다. 모든 내부 사용자는 플러그인이 활성화되기 전과 동일한 수준의 액세스 권한을 유지합니다.팁:사용자가 기존 기능을 변경하지 못하도록 하려면, Explicit Roles 플러그인을 활성화하여 인스턴스의 모든 기존 사용자에게 snc_internal 사용자 역할을 할당합니다. 여기에는 Explicit Roles 플러그인을 활성화하기 전에 추가된 모든 외부 사용자가 포함됩니다. Explicit Roles 플러그인이 활성화된 후에는 Explicit Roles 플러그인이 활성화되기 전에 추가된 모든 외부 사용자에 대해 다음을 수행합니다.
- snc_internal 역할을 제거합니다.
- snc_external 역할을 추가합니다.
- 새로 만든 사용자가 snc_external 역할을 명시적으로 할당받지 않는 한, 처음 인스턴스에 로그인할 때 자동으로 snc_internal 역할이 할당됩니다. 새 사용자가 처음 인스턴스에 로그인하기 전에 새 사용자에게 snc_external 역할을 추가하여 외부 사용자 권한을 제공할 수 있습니다. 중요사항:
유지관리 기간 동안 또는 로그인한 사용자가 거의 없는 경우 이 플러그인을 활성화합니다. 플러그인이 활성화됐을 때 로그인한 상태의 사용자에게는 snc_internal 역할이 동적으로 할당되지 않습니다. 로그아웃했다가 다시 로그인했을 때 사용자는 snc_internal 역할을 할당받을 수 있습니다. 플러그인이 활성화되면 언제든지 snc_internal 및 snc_external 역할을 추가하거나 제거하여 사용자 권한을 변경할 수 있습니다.
플러그인이 활성화되면 사용자가 로그인할 때마다 계정에 해당 역할 또는 snc_external 역할이 없는 경우 사용자에게 snc_internal 역할이 부여됩니다. 여기에는 가장을 통해 로그인한 사용자가 포함됩니다.
- 필요한 역할이 없는 기존의 모든 ACL에는 snc_internal 역할이 자동으로 할당됩니다. 기존의 ACL과 사용자 모두 snc_internal 역할이 할당되었기 때문에 기존 액세스 수준은 변경되지 않습니다.
- 필요한 역할이 없는 새로 만든 ACL에는 snc_internal 역할이 자동으로 할당됩니다. 역할이 할당된 새로 만든 ACL에는 이 역할 할당이 적용되지 않습니다.
- 모든 기존 프로세서[sys_processor] 기록 또는 Type=script를 사용하여 새롭게 생성된 프로세서[sys_processor] 기록의 경우, 필드가 비어 있으면 snc_internal 역할이 자동으로 역할 필드에 추가됩니다.
- UI 페이지에 대한 액세스를 내부 사용자로 제한하기 위해 플러그인에서 snc_internal 역할을 * ui_page 유형의 ACL로 자동 할당합니다.
- 프로세서에 대한 액세스를 내부 사용자로 제한하기 위해 플러그인에서 snc_internal 역할을 * processor 유형의 ACL로 자동 할당합니다.
- 외부 사용자는 최소한 snc_external 역할을 얻어야 인스턴스에 액세스할 수 있습니다. 이 역할은 외부 사용자에게 수동으로 부여해야 합니다. 레코드에 대한 액세스는 ACL을 통해 부여됩니다.
Explicit Roles 플러그인이 활성화되거나 활성화되지 않은 인스턴스 간에 시스템 업데이트 세트를 이동하지 마십시오. 자세한 내용은 시스템 업데이트 세트를 참조하십시오.
glide.security.explicit_roles.do_not_fix 동작
glide.security.explicit_roles.do_not_fix 가 snc_internal 변경되어 조정되었습니다. snc_internal 역할은 이제 메모리와 sys_user_has_role 모두 동일합니다. glide.security.explicit_roles.do_not_fix의 새로운 동작은 다음과 같습니다.| 값 | 결과 |
|---|---|
| 아니오 | 메모리와 sys_user_has_role 모두에서 snc_internal 역할 추가 |
| 예 | 메모리나 sys_user_has_role에 snc_internal 역할을 추가하지 마십시오. |
glide.security.explicit_roles.ignore.snc_internal.exclude_role_list 속성을 사용합니다. glide.security.explicit_roles.do_not_fix 동작으로 되돌리려면 glide.security.explicit_roles.do_not_fix_in_memory 속성을 사용합니다.외부 사용자에게 테이블 액세스 권한 제공
snc_external 역할을 상속하는 테이블에 역할을 추가하여 외부 사용자에게 테이블에 대한 액세스 권한을 제공할 수 있습니다. 자세한 내용은 Provide external users access to a table 문서를 참조하십시오.
HasRoles() 메서드
Hasroles() 메서드는 그대로 사용할 수 있지만 이 Geneva 릴리스에서는 사용하지 않습니다. 대신 hasRole(역할 이름) 메서드를 사용하십시오.
hasRoles() 메서드를 사용하는 경우 다음 변경 사항에 유의하십시오.- 이 메서드는 역할을 확인할 때 기본 snc_internal 역할을 자동으로 제외합니다. 즉, 사용자에게 snc_internal 역할만 있으면
hasRoles()메서드는 그대로 false를 반환합니다. - 사용자에게 snc_external 역할이 있는 경우 인스턴스가 외부 사용자에 게 역할이 없는 것으로 간주하므로 이 메서드는 false를 반환합니다.
상호 배제: snc_external과 snc_internal 비교
- snc_internal 역할을 사용자 Abel Tuter에게 할당합니다.
- snc_external 역할을 사용자 Abel Tuter에게 할당합니다.
결과: Abel Tuter에게 snc_internal 역할이 있으므로 snc_external 역할을 추가하지 못합니다.
예시: 그룹에 명시적 역할을 모두 추가합니다(직접 충돌).
- 테스트 그룹이라는 그룹에는 현재 그룹에 할당된 명시적 역할이 없는 것으로 고려합니다.
- 테스트 그룹에 Abel Tuter를 추가합니다.
- snc_external 역할을 테스트 그룹에 추가합니다.
결과: Abel Tuter에게 이미 snc_internal 역할이 있고 두 역할 모두 가질 수 없으므로 snc_external 역할을 추가하지 못합니다.
- snc_internal 역할을 사용자 Abel Tuter에게 할당합니다.
- 테스트 그룹이라는 그룹에는 현재 그룹에 할당된 명시적 역할이 없는 것으로 고려합니다.
- 테스트 그룹에 Abel Tuter를 추가합니다.
- snc_external 역할을 테스트 그룹에 추가합니다.
결과: Abel Tuter가 그룹 구성원 자격을 통해 snc_external 역할을 상속하므로 그룹에 snc_external 역할을 추가할 수 없습니다. 명시적 역할 모두 허용되지 않은 동일한 사용자에게 할당됩니다.
다른 예시의 경우 다음 테이블을 참조하십시오.
| 역할 | 시도한 동작 | 결과 |
|---|---|---|
| 직접 충돌 | ||
| 사용자에게 snc_internal 역할이 있습니다. | snc_external 역할을 추가합니다. | 동작이 중단되었습니다. |
| 사용자에게 snc_external 역할이 있습니다. | snc_internal 역할을 추가합니다. | 동작이 중단되었습니다. |
| 사용자에게 명시적 역할이 없습니다. | snc_internal 또는 snc_external 역할을 추가합니다. | 역할이 추가되었습니다. |
| 사용자에게 명시적 역할이 모두 있습니다(기존 충돌). | 역할이 없는 그룹에 사용자를 추가합니다. | 동작이 중단되었습니다. |
| 사용자와 관련되지 않은 역할에는 snc_internal 역할이 포함되어 있습니다. | snc_external 역할을 추가합니다. | 동작이 중단되었습니다. |
| 사용자와 관련되지 않은 역할에는 snc_external 역할이 포함되어 있습니다. | snc_internal 역할을 추가합니다. | 동작이 중단되었습니다. |
| 역할에 명시적 역할이 모두 있습니다(기존 충돌). | 사용자, 역할 또는 그룹에 역할을 추가합니다. | 동작이 중단되었습니다. |
| 구성원이 없는 그룹에 snc_internal 역할이 포함되어 있습니다. | snc_external 역할을 추가합니다. | 동작이 중단되었습니다. |
| 구성원이 없는 그룹에 snc_external 역할이 포함되어 있습니다. | snc_internal 역할을 추가합니다. | 동작이 중단되었습니다. |
| 구성원이 없는 그룹에는 역할이 없습니다. | snc_internal 또는 snc_external 역할을 추가합니다. | 역할이 추가되었습니다. |
| 간접 충돌 | ||
| 충돌이 포함된 역할 포함 |
|
동작이 중단되었습니다. |
| 충돌이 포함되지 않은 역할 포함 |
|
역할이 사용자와 테스트 역할 모두에 추가됩니다. |
| 충돌이 포함된 그룹 포함 |
|
동작이 중단되었습니다. |
| 충돌이 포함되지 않은 그룹 포함 |
|
역할이 상위 그룹, 하위 그룹 및 사용자에 추가됩니다. |
| 그룹 포함에 충돌이 있는 역할 포함 추가 | 테스트 그룹 1(테스트 그룹 2의 상위)에 contains_external을 추가합니다. | 테스트 그룹 1과 테스트 그룹 2는 모두 contains_external을 사용할 수 있지만 snc_external 역할을 명시적으로 사용하지는 않습니다. |
| 테스트 그룹 2(테스트 그룹 1의 하위)에 snc_internal 역할을 추가합니다. | 동작이 중단되었습니다. | |
| 그룹 상위 변경에 그룹 포함 추가 |
|
동작이 중단되었습니다. 동일한 결과가 되는 이미 중첩된 그룹에 대해 반복합니다. |
중단된 동작에 대한 원인이 오류 메시지에 나타나며 다른 시도하여 성공하려면 먼저 해결되어야 합니다.
개별 사용자에게 명시적 역할을 추가하는 등의 직접적인 케이스에는 사용자에게 명시적인 역할이 있는지 확인하십시오. 사용자에게 잘못된 명시적 역할이 있는 경우, 먼저 제거한 다음 올바른 명시적 역할을 추가해야 합니다.
명시적 역할을 그룹에 추가하는 것과 같은 간접적 케이스의 경우, 그룹 구성원에게 명시적인 역할이 모두 할당되도록 하려면 해당 사용자가 그룹에 있어야 하는지 여부를 평가하십시오. 그룹 계층 구조와 역할 포함을 통한 상속을 비롯하여 그룹에 명시적 역할을 지정해야 하는지 여부도 결정합니다.
ServiceNow AI Platform에서는 발생한 첫 번째 잠재적 충돌만 보고된다는 점에 유의하십시오. 매번 새로운 근본 원인이 있어 정정 이후에도 반복적인 시도 작업이 계속 실패하면 관련 사용자/그룹/역할 상호 의존성을 보다 폭넓게 다시 평가하십시오. 그룹 및 역할 포함을 구성하는 방식을 다시 생각해 볼 수 있습니다.
명시적 역할 요청
Service Catalog를 통해 Now Support Explicit Roles 플러그인(com.glide.explicit_roles)을 요청하여 명시적 역할을 활성화합니다.
시작하기 전에
필요한 역할: 관리자