メインコンテンツまでスキップ

구축 가이드 - 기본 방법

備考

SHIELDRM 구축 가이드: 기본 설치 방법입니다.

SharePoint Service Principal 등록

SharePoint API 호출이벤트 리시버 서비스가 SharePoint에 접근할 때 필요한 권한을 등록합니다.

파워쉘 스크립트를 이용한 Service Principal 등록

Windows PowerShell용 Microsoft Azure Active Directory 을 설치합니다. (관리자 모드로 실행)

이미 설치 되어있는지 확인합니다.

Get-Module -ListAvailable -Name "MSOnline"

MSOnline 버전 정보가 나오지 않으면 설치를 진행합니다.

Install-Module MSOnline

Azure AD에 연결합니다. 신규 테넌트의 Azure 관리자 계정으로 로그인

Connect-MsolService

로그인 화면

Service Principal 등록에 필요한 데이터를 세팅합니다. ClientId, ClientSecret 값은 고정입니다. AppDomain, RedirectURL은 이벤트 리시버의 주소로 하여야 합니다. (사내운영과 Public 은 주소가 다릅니다.)


$ClientId = "0e1bcbc3-8391-4367-b3bb-793d4301769a"
$ClientSecret = "sTRQQmvPEktItZuO+PBTt4c0EO30ubgMhixh/gJxcFU="
$Title = "SHIELDRM_Addin"

#이벤트 리시버의 주소
$AppDomain = "pbshieldrmevtreceiver.azurewebsites.net"
$RedirectURI = "https://pbshieldrmevtreceiver.azurewebsites.net"

$appPrincipalId = $ClientId
$displayName = $Title
$servicePrincipalNames = @("$ClientId/$AppDomain", $ClientId)
$addresses = New-MsolServicePrincipalAddresses -Address $RedirectURI -AddressType Reply

#현재 날짜
$date = Get-Date
$dateString = $date.Year.ToString() + "/" + $date.Month.ToString() + "/" + $date.Day.ToString()

Service Principal 및 Credential 등록합니다.

#서비스 프린서플 및 자격증명 등록
New-MsolServicePrincipal -ServicePrincipalNames $servicePrincipalNames -AppPrincipalId $appPrincipalId -DisplayName $displayName -AccountEnabled $true -Addresses $addresses -Type Symmetric -Usage Sign -Value $ClientSecret -StartDate $dateString -EndDate 2099/12/31
New-MsolServicePrincipalCredential -AppPrincipalId $appPrincipalId -Type Symmetric -Usage Verify -Value $ClientSecret -StartDate $dateString -EndDate 2099/12/31
New-MsolServicePrincipalCredential -AppPrincipalId $appPrincipalId -Type Password -Usage Verify -Value $ClientSecret -StartDate $dateString -EndDate 2099/12/31

해당 ClientId, ClientSecret 값으로 ServicePrincipal을 등록하는 것이며, 테넌트당 한번만 실행이 가능합니다.

⚠️상기 ClientId 삭제 시 일정 시간 뒤(정확한 시간 모름, 삭제 후 퇴근하여 다음날 출근하여 정상 삭제됨을 확인)에 적용되는 것으로 판단되니 주의하여 적용 바랍니다.

등록이 잘 되면 아래와 같은 값이 출력됩니다.

DisplayName           : SHIELDRM_Addin
ServicePrincipalNames : {0e1bcbc3-8391-4367-b3bb-793d4301769a/pbshieldrmevtreceiver.azurewebsites.net, 0e1bcbc3-8391-4367
-b3bb-793d4301769a}
ObjectId : d2f53341-1473-467f-9e58-ebafefcedb5c
AppPrincipalId : 0e1bcbc3-8391-4367-b3bb-793d4301769a
TrustedForDelegation : False
AccountEnabled : True
Addresses : {Microsoft.Online.Administration.RedirectUri}
KeyType : Symmetric
KeyId : b5ba3793-d71d-483d-a51b-2e0bfc4ba81b
StartDate : 2022-04-18 오전 12:00:00
EndDate : 2099-12-31 오전 12:00:00
Usage : Sign

등록된 Credential 확인

Get-MsolServicePrincipalCredential -AppPrincipalId $appPrincipalId -ReturnKeyValues $true

Service Principal이 잘못 등록되었으면 재등록 할 수 있습니다.

정상적으로 Service Principal이 등록되면 에저 포탈에서 확인 할 수 있습니다.

에저 포탈 화면


ServicePrincipal 권한 요청

sharepoint 관리페이지의 appinv.aspx로 들어갑니다.

주소: https://{Tenant}-admin.sharepoint.com/_layouts/15/appinv.aspx

예) https://socamresearch-admin.sharepoint.com/_layouts/15/appinv.aspx

등록한 Client ID 입력 후 조회합니다.

SharePoint 관리 페이지

권한 요청 란에 아래와 같은 값을 입력하고 만들기를 선택합니다

<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
<AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="Read" />
</AppPermissionRequests>

SharePoint 관리 페이지

신뢰를 선택합니다.

SharePoint 관리 페이지

appprincipals.aspx 페이지에서 권한이 등록된 앱을 확인할 수 있습니다.

SharePoint 관리 페이지


SharePoint App-Only Access Token 사용 속성 값 설정

App Access Token의 사용 기본 정책은 비활성화 되어 있습니다. 파워쉘 스크립트를 통해 활성화 합니다. (https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs) 2가지 방법을 제공합니다. 성공하는 방법으로 하시면 됩니다. SharePoint Online 관리자 권한이 필요합니다.

Microsoft.Online.SharePoint.PowerShell 을 이용하여 App-Only Access Token 사용 속성 값 설정

SharePoint Online Power Shell이 설치 되어 있는지 확인합니다.

Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select Name,Version

버전 정보가 나오지 않으면 설치 합니다.

Install-Module -Name Microsoft.Online.SharePoint.PowerShell

연결 정보 설정 합니다.

SharePoint 관리자 페이지 URL을 입력합니다. 예 ) $tenantAdminUrl = "https://socamresearch-admin.sharepoint.com/"

$tenantAdminUrl = "https://{tenantName}-admin.sharepoint.com/"

쉐어포인트 Online에 연결합니다.

Connect-SPOService -Url $tenantAdminUrl

로그인 창이 뜨면 SharePoint 관리자 계정으로 로그인을 진행합니다. 위 Connect-SPOService가 실패하면 SharePoint Admin 계정을 연결 시도

예) $adminUserPrincipal = "admin6@socam.info"

$adminUserPrincipal = "{adminUserPrincipal}"
Connect-SPOService -Url $tenantAdminUrl -Credential $adminUserPrincipal

App-Only Access Token 사용 속성 값 확인

$tenantProperties = Get-SPOTenant
$tenantProperties.DisableCustomAppAuthentication

true 면 속성값을 false 로 설정합니다.

Set-SPOTenant -DisableCustomAppAuthentication $false

잘 설정 되었는지 확인합니다.

$tenantProperties = Get-SPOTenant
$tenantProperties.DisableCustomAppAuthentication

PnP PowerShell 을 이용하여 App-Only Access Token 사용 속성 값 설정

PnP PowerShell이 설치 되어 있는지 확인합니다.

Get-Module -Name PnP.PowerShell -ListAvailable | Select Name,Version

버전 정보가 나오지 않으면 설치 합니다.

Install-Module PnP.PowerShell

연결 정보 설정 합니다.

SharePoint 관리자 페이지 URL을 입력합니다.

예 ) $tenantAdminUrl = "https://socamresearch-admin.sharepoint.com/"

$tenantAdminUrl = "https://{tenantName}-admin.sharepoint.com/"

쉐어포인트 Online에 연결합니다. 로그인 창이 뜨면 SharePoint 관리자 계정으로 로그인을 진행합니다.

Connect-PnPOnline -Url $tenantAdminUrl -Interactive

App-Only Access Token 사용 속성 값 확인

$tenantProperties = Get-PnPTenant
$tenantProperties.DisableCustomAppAuthentication

true 면 속성값을 false 로 설정합니다.

Set-PnPTenant -DisableCustomAppAuthentication $false

설정 값이 False가 나오는지 확인합니다.

$tenantProperties = Get-PnPTenant
$tenantProperties.DisableCustomAppAuthentication

SharePoint Addin 카탈로그에 등록

각 쉐어포인트 사이트, 원드라이브 사이트에 Sharepoint Addin 을 설치 하기 전에 카탈로그에 등록하는 작업입니다.

SHIELDrmEventReceiver.app 파일을 다운로드 받아서 준비합니다.

⚠️ 설치 시 주의사항
사내운영용과 public(SK)환경용 Sharepoint Addin(.app 파일)은 이름과 버전이 같으나 이벤트 리시버의 도메인 주소가 다릅니다.
반드시 용도에 따라 다운로드하여 사용하시기 바랍니다.
이름과 버전이 같으니 사용 시 주의하시기 바랍니다

쉐어포인트 관리 페이지에 접속합니다.

{tenant}-admin.sharepoint.com

예) softcamp-admin.sharepoint.com

예) socamresearch-admin.sharepoint.com

관리자 계정으로 로그인 합니다.

[기능 더 보기] → [앱] 으로 들어갑니다.

MicroSoft 관리 페이지

아래와 같은 페이지로 접속하면 "클래식 환경"으로 접속합니다. (클래식 환경이 아닌 일반 모드에서 작업하셔도 됩니다.)

MicroSoft 관리 페이지

[새로 만들기] → [파일 선택] 을 눌러서 .app 파일을 등록해 줍니다.

앱 관리 페이지

앱 카탈로그 등록 완료되었습니다.

앱 관리 페이지


인증/인가 관리 페이지에서 앱 등록 및 빌트인 프로파일 등록

⚠️인증/인가 관리자 계정이 필요합니다.

신규 회사 테넌트에 "shieldrm-svc" 앱 등록

⚠️master-tenant에 이미 "shieldrm-svc"가 등록되어있어야 합니다.

  • 인증인가 관리자 페이지 → 앱 서비스 관리 → 신규 회사 테넌트 선택 → 앱 서비스 추가
  • 앱 서비스 선택에서 "shieldrm-svc"을 선택합니다.
  • 사용자 인증 타입 "authorization_code", 앱 서비스 인증타입 "client_credentials" 체크
  • Redirect URL 설정 (DS365Auth.exe 에서 로컬 피씨 28080 포트로 코드를 받아 인증을 요청합니다.)
  • 토큰 접근범위 : Profile.Read, UserInfo.ReadWrite

    http://localhost:28080/{회사ID} Refresh Token 유효기간을 90days 로 설정

IdGP 페이지

앱 등록후 Client ID와 Secret Key는 SCI 커스텀 정책으로 등록하여야 합니다.

IdGP 페이지

신규 회사의 "RMS-SDK-Permission-CONFIG-PROFILE" 빌트인 프로파일에 "Security365"앱 정보 등록

KeyValue예시
authorityhttps://login.microsoftonline.com/`{Azure Tenant ID}`https://login.microsoftonline.com/e8c1b6e5-37ed-4c84-82e9-f5a02feddd85
client_id{Security365 의 Client ID}7e82e70d-4386-419d-9dfd-6c8d6e6068fc
scopehttps://aadrm.com/.defaulthttps://aadrm.com/.default
secret{Security365 의 Client Secret}

IdGP 페이지

신규 회사 테넌트에 "SKMS" 앱을 추가합니다.

SHIELDRM 관리페이지(프론트)에 로그인을 하려면 SKMS 앱이 추가되어야 합니다. IdGP 페이지

Built-in profile 정책 내 app_id, secret 설정 (앱등록 후 생성한 app_id 및 secret을 해당 정책 내 등록) IdGP 페이지


ServiceLinker 사용 시에는 키 파일을 패치해야 합니다.

SHIELDRM에서는 DS 보안문서를 복호화 하여 MIP 변환을 합니다. 복호화는 Service Linker 혹은 Container Linker 중 선택할 수 있습니다. ServiceLinker 사용 시에는 키 파일을 서비스가 접근 가능한 경로에 패치해야 합니다.

Public(SK) 환경에서 구동 중인 "cloud-ssevtr-service" 가 접근 가능한 경로에 키 파일을 패치합니다. (현재 DAC만 지원함 - 2023-02-17 기준)

예) /rmswork/KeyFile/chem/4d615af9-1d04-4bcc-8e6f-c6b6fe3110dd/key.sc

${SCSL_KEY_FILE_DIR}/{azure tenant id}/key.sc

작업이 다 끝난 후에는 파워쉘 모듈 삭제 하셔도 됩니다.

Uninstall-Module MSOnline
Uninstall-Module Microsoft.Online.SharePoint.PowerShell
Uninstall-Module PnP.Powershell