Microsoft Dataverse의 보안 개념
Dataverse의 주요 기능 중 하나는 많은 비즈니스 사용 시나리오에 적응할 수 있는 풍부한 보안 모델입니다. 이 보안 모델은 환경에 Dataverse 데이터베이스가 있는 경우에만 실행됩니다. 관리자는 전체 보안 모델을 직접 구축하지 않을 가능성이 높지만 사용자를 관리하고 적절한 구성이 있는지 확인하고 보안 액세스 관련 문제를 해결하는 과정에 종종 관여합니다.
팁
다음의 비디오를 확인해 보세요: Microsoft Dataverse – 데모에서 보여지는 보안 개념.
역할 기반 보안
Dataverse는 역할 기반 보안을 사용하여 권한 모음을 그룹화합니다. 이러한 보안 역할은 사용자와 직접 연결하거나 Dataverse 팀 및 사업부와 연결할 수 있습니다. 그러면 사용자를 팀에 연결할 수 있고, 팀에 연결된 모든 사용자가 해당 역할의 이점을 누릴 수 있습니다. 이해해야 할 Dataverse 보안의 핵심 개념은 모든 권한 부여가 가장 많은 액세스 권한으로 누적된다는 것입니다. 모든 연락처 레코드에 대한 광범위한 조직 수준의 읽기 액세스 권한을 부여한 경우 돌아가서 단일 레코드를 숨길 수 없습니다.
사업부
팁
다음의 비디오를 확인해 보세요: 사업부 현대화.
사업부는 보안 역할과 함께 작업하여 사용자의 효과적인 보안을 결정합니다. 사업부는 사용자와 사용자가 액세스할 수 있는 데이터를 관리하는 데 도움이 되는 보안 모델링 구성 요소입니다. 사업부는 보안 경계를 정의합니다. 모든 Dataverse 데이터베이스에는 단일 루트 사업부가 있습니다.
하위 사업부를 만들어 사용자와 데이터를 더욱 세분화할 수 있습니다. 환경에 할당된 각 사용자는 사업부에 속합니다. 사업부를 사용하여 진정한 조직 계층 구조를 1:1로 모델링할 수 있지만, 보안 모델 요구를 달성하기 위해 정의된 보안 경계에 더 의존하는 경우가 더 많습니다.
보다 잘 이해하기 위해 다음 예제를 살펴 보겠습니다. 사업부는 3개가 있습니다. Woodgrove는 루트 사업부이며 항상 최상위에 위치하므로 변경할 수 없습니다. 우리는 두 개의 다른 자식 사업부 A와 B를 만들었습니다. 이들 사업부의 사용자는 서로 다른 액세스 요구 사항을 갖습니다. 사용자를 이 환경에 연결할 때 사용자를 이 세 가지 사업부 중 하나에 있게 설정할 수 있습니다. 사용자가 연결된 위치에 따라 해당 사용자가 소유한 레코드를 소유한 사업부가 결정됩니다. 해당 연결을 통해 사용자가 해당 사업부의 모든 레코드를 볼 수 있도록 보안 역할을 맞춤화할 수 있습니다.
계층적 데이터 액세스 구조
고객은 데이터와 사용자가 트리와 같은 계층 구조로 구분된 조직 구조를 사용할 수 있습니다.
사용자를 이 환경과 연결할 때 사용자를 이 세 가지 사업부 중 하나로 설정하고 사업부에서 사용자에게 보안 역할을 할당할 수 있습니다. 사용자가 연결된 사업부에 따라 사용자가 레코드를 생성할 때 레코드를 소유하는 사업부가 결정됩니다. 이러한 연관성을 통해 보안 역할를 맞춤화하여 사용자가 해당 사업부의 기록을 볼 수 있도록 할 수 있습니다.
사용자 A는 부서 A와 연결되고 부서 A에서 보안 역할 Y를 할당받습니다. 이를 통해 사용자 A는 연락처 #1 및 연락처 #2 레코드에 액세스할 수 있습니다. 사업부 B에 있는 사용자 B는 사업부 A의 연락처 레코드에는 접근할 수 없지만, 연락처 #3 레코드에는 접근할 수 있습니다.
매트릭스 데이터 액세스 구조(현대화된 사업부)
고객은 데이터가 트리와 같은 계층 구조로 구분된 조직 구조를 사용할 수 있으며 사용자는 사용자가 할당된 사업부에 관계없이 모든 사업부의 데이터에 액세스하고 작업할 수 있습니다.
사용자를 이 환경에 연결할 때 사용자를 이 세 가지 사업부 중 하나에 있게 설정할 수 있습니다. 사용자가 데이터에 액세스해야 하는 각 사업부에 대해 해당 사업부의 보안 역할이 사용자에게 할당됩니다. 사용자가 레코드를 생성할 때 사용자는 레코드를 소유하도록 사업부를 설정할 수 있습니다.
사용자 A는 루트 사업부를 포함한 모든 사업부와 연관될 수 있습니다. 부서 A의 보안 역할 Y가 사용자 A에게 할당되어 사용자에게 연락처 #1 및 연락처 #2 레코드에 대한 액세스 권한을 부여합니다. 부서 B의 보안 역할 Y가 사용자 A에게 할당되어 사용자에게 연락처 #3 레코드에 대한 액세스 권한을 부여합니다.
매트릭스 데이터 액세스 구조 활성화
노트
이 기능을 활성화하기 전에 해당 기능에 대해 게시되지 않은 모든 새 테이블을 활성화하려면 모든 사용자 지정을 게시해야 합니다. 이 기능을 켠 후 이 기능이 작동하지 않는 게시되지 않은 테이블이 있는 경우 Microsoft Dynamics CRM용 OrgDBOrgSettings 도구를 사용하여 RecomputeOwnershipAcrossBusinessUnits 설정을 지정할 수 있습니다. RecomputeOwnershipAcrossBusinessUnits를 true로 설정하면 소유 사업부 필드를 설정하고 업데이트할 수 있습니다.
- Power Platform 관리 센터 에 관리자(Dynamics 365 관리자 또는 Microsoft Power Platform 관리자)로 로그인하세요.
- 환경을 선택한 다음 이 기능을 활성화하려는 환경을 선택합니다.
- 설정>제품>기능을 선택합니다.
- 사업부 전반에 걸친 레코드 소유권을 켭니다.
이 기능 스위치를 켜면 사용자에게 보안 역할을 할당할 때 사업부를 선택할 수 있습니다. 이를 통해 다른 사업부의 보안 역할을 사용자에게 할당할 수 있습니다. 또한 사용자는 모델 기반 앱을 실행하기 위해 사용자 설정 권한이 할당된 사업부의 보안 역할이 필요합니다. 기본 사용자 보안 역할을 참조하여 이러한 사용자 설정 권한을 활성화하는 방법을 찾을 수 있습니다.
사용자에게 레코드 테이블에 대한 읽기 권한이 있는 보안 역할이 있는 한 레코드 담당 사업부에서 보안 역할을 할당할 필요 없이 모든 사업부에서 사용자를 레코드 담당자로 할당할 수 있습니다. 현대화된 사업부의 레코드 소유권을 참조하십시오.
노트
이 기능 스위치는 EnableOwnershipAcrossBusinessUnits 설정에 저장되며 Microsoft Dynamics CRM용 OrgDBOrgSettings 도구를 사용하여 설정할 수 있습니다.
사업부를 Microsoft Entra 보안 그룹에 연결합니다.
Microsoft Entra 보안 그룹을 사용하여 사용자 관리 및 역할 할당을 간소화하기 위해 사업부를 매핑할 수 있습니다.
각 사업부별로 Microsoft Entra 보안 그룹을 만들고 각 그룹 팀에 해당 사업부 보안 역할를 할당합니다.
각 사업부에 대해 Microsoft Entra 보안 그룹을 만듭니다. 각 Microsoft Entra 보안 그룹에 대한 Dataverse 그룹 팀을 만듭니다. 사업부에서 각 Dataverse 그룹 팀에 해당 보안 역할을 할당합니다. 위 다이어그램의 사용자는 사용자가 환경에 액세스할 때 루트 비즈니스 단위에 생성됩니다. 사용자와 Dataverse 그룹 팀이 루트 비즈니스 단위에 있는 것이 좋습니다. 보안 역할이 할당된 사업부의 데이터에만 액세스할 수 있습니다.
해당 Microsoft Entra 보안 그룹에 사용자를 추가하여 사업부에 대한 액세스 권한을 부여합니다. 사용자는 즉시 앱을 실행하고 해당 리소스/데이터에 액세스할 수 있습니다.
사용자가 여러 사업부에서 작업하고 데이터에 액세스할 수 있는 매트릭스 데이터 액세스에서 해당 사업부에 매핑된 Microsoft Entra 보안 그룹에 사용자를 추가합니다.
담당 사업부
각 레코드에는 레코드를 소유한 사업부를 결정하는 소유 사업부 열이 있습니다. 이 열은 레코드가 생성될 때 사용자의 사업부로 기본 설정되며, 기능 스위치가 켜져 있을 때를 제외하고는 변경할 수 없습니다.
참고
레코드를 소유한 사업부를 변경할 때 캐스케이드 효과에 대해 다음을 확인하세요. .NET용 SDK를 사용하여 계단식 동작 구성.
기능 스위치가 켜져 있을 때 사용자가 담당 사업부 열을 설정하도록 허용할지 여부를 관리할 수 있습니다. 담당 사업부 열을 설정하려면 사용자의 보안 역할에 사업부 권한이 있는 사업부 테이블의 추가 권한과 로컬 수준 권한을을 부여해야 합니다.
사용자가 이 열을 설정할 수 있도록 하려면 다음에서 이 열을 활성화할 수 있습니다.
- 양식 - 본문과 헤더 모두.
- 보기.
- 열 매핑. AutoMapEntity를 사용하는 경우 열에 매핑 열을 지정할 수 있습니다.
노트
환경 간에 데이터를 동기화하는 작업/프로세스가 있고 담당 사업부가 스키마의 일부로 포함되어 있는 경우 대상 환경에 동일한 담당 사업부 값이 없으면 외래 키 제약 위반으로 작업이 실패합니다.
원본 스키마에서 담당 사업부 열을 제거하거나 원본의 담당 사업부 열 값을 대상의 사업부로 업데이트할 수 있습니다.
환경에서 외부 리소스(예: PowerBI)로 데이터를 복사하는 작업/프로세스가 있는 경우 원본에서 담당 사업부 열을 선택하거나 선택 취소해야 합니다. 리소스가 수신할 수 있으면 선택하고 그렇지 않으면 선택을 취소합니다.
테이블/레코드 소유권
Dataverse는 두 가지 유형의 레코드 소유권 형태를 지원합니다. 조직 담당 엔터티 및 사용자 또는 팀 담당. 이것은 테이블이 생성될 때 발생하며 변경할 수 없는 선택입니다. 보안을 위해 조직이 담당한 레코드의 유일한 액세스 수준 선택은 사용자가 작업을 수행할 수 있는지 여부입니다. 사용자 및 팀 담당 레코드의 경우 대부분의 권한에 대한 액세스 수준 선택은 계층화된 조직, 사업부, 사업부 및 하위 사업부 또는 사용자 자신의 레코드입니다. 이는 연락처에 대한 읽기 권한을 의미하며 사용자 담당을 설정하면 사용자는 자신의 레코드만 볼 수 있습니다.
다른 예를 들면, 사용자 A가 부서 A와 연결되어 있고 연락처에 대한 사업부 수준 읽기 액세스 권한을 부여했다고 가정하겠습니다. 연락처 #1 및 #2는 볼 수 있지만 연락처 #3은 볼 수 없습니다.
보안 역할 권한을 구성하거나 편집할 때 각 옵션에 대한 액세스 수준을 설정합니다. 다음은 보안 역할 권한 편집기의 예입니다.
위에서 생성, 읽기, 쓰기, 삭제, 추가, 추가, 할당 및 공유 각 테이블에 대한 표준 권한 유형을 볼 수 있습니다. 이들 각각을 개별적으로 편집할 수 있습니다. 각각의 시각적 표시는 부여한 액세스 수준에 대해 아래 키와 일치합니다.
위의 예에서는 연락처에 조직 수준의 액세스 권한을 부여했습니다. 즉, 부서 A의 사용자가 모든 사람이 담당하는 연락처를 보고 업데이트할 수 있습니다. 실제로 가장 일반적인 관리 실수 중 하나는 권한에 대해 잘못 판단하여 과도하게 액세스 권한을 부여하는 것입니다. 아주 잘 만들어진 보안 모델이 구멍이 뻥뻥 뚫린 스위스 치즈처럼 보이기 시작합니다.
현대화된 사업부의 레코드 소유권
현대화된 사업부에서는 사용자가 모든 사업부의 레코드 담당자가 되도록 할 수 있습니다. 사용자에게 필요한 것은 레코드 테이블에 대한 읽기 권한이 있는 보안 역할(모든 사업부)뿐입니다. 사용자는 레코드가 있는 각 사업부에 보안 역할을 할당할 필요가 없습니다.
프리뷰 기간 동안 프로덕션 사용자의 환경에서 사업부 전반의 레코드 소유권이 활성화된 경우 사업부 전반에서 이 레코드 소유권을 활성화하려면 다음을 수행해야 합니다.
- 조직 설정 편집기 설치
- RecomputeOwnershipAcrossBusinessUnits 조직 설정을 true로 설정합니다. 이 설정이 true로 설정되면 시스템이 잠기고 사용자가 이제 각 사업부에서 별도의 보안 역할를 할당할 필요 없이 사업부 전체에서 레코드를 소유할 수 있는 기능을 활성화하기 위해 재계산을 수행하는 데 최대 5분이 걸릴 수 있습니다. 이를 통해 레코드 소유자는 레코드를 소유한 비즈니스 단위 외부의 사람에게 자신의 레코드를 할당할 수 있습니다.
- AlwaysMoveRecordToOwnerBusinessUnit을 false로 설정합니다. 이렇게 하면 레코드 소유권이 변경될 때 레코드가 원래의 담당 사업부에 남아 있습니다.
모든 비프로덕션 환경의 경우 이 기능을 사용하려면 AlwaysMoveRecordToOwnerBusinessUnit을 false로 설정하기만 하면 됩니다.
노트
사업부 간 소유권 형태 기록 기능을 끄거나 Microsoft Dynamics CRM용 OrgDBOrgSettings 도구를 사용하여 RecomputeOwnershipAcrossBusinessUnits 설정을 false로 설정하면 담당 사업부 필드를 설정하거나 업데이트할 수 없으며 담당 사업부 필드가 담당자의 사업부와 다른 모든 레코드가 담당자의 사업부로 업데이트됩니다.
팀(그룹 팀 포함)
팀은 또 다른 중요한 보안 구성 요소입니다. 팀은 사업부에서 담당합니다. 모든 사업부에는 사업부를 만들 때 자동으로 생성되는 하나의 기본 팀이 있습니다. 기본 팀 구성원은 Dataverse에 의해 관리되며 항상 해당 사업부와 관련된 모든 사용자를 포함합니다. 기본 팀에서 구성원을 수동으로 추가하거나 제거할 수 없으며 새 사용자가 사업부와 연결/연결 해제되면 시스템에 의해 동적으로 조정됩니다. 담당 팀과 액세스 팀의 두 가지 유형의 팀이 있습니다.
- 담당 팀은 레코드를 담당할 수 있으므로 모든 팀 구성원이 해당 레코드에 직접 액세스할 수 있습니다. 사용자는 여러 팀의 구성원이 될 수 있습니다. 이를 통해 개별 사용자 수준에서 액세스를 세부적으로 관리하지 않고도 광범위한 방법으로 사용자에게 권한을 부여할 수 있습니다.
- 액세스 팀은 레코드 공유의 일부로 다음 섹션에서 설명합니다.
레코드 공유
개별 레코드는 한 명의 다른 사용자와 하나씩 공유할 수 있습니다. 이는 레코드 소유권에 속하지 않거나 사업부 액세스 모델의 구성원인 예외를 처리하는 강력한 방법입니다. 그러나 액세스를 제어하는 성능이 떨어지기 때문에 예외여야 합니다. 공유는 일관되게 구현된 액세스 제어가 아니기 때문에 문제를 해결하기가 더 어렵습니다. 사용자 및 팀 수준에서 공유할 수 있습니다. 팀과 공유하는 것이 보다 효율적인 공유 방법입니다. 보다 고급 공유 개념은 팀의 자동 생성을 제공하고 팀과의 기록 액세스 공유가 적용된 액세스 팀 템플릿(사용 권한 템플릿)을 기반으로 하는 액세스 팀을 사용하는 것입니다. 액세스 팀은 템플릿 없이도 구성원을 수동으로 추가하거나 제거하여 사용할 수 있습니다. 액세스 팀은 팀이 레코드를 소유하거나 팀에 보안 역할을 할당할 수 없도록 하기 때문에 더욱 성능이 뛰어납니다. 레코드가 팀과 공유되고 사용자는 그 구성원이므로 액세스 권한을 가집니다.
Dataverse의 레코드 수준 보안
레코드에 대한 액세스 권한을 결정하는 것이 무엇인지 궁금할 수 있습니다. 간단한 질문처럼 들리지만 특정 사용자에게는 모든 보안 역할, 연관된 사업부, 소속 팀, 공유 기록 등이 모두 조합되어 있습니다. 기억해야 할 핵심은 모든 액세스가 Dataverse 데이터베이스 환경 범위의 모든 개념에 걸쳐 누적된다는 것입니다. 이러한 권한은 단일 데이터베이스 내에서만 부여되며 각 Dataverse 데이터베이스에서 개별적으로 추적됩니다. 이 모든 것이 Dataverse에 액세스할 수 있는 적절한 라이선스가 있어야 합니다.
Dataverse의 열 수준 보안
때로는 일부 비즈니스 시나리오에서는 기록 수준의 액세스 제어가 적합하지 않을 수 있습니다. Dataverse에는 열 수준에서 보안을 보다 세밀하게 제어할 수 있는 열 수준 보안 기능이 있습니다. 모든 사용자 지정 열과 대부분의 시스템 열에서 열 수준 보안을 활성화할 수 있습니다. 개인 식별 정보(PII)를 포함하는 대부분의 시스템 열은 개별적으로 보호할 수 있습니다. 각 열의 메타데이터는 이가 시스템 열에 사용 가능한 옵션인지를 정의합니다.
열 수준 보안은 열별로 활성화됩니다. 그런 다음 열 보안 프로필을 생성하여 액세스를 관리합니다. 프로필에는 열 수준 보안이 활성화된 모든 열과 해당 특정 프로필이 부여한 액세스가 포함됩니다. 만들기, 업데이트 및 읽기 액세스를 위해 프로필 내에서 각 열을 제어할 수 있습니다. 열 보안 프로필은 사용자 또는 팀과 연결되어 해당 사용자에게 이미 액세스 권한이 있는 레코드에 대한 권한을 부여합니다. 열 수준 보안은 레코드 수준 보안과 관련이 없다는 점에 유의해야 합니다. 사용자에게 열에 대한 액세스 권한을 부여하려면 열 보안 프로필의 레코드에 대한 액세스 권한이 이미 있어야 합니다. 과도하게 사용되는 경우 오버헤드를 추가할 수 있으므로 열 수준 보안을 필요에 따라 사용해야 합니다.
여러 환경 간 보안 관리
Dataverse 솔루션을 사용하여 보안 역할 및 열 보안 프로필을 한 환경에서 다음 환경으로 패키징 및 이동할 수 있습니다. 사업부와 팀은 각각 환경에서 생성되고 관리되어야 하며 필요한 보안 구성 요소에 사용자를 할당해야 합니다.
사용자 환경 보안 구성
역할, 팀 및 사업부가 환경에 생성되면 사용자에게 보안 구성을 할당해야 합니다. 먼저 사용자를 만들 때 사용자를 비즈니스 단위와 연결합니다. 기본적으로 조직의 루트 사업부입니다. 또한 해당 사업부의 기본 팀에도 추가됩니다.
또한 사용자에게 필요한 보안 역할을 할당합니다. 팀의 구성원으로 추가할 수도 있습니다. 팀도 보안 역할을 가질 수 있으므로 사용자의 유효 권한은 직접 할당된 보안 역할과 그들이 속한 팀의 보안 역할의 조합입니다. 보안은 항상 그 권리 유형 중 가장 제한적인 권리 유형을 제공하는 부가 기능입니다. 다음은 환경 보안 구성의 좋은 연습입니다.
열 수준 보안을 사용한 경우 사용자 또는 사용자 팀을 생성 한 열 보안 프로필 중 하나에 연결해야 합니다.
보안은 복잡한 문제이며, 애플리케이션 제작자와 사용자 권한을 관리하는 팀의 공동 노력으로 가장 잘 달성될 수 있습니다. 변경 사항을 환경에 배포하기 전에 모든 주요 변경 사항을 잘 조정해야 합니다.