서비스 설명: Microsoft Purview
다음의 일반적인 단계에 따라 DKE를 설정합니다. 이 단계를 완료하면 최종 사용자가 이중 키 암호화를 사용하여 매우 중요한 데이터를 보호할 수 있습니다.
이 문서에 설명된 대로 DKE 서비스를 배포합니다. 환경이 최소 시스템 및 라이선스 요구 사항을 충족하는지 확인합니다. 자세한 내용은 DKE에 대한 시스템 및 라이선스 요구 사항을 참조하세요.
이중 키 암호화를 사용하여 레이블을 만듭니다. Microsoft Purview 포털에서 Information Protection 으로 이동하고 이중 키 암호화를 사용하여 새 레이블을 만듭니다. 민 감도 레이블을 사용하여 암호화를 적용하여 콘텐츠에 대한 액세스 제한을 참조하세요.
이중 키 암호화 레이블을 사용할 수 있도록 클라이언트 디바이스에서 레지스트리를 구성합니다. 그런 다음, Microsoft Office의 민감도 리본에서 이중 키 암호화 레이블을 선택하여 데이터를 보호합니다.
이중 키 암호화를 배포하는 몇 가지 단계를 완료할 수 있는 방법에는 여러 가지가 있습니다. 이 문서에서는 경험이 부족한 관리자가 서비스를 성공적으로 배포할 수 있도록 자세한 지침을 제공합니다. 그렇게 하는 것이 편하다면 자신만의 방법을 선택할 수 있습니다.
DKE 배포
이 문서와 배포 비디오에서는 Azure를 DKE 서비스의 배포 대상으로 사용합니다. 다른 위치에 배포하는 경우 고유한 값을 제공해야 합니다.
다음의 일반적인 단계에 따라 organization에 이중 키 암호화를 설정합니다.
- DKE 서비스에 대한 소프트웨어 필수 구성 요소 설치
- 이중 키 암호화 GitHub 리포지토리 복제
- 애플리케이션 설정 수정
- 테스트 키 생성
- 프로젝트 빌드
- DKE 서비스 배포 및 키 저장소 게시
- 배포 유효성 검사
- 키 저장소 등록
- DKE를 사용하여 민감도 레이블 만들기
- 보호된 파일을 HYOK 레이블에서 DKE 레이블로 마이그레이션
완료되면 DKE를 사용하여 문서와 파일을 암호화할 수 있습니다. 자세한 내용은 Office에서 파일 및 전자 메일에 민감도 레이블 적용을 참조하세요.
DKE 서비스에 대한 소프트웨어 필수 구성 요소 설치
DKE 서비스를 설치하려는 컴퓨터에 이러한 필수 구성 요소를 설치합니다.
.NET 8.0 SDK입니다. .NET 8.0 다운로드에서 SDK를 다운로드하여 설치합니다.
Visual Studio Code. 다음에서 https://code.visualstudio.com/Visual Studio Code를 다운로드합니다. 설치가 완료되면 Visual Studio Code를 실행하고 확장 보기>를 선택합니다. 다음 확장을 설치합니다.
Visual Studio Code용 C#
NuGet 패키지 관리자
Git 리소스를 사용합니다. 다음 중 하나를 다운로드하여 설치합니다.
OpenSSL입니다. DKE를 배포한 후 테스트 키를 생성하려면 OpenSSL이 설치되어 있어야 합니다. 환경 변수 경로에서 올바르게 호출하고 있는지 확인합니다. 예를 들어 자세한 내용은 " https://www.osradar.com/install-openssl-windows/ PATH에 설치 디렉터리 추가"를 참조하세요.
DKE GitHub 리포지토리 복제
Microsoft는 GitHub 리포지토리에 있는 DKE 원본 파일을 제공합니다. 리포지토리를 복제하여 organization에서 사용할 수 있도록 프로젝트를 로컬로 빌드합니다. DKE GitHub 리포지토리는 에 있습니다.https://github.com/Azure-Samples/DoubleKeyEncryptionService
다음 지침은 경험이 없는 git 또는 Visual Studio Code 사용자를 위한 것입니다.
브라우저에서 다음으로 이동합니다. https://github.com/Azure-Samples/DoubleKeyEncryptionService
화면 오른쪽에서 코드를 선택합니다. UI 버전에 복제 또는 다운로드 단추가 표시될 수 있습니다. 그런 다음 나타나는 드롭다운에서 복사 아이콘을 선택하여 URL을 클립보드에 복사합니다.
예시:
Visual Studio Code에서명령 팔레트보기>를 선택하고 Git: 복제를 선택합니다. 목록의 옵션으로 이동하려면 입력을
git: clone시작하여 항목을 필터링한 다음 드롭다운에서 선택합니다. 예시:
텍스트 상자에 Git에서 복사한 URL을 붙여넣고 GitHub에서 복제를 선택합니다.
표시되는 폴더 선택 대화 상자에서 리포지토리를 저장할 위치를 찾아 선택합니다. 열기를 선택합니다.
리포지토리가 Visual Studio Code에서 열리고 왼쪽 하단에 현재 Git 분기가 표시됩니다. 분기는 main이어야 합니다. 예시:
주 분기에 없는 경우 선택합니다. Visual Studio Code에서 분기를 선택하고 표시되는 분기 목록에서 기본을 선택합니다.
중요
main 분기를 선택하면 프로젝트를 빌드하기 위한 올바른 파일이 있는지 확인할 수 있습니다. 올바른 분기를 선택하지 않으면 배포가 실패합니다.
이제 DKE 원본 리포지토리가 로컬로 설정되었습니다. 다음으로, organization에 대한 애플리케이션 설정을 수정합니다.
애플리케이션 설정 수정
DKE 서비스를 배포하려면 다음 유형의 애플리케이션 설정을 수정해야 합니다.
appsettings.json 파일에서 애플리케이션 설정을 수정합니다. 이 파일은 로컬로 복제한 DoubleKeyEncryptionService 리포지토리의 DoubleKeyEncryptionService\src\customer-key-store에 있습니다. 예를 들어 Visual Studio Code에서 다음 그림과 같이 파일을 찾아볼 수 있습니다.
키 액세스 설정
전자 메일 또는 역할 인증을 사용할지 선택합니다. DKE는 한 번에 이러한 인증 방법 중 하나만 지원합니다.
Email 인증. organization에서 전자 메일 주소만을 기반으로 키에 대한 액세스 권한을 부여할 수 있습니다.
역할 권한 부여. organization에서 Active Directory 그룹을 기반으로 키에 대한 액세스 권한을 부여할 수 있으며 웹 서비스가 LDAP를 쿼리할 수 있어야 합니다.
전자 메일 인증을 사용하여 DKE에 대한 키 액세스 설정을 지정하려면
appsettings.json 파일을 열고 설정을 찾습니다
AuthorizedEmailAddress.승인하려는 전자 메일 주소를 추가합니다. 여러 전자 메일 주소를 큰따옴표와 쉼표로 구분합니다. 예시:
"AuthorizedEmailAddress": ["email1@company.com", "email2@company.com ", "email3@company.com"]설정을 찾고
LDAPPath큰따옴표 사이의 텍스트If you use role authorization (AuthorizedRoles) then this is the LDAP path.를 제거합니다. 큰따옴표는 그대로 둡니다. 완료되면 설정은 다음과 같이 표시됩니다."LDAPPath": ""설정을 찾아
AuthorizedRoles전체 줄을 삭제합니다.
이 이미지는 전자 메일 인증을 위해 올바르게 포맷된 appsettings.json 파일을 보여 줍니다.
역할 권한 부여를 사용하여 DKE에 대한 키 액세스 설정을 설정하려면
appsettings.json 파일을 열고 설정을 찾습니다
AuthorizedRoles.권한을 부여하려는 Active Directory 그룹 이름을 추가합니다. 여러 그룹 이름을 큰따옴표와 쉼표로 구분합니다. 예시:
"AuthorizedRoles": ["group1", "group2", "group3"]설정을 찾아
LDAPPathActive Directory 도메인을 추가합니다. 예시:"LDAPPath": "contoso.com"설정을 찾아
AuthorizedEmailAddress전체 줄을 삭제합니다.
이 이미지는 역할 권한 부여에 대해 올바르게 포맷된 appsettings.json 파일을 보여 줍니다.
테넌트 및 키 설정
DKE 테넌트 및 키 설정은 appsettings.json 파일에 있습니다.
DKE에 대한 테넌트 및 키 설정을 구성하려면
appsettings.json 파일을 엽니다.
설정을 찾아
ValidIssuers테넌트 ID로 바꾸<tenantid>고 테넌트 ID 끝에 슬래시를 유지해야 합니다. Azure Portal로 이동하고 테넌트 속성을 보고 테넌트 ID를 찾을 수 있습니다. 예시:"ValidIssuers": [ "https://sts.windows.net/9c99431e-b513-44be-a7d9-e7b500002d4b/" ]
참고
키 저장소에 대한 외부 B2B 액세스를 사용하도록 설정하려면 이러한 외부 테넌트도 유효한 발급자 목록의 일부로 포함해야 합니다.
JwtAudience. json의 자리 표시자 값을 "https://dkeservice.contoso.com" DKE 서비스를 실행할 컴퓨터의 호스트 이름으로 바꿉니다.
중요
의 JwtAudience 값은 호스트의 이름과 정확하게 일치해야 합니다.
-
TestKeys:Name. 키 이름을 입력합니다. 예:TestKey1 -
TestKeys:Id. GUID를 만들고 값으로TestKeys:ID입력합니다. 예를 들면DCE1CC21-FF9B-4424-8FF4-9914BD19A1BE와 같습니다. 온라인 GUID 생성기와 같은 사이트를 사용하여 GUID를 임의로 생성할 수 있습니다. -
JwtAuthorization. 테넌트 ID로 바꿉니다{tenant-id}.
다음 json은 appsettings.json의 테넌트 및 키 설정에 대한 올바른 형식을 보여 줍니다.
LDAPPath 역할 권한 부여를 위해 구성되어 있습니다.
{
"TokenValidationParameters": {
"ValidIssuers": [
"https://sts.windows.net/9c99431e-b513-44be-a7d9-e7b50002d4b/"
]
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"JwtAudience": "https://dkeservice.contoso.com/",
"JwtAuthorization": "https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize",
"RoleAuthorizer": {
"LDAPPath": ""
},
"TestKeys": [
{
"Name": "TestKey1",
"Id": "DCE1CC21-FF98-4424-8FF4-9914BD19A1BE"
}
]
}
테스트 키 생성
애플리케이션 설정을 정의하면 퍼블릭 및 프라이빗 테스트 키를 생성할 준비가 된 것입니다.
키를 생성하려면 다음을 수행합니다.
Windows 시작 메뉴에서 OpenSSL 명령 프롬프트를 실행합니다.
테스트 키를 저장할 폴더로 변경합니다. 이 작업의 단계를 완료하여 만든 파일은 동일한 폴더에 저장됩니다.
새 테스트 키를 생성합니다.
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365프라이빗 키를 생성합니다.
OpenSSL 버전 3 이상을 설치한 경우 다음 명령을 실행합니다.
openssl rsa -in key.pem -out privkeynopass.pem -outform PEM -traditional그렇지 않으면 다음 명령을 실행합니다.
openssl rsa -in key.pem -out privkeynopass.pem -outform PEM공개 키를 생성합니다.
openssl rsa -in key.pem -pubout > pubkeyonly.pem텍스트 편집기에서 pubkeyonly.pem을 엽니다. pubkeyonly.pem 파일의 첫 번째 줄과 마지막 줄을 제외한 모든 내용을 appsettings.json 파일의 섹션에
PublicPem복사합니다.텍스트 편집기에서 privkeynopass.pem을 엽니다. 첫 번째 줄과 마지막 줄을 제외한 privkeynopass.pem 파일의 모든 내용을 appsettings.json 파일의 섹션에
PrivatePem복사합니다.and
PrivatePem섹션 모두PublicPem에서 모든 공백과 줄 바꿈을 제거합니다.중요
이 내용을 복사할 때 PEM 데이터를 삭제하지 마십시오.
Visual Studio Code에서 Startup.cs 파일을 찾습니다. 이 파일은 로컬로 복제한 DoubleKeyEncryptionService 리포지토리의 DoubleKeyEncryptionService\src\customer-key-store에 있습니다.
다음 줄을 찾습니다.
#if USE_TEST_KEYS #error !!!!!!!!!!!!!!!!!!!!!! Use of test keys is only supported for testing, DO NOT USE FOR PRODUCTION !!!!!!!!!!!!!!!!!!!!!!!!!!!!! services.AddSingleton<ippw.IKeyStore, ippw.TestKeyStore>(); #endif이 줄을 다음 텍스트로 바꿉니다.
services.AddSingleton<ippw.IKeyStore, ippw.TestKeyStore>();최종 결과는 다음과 유사해야 합니다.
이제 DKE 프로젝트를 빌드할 준비가 되었습니다.
프로젝트 빌드
다음 지침을 사용하여 DKE 프로젝트를 로컬로 빌드합니다.
Visual Studio Code의 DKE 서비스 리포지토리에서명령 팔레트보기>를 선택한 다음 프롬프트에 build를 입력합니다.
목록에서 작업: 빌드 작업 실행을 선택합니다.
빌드 작업을 찾을 수 없는 경우 빌드 작업 구성을 선택하고 다음과 같이 .NET Core용 작업을 만듭니다.
템플릿에서 tasks.json 만들기를 선택합니다.
템플릿 유형 목록에서 .NET Core를 선택합니다.
빌드 섹션에서 customerkeystore.csproj 파일의 경로를 찾습니다. 없는 경우 다음 줄을 추가합니다.
"${workspaceFolder}/src/customer-key-store/customerkeystore.csproj",빌드를 다시 실행합니다.
출력 창에 빨간색 오류가 없는지 확인합니다.
빨간색 오류가 있는 경우 콘솔 출력을 검사합니다. 이전 단계를 모두 올바르게 완료했으며 올바른 빌드 버전이 있는지 확인합니다.
이제 설정이 완료되었습니다. 키 저장소를 게시하기 전에 appsettings.json에서 JwtAudience 설정에 대해 호스트 이름 값이 App Service 호스트 이름과 정확히 일치하는지 확인합니다.
DKE 서비스 배포 및 키 저장소 게시
프로덕션 배포의 경우 타사 클라우드에 서비스를 배포하거나 온-프레미스 시스템에 게시합니다.
다른 방법으로 키를 배포하는 것을 선호할 수도 있습니다. organization에 가장 적합한 방법을 선택합니다.
파일럿 배포의 경우 Azure에서 배포하고 즉시 시작할 수 있습니다.
DKE 배포를 호스트할 Azure Web App instance를 만들려면
키 저장소를 게시하려면 DKE 배포를 호스트할 Azure App Service instance을 만듭니다. 다음으로, 생성된 키를 Azure에 게시합니다.
브라우저에서 Microsoft Azure Portal에 로그인하고 App Services> Create > Web App으로 이동합니다.
새 리소스 그룹을 만들거나 기존 리소스 그룹을 선택합니다.
instance의 이름(예: contosodke1)을 제공합니다. 이 이름은 구성 파일의 이름과 일치하지 않습니다. 이름에 제공하는 값은 WebAppInstanceName이기도 합니다.
가격 책정 계획에서 사용자 지정 도메인을 허용하는 크기(예: Basic B1)를 선택합니다.
게시에서 코드를 선택하고 런타임 스택에서 .NET 8(LTS)을 선택합니다.
검토 + 만들기를 선택합니다.
예시:
새로 만든 웹앱에서 "설정", "사용자 지정 도메인"으로 이동하여 사용자 지정 도메인 추가를 선택합니다.
도메인 공급자에서다른 모든 도메인 서비스를 선택합니다.
도메인에 DKE 서비스를 설치할 컴퓨터의 호스트 이름을 입력합니다.
중요
호스트 이름이 appsettings.json 파일의 JwtAudience 설정에 정의된 이름과 동일한지 확인합니다.
- 공용 DNS에서 도메인 유효성 검사 섹션에 표시된 대로 제안된 변경 내용을 수행하고 유효성 검사를 선택합니다.
예시:
생성된 키를 게시하려면 다음을 수행합니다.
- ZipDeployUI를 통해 게시
- FTP와 같은 다른 방법을 사용하여 해당 앱에 바이너리를 업로드할 수 있습니다.
예: FTP
ZipDeployUI를 통해 게시
https://<WebAppInstanceName>.scm.<location>.azurewebsites.net/ZipDeployUI로 이동합니다.예:
https://dkeservice-ctaugtfwh7d3c3c.scm.westcentralus-01.azurewebsites.net/ZipDeployUIPowerShell 프롬프트를 시작합니다.
키 저장소의 코드베이스에서 customer-key-store\src\customer-key-store 폴더로 이동하여 이 폴더에 customerkeystore.csproj 파일이 포함되어 있는지 확인합니다.
실행: dotnet publish
출력 창에는 게시가 배포된 디렉터리가 표시됩니다.
예:
customer-key-store\src\customer-key-store\bin\Debug\net8.0\publish\게시 디렉터리의 모든 파일을 .zip 파일로 보냅니다. .zip 파일을 만들 때 디렉터리의 모든 파일이 .zip 파일의 루트 수준에 있는지 확인합니다.
생성한 .zip 파일을 이전에 연 ZipDeployUI 사이트로 끌어서 놓습니다.
DKE가 배포되며 생성한 테스트 키를 찾아볼 수 있습니다. 이 문서에서 배포 유효성을 검사 하려면 계속 진행하세요.
배포 유효성 검사
이 문서에 설명된 방법 중 하나를 사용하여 DKE를 배포한 후 배포 및 키 저장소 설정의 유효성을 검사합니다.
실행:
src\customer-key-store\scripts\key_store_tester.ps1 dkeserviceurl/mykey
예시:
key_store_tester.ps1 https://dkeservice.contoso.com/TestKey1
출력에 오류가 표시되지 않는지 확인합니다. 준비가 되면 키 저장소를 등록합니다.
키 이름은 대/소문자를 구분합니다. appsettings.json 파일에 나타나는 키 이름을 입력합니다.
키 저장소 등록
다음 단계를 통해 DKE 서비스를 등록할 수 있습니다. DKE 서비스 등록은 레이블 만들기를 시작하기 전에 DKE를 배포하는 마지막 단계입니다.
DKE 서비스를 등록하려면 다음을 수행합니다.
브라우저에서 Microsoft Azure Portal을 열고 모든 서비스>ID>앱 등록으로 이동합니다.
새 등록을 선택하고 의미 있는 이름을 입력합니다.
표시된 옵션에서 계정 유형을 선택합니다.
예시:
페이지 아래쪽에서 등록 을 선택하여 새 앱 등록을 만듭니다.
새 앱 등록의 왼쪽 창의 관리에서 인증을 선택합니다.
플랫폼 추가를 선택합니다.
플랫폼 구성 팝업에서 웹을 선택합니다.
리디렉션 URI에 이중 키 암호화 서비스의 URI를 입력합니다. 호스트 이름과 도메인을 모두 포함하여 App Service URL을 입력합니다.
예:
https://mydkeservicetest.com- 입력하는 URL은 DKE 서비스가 배포된 호스트 이름과 일치해야 합니다.
- 도메인은 확인된 도메인이어야 합니다.
- 모든 경우에 스키마는 https여야 합니다.
호스트 이름이 App Service 호스트 이름과 정확히 일치하는지 확인합니다.
암시적 권한 부여에서ID 토큰 확인란을 선택합니다.
저장을 선택하여 변경 내용을 저장합니다.
왼쪽 창에서 API 노출을 선택하고 애플리케이션 ID URI 옆에 호스트 이름과 도메인을 모두 포함하는 App Service URL을 입력한 다음 설정을 선택합니다.
여전히 API 노출 페이지의 이 API 영역에서 정의된 범위에서 Add a scope를 선택합니다. 새 scope에서:
scope 이름을 user_impersonation로 정의합니다.
동의할 수 있는 관리자와 사용자를 선택합니다.
필요한 나머지 값을 정의합니다.
범위 추가를 선택합니다.
상단에서 저장 을 선택하여 변경 내용을 저장합니다.
API 노출 페이지의 권한 있는 클라이언트 애플리케이션영역에서 클라이언트 애플리케이션 추가를 선택합니다.
새 클라이언트 애플리케이션에서:
클라이언트 ID를 다음으로 정의합니다.
d3590ed6-52b3-4102-aeff-aad2292ab01c이 값은 Microsoft Office 클라이언트 ID이며, Office에서 키 저장소에 대한 액세스 토큰을 얻을 수 있게 해줍니다.승인된 범위에서user_impersonation scope 선택합니다.
애플리케이션 추가를 선택합니다.
상단에서 저장 을 선택하여 변경 내용을 저장합니다.
이 단계를 반복하되 이번에는 클라이언트 ID를 로 정의합니다.
00001111-aaaa-2222-bbbb-3333cccc4444이 값은 Purview Information Protection 클라이언트 ID입니다.
이제 DKE 서비스가 등록되었습니다. 계속해서 DKE를 사용하여 레이블을 만듭니다.
DKE를 사용하여 민감도 레이블 만들기
Microsoft Purview 포털에서 새 민감도 레이블을 만들고 그렇지 않은 경우와 마찬가지로 암호화를 적용합니다. 이중 키 암호화 사용을 선택하고 키의 엔드포인트 URL을 입력합니다. URL의 appsettings.json 파일의 "TestKeys" 섹션에 제공한 키 이름을 포함해야 합니다.
예: https://testingdke1.azurewebsites.net/KEYNAME
추가하는 모든 DKE 레이블은 최신 버전의 엔터프라이즈용 Microsoft 365 앱에서 사용자에게 표시됩니다.
참고
클라이언트가 새 레이블로 새로 고치는 데 최대 24시간이 걸릴 수 있습니다.
보호된 파일을 HYOK 레이블에서 DKE 레이블로 마이그레이션
원하는 경우 DKE 설정을 마친 후 HYOK 레이블을 사용하여 보호한 콘텐츠를 DKE 레이블로 마이그레이션할 수 있습니다. 마이그레이션하려면 Microsoft Purview Information Protection 스캐너를 사용합니다. 스캐너 사용을 시작하려면 정보 보호 스캐너 이해를 참조하세요.
콘텐츠를 마이그레이션하지 않으면 HYOK 보호 콘텐츠는 영향을 받지 않습니다.
기타 배포 옵션
규제가 엄격한 산업의 일부 고객의 경우 소프트웨어 기반 키를 사용하는 이 표준 참조 구현이 향상된 규정 준수 의무 및 요구 사항을 충족하기에 충분하지 않을 수 있습니다. Microsoft는 타사 HSM(하드웨어 보안 모듈) 공급업체와 협력하여 다음을 포함하여 DKE 서비스에서 향상된 키 관리 옵션을 지원합니다.
시장 내 DKE HSM 솔루션에 대한 자세한 정보와 지침을 보려면 이러한 공급업체에 직접 문의하세요.
DKE 민감도 레이블을 적용하도록 클라이언트 설정
각 클라이언트 디바이스에서 이 작업을 완료합니다.
각 클라이언트에 다음 레지스트리 값이 정의되어 있는지 확인합니다. 아직 없는 레지스트리 키를 만듭니다.
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSIPC\flighting] "DoubleKeyProtection"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSIPC\flighting] "DoubleKeyProtection"=dword:00000001