Microsoft Dataverse의 보안 개념

Dataverse의 주요 기능 중 하나는 많은 비즈니스 사용 시나리오에 적응할 수 있는 풍부한 보안 모델입니다. 이 보안 모델은 환경에 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로 설정하면 소유 사업부 필드를 설정하고 업데이트할 수 있습니다.

  1. Power Platform 관리 센터에 관리자(Dynamics 365 관리자, 전역 관리자 또는 Microsoft Power Platform 관리자)로 로그인합니다.
  2. 환경을 선택한 다음 이 기능을 활성화하려는 환경을 선택합니다.
  3. 설정>제품>기능을 선택합니다.
  4. 사업부 전반에 걸친 레코드 소유권켭니다.

이 기능 스위치를 켜면 사용자에게 보안 역할을 할당할 때 사업부를 선택할 수 있습니다. 이를 통해 다른 사업부의 보안 역할을 사용자에게 할당할 수 있습니다. 또한 사용자는 모델 기반 앱을 실행하기 위해 사용자 설정 권한이 할당된 사업부의 보안 역할이 필요합니다. 기본 사용자 보안 역할을 참조하여 이러한 사용자 설정 권한을 활성화하는 방법을 찾을 수 있습니다.

사용자에게 레코드 테이블에 대한 읽기 권한이 있는 보안 역할이 있는 한 레코드 담당 사업부에서 보안 역할을 할당할 필요 없이 모든 사업부에서 사용자를 레코드 담당자로 할당할 수 있습니다. 현대화된 사업부의 레코드 소유권을 참조하십시오.

노트

이 기능 스위치는 EnableOwnershipAcrossBusinessUnits 설정에 저장되며 Microsoft Dynamics CRM용 OrgDBOrgSettings 도구를 사용하여 설정할 수 있습니다.

사업부를 Microsoft Entra 보안 그룹에 연결합니다.

Microsoft Entra 보안 그룹을 사용하여 사용자 관리 및 역할 할당을 간소화하기 위해 사업부를 매핑할 수 있습니다.

각 사업부에 대한 Microsoft Entra보안 그룹을 만들고 각 그룹 팀에 해당 사업부 보안 역할을 할당합니다.

각 사업부별로 Microsoft Entra 보안 그룹을 만듭니다.

각 사업부에 대해 Microsoft Entra 보안 그룹을 만듭니다. 각 Microsoft Entra 보안 그룹에 대한 Dataverse 그룹 팀을 만듭니다. 사업부에서 각 Dataverse 그룹 팀에 해당 보안 역할을 할당합니다. 위 다이어그램의 사용자는 사용자가 환경에 액세스할 때 루트 비즈니스 단위에 생성됩니다. 사용자와 Dataverse 그룹 팀이 루트 비즈니스 단위에 있는 것이 좋습니다. 보안 역할이 할당된 사업부의 데이터에만 액세스할 수 있습니다.

해당 Microsoft Entra 보안 그룹에 사용자를 추가하여 사업부에 대한 액세스 권한을 부여합니다. 사용자는 즉시 앱을 실행하고 해당 리소스/데이터에 액세스할 수 있습니다.

사용자가 여러 사업부에서 작업하고 데이터에 액세스할 수 있는 매트릭스 데이터 액세스에서 해당 사업부에 매핑된 Microsoft Entra 보안 그룹에 사용자를 추가합니다.

담당 사업부

각 레코드에는 레코드를 소유하는 비즈니스 단위를 결정하는 담당 사업부 열이 있습니다. 이 열은 레코드가 생성될 때 사용자의 사업부로 기본 설정되며 기능 스위치가 켜져 있을 때를 제외하고는 변경할 수 없습니다.

노트

레코드를 소유한 사업부를 변경할 때 캐스케이드 효과에 대해 다음을 확인하세요. .NET용 SDK를 사용하여 계단식 동작 구성.

기능 스위치가 켜져 있을 때 사용자가 담당 사업부 열을 설정하도록 허용할지 여부를 관리할 수 있습니다. 담당 사업부 열을 설정하려면 사용자의 보안 역할에 사업부 권한이 있는 사업부 테이블의 추가 권한과 로컬 수준 권한을을 부여해야 합니다.

사용자가 이 열을 설정할 수 있도록 하려면 다음에서 이 열을 활성화할 수 있습니다.

  1. 양식 - 본문과 헤더 모두.
  2. 보기.
  3. 열 매핑. AutoMapEntity를 사용 중인 경우 열 매핑에서 열을 지정할 수 있습니다.

노트

환경 간에 데이터를 동기화하는 작업/프로세스가 있고 담당 사업부가 스키마의 일부로 포함되어 있는 경우 대상 환경에 동일한 담당 사업부 값이 없으면 외래 키 제약 위반으로 작업이 실패합니다.

원본 스키마에서 담당 사업부 열을 제거하거나 원본의 담당 사업부 열 값을 대상의 사업부로 업데이트할 수 있습니다.

환경에서 외부 리소스(예: PowerBI)로 데이터를 복사하는 작업/프로세스가 있는 경우 원본에서 담당 사업부 열을 선택하거나 선택 취소해야 합니다. 리소스가 수신할 수 있으면 선택하고 그렇지 않으면 선택을 취소합니다.

테이블/레코드 소유권

Dataverse는 두 가지 유형의 레코드 소유권 형태를 지원합니다. 조직 담당 엔터티 및 사용자 또는 팀 담당. 이것은 테이블이 생성될 때 발생하며 변경할 수 없는 선택입니다. 보안을 위해 조직이 담당한 레코드의 유일한 액세스 수준 선택은 사용자가 작업을 수행할 수 있는지 여부입니다. 사용자 및 팀 담당 레코드의 경우 대부분의 권한에 대한 액세스 수준 선택은 계층화된 조직, 사업부, 사업부 및 하위 사업부 또는 사용자 자신의 레코드입니다. 이는 연락처에 대한 읽기 권한을 의미하며 사용자 담당을 설정하면 사용자는 자신의 레코드만 볼 수 있습니다.

다른 예를 들면, 사용자 A가 부서 A와 연결되어 있고 연락처에 대한 사업부 수준 읽기 액세스 권한을 부여했다고 가정하겠습니다. 연락처 #1 및 #2는 볼 수 있지만 연락처 #3은 볼 수 없습니다.

보안 역할 권한을 구성하거나 편집할 때 각 옵션에 대한 액세스 수준을 설정합니다. 다음은 보안 역할 권한 편집기의 예입니다.

보안 역할 권한.

위에서 생성, 읽기, 쓰기, 삭제, 추가, 추가, 할당 및 공유 각 테이블에 대한 표준 권한 유형을 볼 수 있습니다. 이들 각각을 개별적으로 편집할 수 있습니다. 각각의 시각적 표시는 부여한 액세스 수준에 대해 아래 키와 일치합니다.

보안 역할 권한 키.

위의 예에서는 연락처에 조직 수준의 액세스 권한을 부여했습니다. 즉, 부서 A의 사용자가 모든 사람이 담당하는 연락처를 보고 업데이트할 수 있습니다. 실제로 가장 일반적인 관리 실수 중 하나는 권한에 대해 잘못 판단하여 과도하게 액세스 권한을 부여하는 것입니다. 아주 잘 만들어진 보안 모델이 구멍이 뻥뻥 뚫린 스위스 치즈처럼 보이기 시작합니다.

현대화된 사업부의 레코드 소유권

현대화된 사업부에서는 사용자가 모든 사업부의 레코드 담당자가 되도록 할 수 있습니다. 사용자에게 필요한 것은 레코드 테이블에 대한 읽기 권한이 있는 보안 역할(모든 사업부)뿐입니다. 사용자는 레코드가 있는 각 사업부에 보안 역할을 할당할 필요가 없습니다.

프리뷰 기간 동안 프로덕션 사용자의 환경에서 사업부 전반의 레코드 소유권이 활성화된 경우 사업부 전반에서 이 레코드 소유권을 활성화하려면 다음을 수행해야 합니다.

  1. 조직 설정 편집기 설치
  2. RecomputeOwnershipAcrossBusinessUnits 조직 설정을 true로 설정합니다. 이 설정이 true로 설정되면 시스템이 잠기고 사용자가 이제 각 사업부에서 별도의 보안 역할를 할당할 필요 없이 사업부 전체에서 레코드를 소유할 수 있는 기능을 활성화하기 위해 재계산을 수행하는 데 최대 5분이 걸릴 수 있습니다. 이를 통해 레코드 소유자는 레코드를 소유한 비즈니스 단위 외부의 사람에게 자신의 레코드를 할당할 수 있습니다.
  3. AlwaysMoveRecordToOwnerBusinessUnit을 false로 설정합니다. 이렇게 하면 레코드 소유권이 변경될 때 레코드가 원래의 담당 사업부에 남아 있습니다.

모든 비프로덕션 환경의 경우 이 기능을 사용하려면 AlwaysMoveRecordToOwnerBusinessUnit을 false로 설정하기만 하면 됩니다.

노트

사업부 간 소유권 형태 기록 기능을 끄거나 Microsoft Dynamics CRM용 OrgDBOrgSettings 도구를 사용하여 RecomputeOwnershipAcrossBusinessUnits 설정을 false로 설정하면 담당 사업부 필드를 설정하거나 업데이트할 수 없으며 담당 사업부 필드가 담당자의 사업부와 다른 모든 레코드가 담당자의 사업부로 업데이트됩니다.

팀(그룹 팀 포함)

팀은 또 다른 중요한 보안 구성 요소입니다. 팀은 사업부에서 담당합니다. 모든 사업부에는 사업부를 만들 때 자동으로 생성되는 하나의 기본 팀이 있습니다. 기본 팀 구성원은 Dataverse에 의해 관리되며 항상 해당 사업부와 관련된 모든 사용자를 포함합니다. 기본 팀에서 구성원을 수동으로 추가하거나 제거할 수 없으며 새 사용자가 사업부와 연결/연결 해제되면 시스템에 의해 동적으로 조정됩니다. 담당 팀과 액세스 팀의 두 가지 유형의 팀이 있습니다.

  • 담당 팀은 레코드를 담당할 수 있으므로 모든 팀 구성원이 해당 레코드에 직접 액세스할 수 있습니다. 사용자는 여러 팀의 구성원이 될 수 있습니다. 이를 통해 개별 사용자 수준에서 액세스를 세부적으로 관리하지 않고도 광범위한 방법으로 사용자에게 권한을 부여할 수 있습니다.
  • 액세스 팀은 레코드 공유의 일부로 다음 섹션에서 설명합니다.

레코드 공유

개별 레코드는 한 명의 다른 사용자와 하나씩 공유할 수 있습니다. 이는 레코드 소유권에 속하지 않거나 사업부 액세스 모델의 구성원인 예외를 처리하는 강력한 방법입니다. 그러나 액세스를 제어하는 성능이 떨어지기 때문에 예외여야 합니다. 공유는 일관되게 구현된 액세스 제어가 아니기 때문에 문제를 해결하기가 더 어렵습니다. 사용자 및 팀 수준에서 공유할 수 있습니다. 팀과 공유하는 것이 보다 효율적인 공유 방법입니다. 보다 고급 공유 개념은 팀의 자동 생성을 제공하고 팀과의 기록 액세스 공유가 적용된 액세스 팀 템플릿(사용 권한 템플릿)을 기반으로 하는 액세스 팀을 사용하는 것입니다. 액세스 팀은 템플릿 없이도 구성원을 수동으로 추가하거나 제거하여 사용할 수 있습니다. 액세스 팀은 팀이 레코드를 소유하거나 팀에 보안 역할을 할당할 수 없도록 하기 때문에 더욱 성능이 뛰어납니다. 레코드가 팀과 공유되고 사용자는 그 구성원이므로 액세스 권한을 가집니다.

Dataverse의 레코드 수준 보안

레코드에 대한 액세스 권한을 결정하는 것이 무엇인지 궁금할 수 있습니다. 그것은 간단한 질문처럼 들리지만 주어진 사용자에게는 모든 보안 역할, 연결된 사업부, 그들이 속한 팀 및 공유된 레코드의 조합입니다. 기억해야 할 핵심은 모든 액세스가 Dataverse 데이터베이스 환경 범위의 모든 개념에 걸쳐 누적된다는 것입니다. 이러한 권한은 단일 데이터베이스 내에서만 부여되며 각 Dataverse 데이터베이스에서 개별적으로 추적됩니다. 이 모든 것이 Dataverse에 액세스할 수 있는 적절한 라이선스가 있어야 합니다.

Dataverse의 열 수준 보안

경우에 따라 레코드 수준의 액세스 제어가 일부 비즈니스 시나리오에 적합하지 않습니다. Dataverse에는 열 수준에서 보안을 보다 세밀하게 제어할 수 있는 열 수준 보안 기능이 있습니다. 모든 사용자 지정 열과 대부분의 시스템 열에서 열 수준 보안을 활성화할 수 있습니다. 개인 식별 정보(PII)를 포함하는 대부분의 시스템 열은 개별적으로 보호할 수 있습니다. 각 열의 메타데이터는 이가 시스템 열에 사용 가능한 옵션인지를 정의합니다.

열 수준 보안은 열별로 활성화됩니다. 그런 다음 열 보안 프로필을 생성하여 액세스를 관리합니다. 프로필에는 열 수준 보안이 활성화된 모든 열과 해당 특정 프로필이 부여한 액세스가 포함됩니다. 만들기, 업데이트 및 읽기 액세스를 위해 프로필 내에서 각 열을 제어할 수 있습니다. 열 보안 프로필은 사용자 또는 팀과 연결되어 해당 사용자에게 이미 액세스 권한이 있는 레코드에 대한 권한을 부여합니다. 열 수준 보안은 레코드 수준 보안과 관련이 없다는 점에 유의해야 합니다. 사용자에게 열에 대한 액세스 권한을 부여하려면 열 보안 프로필의 레코드에 대한 액세스 권한이 이미 있어야 합니다. 과도하게 사용되는 경우 오버헤드를 추가할 수 있으므로 열 수준 보안을 필요에 따라 사용해야 합니다.

여러 환경 간 보안 관리

Dataverse 솔루션을 사용하여 보안 역할 및 열 보안 프로필을 한 환경에서 다음 환경으로 패키징 및 이동할 수 있습니다. 사업부와 팀은 각각 환경에서 생성되고 관리되어야 하며 필요한 보안 구성 요소에 사용자를 할당해야 합니다.

사용자 환경 보안 구성

역할, 팀 및 사업부가 환경에 생성되면 사용자에게 보안 구성을 할당해야 합니다. 먼저 사용자를 만들 때 사용자를 비즈니스 단위와 연결합니다. 기본적으로 조직의 루트 사업부입니다. 또한 해당 사업부의 기본 팀에도 추가됩니다.

또한 사용자에게 필요한 보안 역할을 할당합니다. 팀의 구성원으로 추가할 수도 있습니다. 팀도 보안 역할을 가질 수 있으므로 사용자의 유효 권한은 직접 할당된 보안 역할과 그들이 속한 팀의 보안 역할의 조합입니다. 보안은 항상 그 권리 유형 중 가장 제한적인 권리 유형을 제공하는 부가 기능입니다. 다음은 환경 보안 구성의 좋은 연습입니다.

열 수준 보안을 사용한 경우 사용자 또는 사용자 팀을 생성 한 열 보안 프로필 중 하나에 연결해야 합니다.

보안은 복잡한 문서이며 애플리케이션 제작자와 사용자 권한을 관리하는 팀 간의 공동 노력으로 가장 잘 수행됩니다. 변경 사항을 환경에 배포하기 전에 모든 주요 변경 사항을 잘 조정해야 합니다.

참조

환경 보안 구성
보안 역할 및 권한