Microsoft SharePoint에서 비밀 검사하기
Microsoft SharePoint에서 비밀 검사하기
Microsoft SharePoint를 HCP Vault Radar의 데이터 소스로 연결하면 SharePoint 사이트와 문서 라이브러리에서 민감한 데이터와 비밀(secret)을 모니터링할 수 있어요. 이 페이지에서는 SharePoint 데이터 소스를 추가하고 검사하는 방법을 안내해 드릴게요.
출처: 문서
본문
Microsoft SharePoint에서 비밀 검사하기
[!IMPORTANT] 베타 기능: 이 기능은 현재 베타 릴리스로 제공됩니다. 베타 기능은 안정적이지만 불완전할 수 있고 변경될 수 있습니다. 프로덕션 워크플로에서 베타 기능을 사용하는 것은 강력히 권장하지 않습니다. 기능이 원활하게 동작하지 않거나 예상치 못한 문제가 발생할 수 있기 때문입니다.
Microsoft SharePoint를 HCP Vault Radar의 데이터 소스로 연결하여 SharePoint 사이트와 문서 라이브러리에서 민감한 데이터와 비밀을 모니터링할 수 있습니다. HCP Vault Radar가 처음이라면 HCP Vault Radar quickstart 튜토리얼 시리즈를 확인해 보세요.
사전 요구 사항
- HCP owner 또는 admin 역할을 가진 HCP IAM 사용자
- 검사하려는 SharePoint 데이터가 포함된 Microsoft 365 테넌트에 대한 액세스 권한
- (테넌트 전체 동의가 제한된 경우) Microsoft 365 테넌트에서 admin consent 워크플로 활성화
- Microsoft Entra ID에 애플리케이션을 등록할 권한 (에이전트 검사 전용)
- 배포되고 실행 중인 Vault Radar 에이전트 — HCP Vault Radar operations 튜토리얼 참조 (에이전트 검사 전용)
Microsoft SharePoint 데이터 소스 추가하기
HCP Vault Radar 클라우드 검사
- HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP Portal에 로그인합니다.
- Vault Radar를 클릭합니다.
- Settings를 클릭합니다.
- Data Sources를 클릭합니다.
- HCP Vault Radar Scan을 선택합니다.
- Team Collaboration 아래에서 Microsoft SharePoint를 클릭합니다.
- Connect to Microsoft SharePoint를 클릭합니다. 그러면 Microsoft 로그인 및 동의 흐름이 시작됩니다.
- 검사하려는 테넌트의 계정으로 로그인합니다.
- 요청된 권한을 검토하고 Accept를 클릭합니다.
[!NOTE] 관리자 동의가 필요할 수 있습니다. 조직에서 테넌트 전체 동의를 제한하는 경우, Microsoft는 관리자에게 승인을 요청하라는 메시지를 표시합니다.
- HCP Vault Radar에 Authenticated to Microsoft SharePoint 메시지가 표시됩니다.
- Next를 클릭합니다.
- All sites 또는 Select sites to monitor 중 하나를 선택합니다.
- Finish를 클릭하여 선택한 SharePoint 사이트의 온보딩과 검사를 시작합니다.
HCP Vault Radar 에이전트 검사
HCP Vault Radar에서 데이터 소스를 구성하기 전에 다음을 수행해야 합니다:
- Microsoft Entra ID에 애플리케이션 등록
- 토큰 ID 발급(ID token issuance) 활성화
- 필요한 Graph 권한 구성
- 클라이언트 시크릿(client secret) 생성
- 테넌트 전체 관리자 동의 부여
ℹ️ 예시 Terraform 구성 이 예시 Terraform 구성은 HCP Vault Radar 에이전트 검사가 SharePoint나 OneDrive와 같은 Azure 서비스를 사용할 수 있도록 필요한 Azure 리소스를 만듭니다.
[!WARNING] 조직의 정책과 절차를 준수하는지 확인하려면 보안 팀과 구성을 검토하세요. 구성의 정적 값을 선호하는 명명 규칙으로 교체하세요.
terraform {
required_providers {
azuread = {
source = "hashicorp/azuread"
version = "~> 3.0"
}
time = {
source = "hashicorp/time"
version = "~> 0.13"
}
}
}
provider "azuread" {}
variable "app_display_name" {
type = string
default = "HashiCorp Vault Radar"
}
variable "sign_in_audience" {
description = "AzureADMyOrg for single tenant, AzureADMultipleOrgs for multitenant"
type = string
default = "AzureADMyOrg"
}
data "azuread_client_config" "current" {}
# Resolves Microsoft Graph's application ID without hardcoding the GUID,
# which can differ across sovereign clouds (e.g. Azure Government).
data "azuread_application_published_app_ids" "well_known" {}
resource "azuread_service_principal" "msgraph" {
client_id = data.azuread_application_published_app_ids.well_known.result.MicrosoftGraph
use_existing = true
}
# --- Register a Microsoft Entra application ---
resource "azuread_application" "vault_radar" {
display_name = var.app_display_name
sign_in_audience = var.sign_in_audience
owners = [data.azuread_client_config.current.object_id]
# --- Enable ID token issuance ---
web {
implicit_grant {
id_token_issuance_enabled = true
}
}
# --- Configure Microsoft Graph permissions ---
required_resource_access {
resource_app_id = data.azuread_application_published_app_ids.well_known.result.MicrosoftGraph
# Application permissions
resource_access {
id = azuread_service_principal.msgraph.app_role_ids["Sites.Read.All"]
type = "Role"
}
resource_access {
id = azuread_service_principal.msgraph.app_role_ids["Files.Read.All"]
type = "Role"
}
resource_access {
id = azuread_service_principal.msgraph.app_role_ids["Organization.Read.All"]
type = "Role"
}
resource_access {
id = azuread_service_principal.msgraph.app_role_ids["User.Read.All"]
type = "Role"
}
# Delegated permissions
resource_access {
id = azuread_service_principal.msgraph.oauth2_permission_scope_ids["openid"]
type = "Scope"
}
resource_access {
id = azuread_service_principal.msgraph.oauth2_permission_scope_ids["profile"]
type = "Scope"
}
resource_access {
id = azuread_service_principal.msgraph.oauth2_permission_scope_ids["offline_access"]
type = "Scope"
}
}
}
# The app needs its own service principal (enterprise app object) before
# admin consent can be granted to it.
resource "azuread_service_principal" "vault_radar" {
client_id = azuread_application.vault_radar.client_id
owners = [data.azuread_client_config.current.object_id]
}
# --- Grant admin consent: application permissions ---
resource "azuread_app_role_assignment" "sites_read_all" {
app_role_id = azuread_service_principal.msgraph.app_role_ids["Sites.Read.All"]
principal_object_id = azuread_service_principal.vault_radar.object_id
resource_object_id = azuread_service_principal.msgraph.object_id
}
resource "azuread_app_role_assignment" "files_read_all" {
app_role_id = azuread_service_principal.msgraph.app_role_ids["Files.Read.All"]
principal_object_id = azuread_service_principal.vault_radar.object_id
resource_object_id = azuread_service_principal.msgraph.object_id
}
resource "azuread_app_role_assignment" "organization_read_all" {
app_role_id = azuread_service_principal.msgraph.app_role_ids["Organization.Read.All"]
principal_object_id = azuread_service_principal.vault_radar.object_id
resource_object_id = azuread_service_principal.msgraph.object_id
}
resource "azuread_app_role_assignment" "user_read_all" {
app_role_id = azuread_service_principal.msgraph.app_role_ids["User.Read.All"]
principal_object_id = azuread_service_principal.vault_radar.object_id
resource_object_id = azuread_service_principal.msgraph.object_id
}
# --- Grant admin consent: delegated permissions (all users) ---
resource "azuread_service_principal_delegated_permission_grant" "vault_radar" {
service_principal_object_id = azuread_service_principal.vault_radar.object_id
resource_service_principal_object_id = azuread_service_principal.msgraph.object_id
claim_values = ["openid", "profile", "offline_access"]
# user_object_id intentionally omitted: this grants consent for all users
}
# --- Create a client secret ---
resource "time_rotating" "vault_radar_secret" {
rotation_days = 180
}
resource "azuread_application_password" "vault_radar" {
application_id = azuread_application.vault_radar.id
display_name = "vault-radar"
start_date = time_rotating.vault_radar_secret.id
end_date = timeadd(time_rotating.vault_radar_secret.id, "4320h") # ~180 days
}
output "client_id" {
value = azuread_application.vault_radar.client_id
}
output "tenant_id" {
value = data.azuread_client_config.current.tenant_id
}
output "client_secret" {
value = azuread_application_password.vault_radar.value
sensitive = true
}
Terraform 실행이 완료되면 client_id, tenant_id, client_secret을 HCP Vault Radar 에이전트의 환경 변수로 내보냅니다.
- HCP owner 또는 admin 역할을 가진 HCP IAM 사용자로 HCP Portal에 로그인합니다.
- Vault Radar를 클릭합니다.
- Settings를 클릭합니다.
- Data Sources를 클릭합니다.
- HCP Vault Radar Agent Scan을 선택합니다.
- Team Collaboration 아래에서 Microsoft SharePoint를 클릭합니다.
- Microsoft Entra tenant ID: Microsoft Entra 애플리케이션의 Directory(테넌트) ID.
- Microsoft Entra client ID: 에이전트 호스트에 클라이언트 ID를 저장한 환경 변수 경로. 예:
env://MICROSOFT_SHAREPOINT_CLIENT_ID
- Microsoft Entra client secret: 에이전트 호스트에 클라이언트 시크릿을 저장한 환경 변수 경로. 예:
env://MICROSOFT_SHAREPOINT_CLIENT_SECRET
- Next를 클릭합니다.
- All sites 또는 Select sites to monitor 중 하나를 선택합니다.
- Finish를 클릭하여 선택한 SharePoint 사이트의 온보딩과 검사를 시작합니다.
리소스에 그룹 할당하기
데이터 소스를 추가하면 admin 역할을 가진 HCP 사용자가 각 데이터 소스 내의 모니터링되는 각 리소스에 그룹을 할당해야 합니다. 각 리소스는 하나의 그룹에만 할당할 수 있습니다.
[!NOTE] HCP IAM admin 역할이 있는 사용자는 다른 그룹의 멤버가 될 필요가 없습니다. admin 역할이 있는 계정은 Vault Radar에 대한 전체 액세스 권한을 가집니다.
아직 그룹이 없다면 Identity and Access Management 그룹 문서를 참조하여 그룹을 만드세요.
- Project dashboard로 이동합니다.
- **Access control (IAM)**을 클릭합니다.
- Add new assignment를 클릭합니다.
- Search for an assignee 검색 필드에서 그룹 이름을 검색합니다.
- 검색 결과에서 그룹 이름을 클릭합니다.
- Select service 풀다운 메뉴를 클릭하고 Vault Radar를 선택합니다.
- Select role 풀다운 메뉴를 클릭하고 Vault Radar Developer 역할을 선택합니다.
- Save를 클릭합니다.
- Back to Dashboard를 클릭합니다.
- Vault Radar를 클릭합니다.
- Resources를 클릭합니다.
- 그룹에 할당하려는 리소스를 선택하고 Assign groups를 클릭합니다.
- Assign resource to group 풀다운 메뉴를 클릭합니다.
- 리소스에 대한 액세스가 필요한 그룹을 선택합니다.
- Viewer 또는 Contributor 역할 중 하나를 선택합니다.
- OK를 클릭합니다.
데이터 소스 업데이트하기
- Settings로 이동합니다.
- Data sources를 클릭합니다.
- 데이터 소스 오른쪽의 세로 생략 부호(vertical ellipsis)를 클릭합니다.
- 모니터링되는 데이터 소스를 업데이트하려면 Edit data sources를 클릭합니다.
- 인증 방법을 업데이트하려면 Select authentication method 드롭다운에서 새 인증 방법을 선택합니다.
- 토큰을 업데이트하려면 Edit data source host details를 클릭합니다.
- 데이터 소스를 삭제하려면 Delete data source를 클릭합니다.
튜토리얼
튜토리얼을 통해 HCP Vault Radar를 자신의 환경에서 평가하고 구현하는 방법을 배워보세요.
- HCP Vault Radar quickstart – 가상의 커피 회사인 HashiCups가 HCP Vault Radar를 온보딩하고 데이터 소스에서 비밀을 검사하는 과정을 따라 해 봅니다.
- HCP Vault Radar operations – HashiCups 운영 팀이 Vault Radar 에이전트로 데이터 소스를 검사하기 위해 HCP Vault Radar 고급 기능을 어떻게 사용하고, 발견 결과를 HCP Vault와 연관 지어 비밀을 관리하는지 배워봅니다.
- HCP Vault Radar developer – HashiCups 개발자들이 HCP Vault Radar 고급 기능으로 비밀 노출을 이해하고, 잠재적 위험을 식별하며, 소프트웨어 개발 수명 주기 동안 유출된 비밀을 방지하는 방법을 배워봅니다.