구축 가이드 - 기본 방법
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 입력 후 조회
합니다.
권한 요청 란에 아래와 같은 값을 입력하고 만들기
를 선택합니다
<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>
신뢰
를 선택합니다.
appprincipals.aspx 페이지에서 권한이 등록된 앱을 확인할 수 있습니다.
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
관리자 계정으로 로그인 합니다.
[기능 더 보기] → [앱] 으로 들어갑니다.
아래와 같은 페이지로 접속하면 "클래식 환경"으로 접속합니다. (클래식 환경이 아닌 일반 모드에서 작업하셔도 됩니다.)
[새로 만들기] → [파일 선택] 을 눌러서 .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 로 설정
앱 등록후 Client ID와 Secret Key는 SCI 커스텀 정책으로 등록하여야 합니다.
신규 회사의 "RMS-SDK-Permission-CONFIG-PROFILE" 빌트인 프로파일에 "Security365"앱 정보 등록
Key | Value | 예시 |
---|---|---|
authority | https://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 |
scope | https://aadrm.com/.default | https://aadrm.com/.default |
secret | {Security365 의 Client Secret} |
신규 회사 테넌트에 "SKMS" 앱을 추가합니다.
SHIELDRM 관리페이지(프론트)에 로그인을 하려면 SKMS 앱이 추가되어야 합니다.
Built-in profile 정책 내 app_id, secret 설정 (앱등록 후 생성한 app_id 및 secret을 해당 정책 내 등록)
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