Cloud ID를 Google SecOps와 통합
이 문서에서는 Cloud Identity를 Google Security Operations와 통합하는 방법을 설명합니다.
사용 사례
Cloud ID 통합은 Google SecOps 기능을 사용하여 다음 사용 사례를 지원합니다.
- 액세스 제어 관리: 조사 플레이북에서 직접 IAM 구성을 만들고 업데이트합니다.
- 감사 정책 정의: 액세스 변형을 추적하는 데 사용할 수 있는 정책에 관한 정보를 나열합니다.
- 감지기 목록 속성 유지관리: 모니터링을 위해 특정 감지기 URL 목록에 항목과 표시기를 추가합니다.
시작하기 전에
Google SecOps 플랫폼에서 Cloud ID 통합을 구성하기 전에 다음 단계에 따라 환경을 구성했는지 확인하세요.
- 서비스 계정을 만듭니다.
- 서비스 계정에 도메인 전체 권한 위임
- 프로젝트에 필요한 API를 사용 설정합니다.
- 다음 인증 방법 중 하나를 선택하고 구성합니다.
- 옵션 1: JSON 키: 이 방법은 정적이고 장기적인 보안 비밀 키 파일을 사용합니다. 사용자 환경에서 워크로드 아이덴티티를 사용할 수 없는 경우에만 이 방법을 사용하세요.
- 옵션 2: 워크로드 아이덴티티 (권장): 이 방법은 서비스 계정 가장을 사용하여 단기 임시 액세스 토큰을 사용하므로 보안 비밀을 저장할 필요가 없습니다.
서비스 계정 만들기
통합을 위한 서비스 계정을 만들려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동하여 프로젝트를 선택합니다.
서비스 계정 만들기를 클릭합니다.
이름과 설명을 입력하고 완료를 클릭하여 계정을 만듭니다.
서비스 계정에 도메인 전체 권한 위임
- 도메인의 Google 관리 콘솔에서 기본 메뉴 > 보안 > 액세스 및 데이터 컨트롤 > API 컨트롤로 이동합니다.
- 도메인 전체 위임 창에서 도메인 전체 위임 관리를 선택합니다.
- 새로 추가를 클릭합니다.
- 클라이언트 ID 필드에 서비스 계정 만들기 섹션에서 얻은 클라이언트 ID를 입력합니다.
OAuth 범위 필드에 애플리케이션에 필요한 범위를 쉼표로 구분하여 입력합니다.
https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/cloud-identity.policies, https://www.googleapis.com/auth/admin.directory.orgunit승인을 클릭합니다.
이제 서비스 계정이 지정된 범위를 사용하여 도메인 전체의 데이터에 액세스할 수 있습니다.
프로젝트에 필요한 API 사용 설정
Google Cloud 콘솔에서 API 및 서비스로 이동합니다.
API 및 서비스 사용 설정을 클릭합니다.
프로젝트에서 다음 API를 검색하여 사용 설정합니다.
- Admin SDK API (
admin.googleapis.com) - Cloud ID API (
cloudidentity.googleapis.com)
- Admin SDK API (
JSON 키 구성
정적 JSON 키 파일 또는 워크로드 아이덴티티 제휴를 사용하여 통합을 인증할 수 있습니다. 환경 보안을 극대화하려면 워크로드 아이덴티티 메서드를 사용하세요. 정적 키는 수동으로 순환해야 하고 사용자 인증 정보 노출 위험을 높이므로 인프라에서 워크로드 아이덴티티가 지원되지 않는 경우에만 JSON 키 메서드를 사용하세요.
통합을 인증하는 데 필요한 JSON 키 파일을 생성하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동하여 생성한 서비스 계정을 선택합니다.
키 탭으로 이동합니다.
키 추가를 클릭합니다.
새 키 만들기를 선택합니다.
키 유형으로 JSON을 선택하고 만들기를 클릭합니다. JSON 파일이 컴퓨터에 다운로드됩니다.
이 파일의 전체 콘텐츠를 복사하여 통합 구성 중에
User's Service Account JSON에 붙여넣습니다.
Cloud ID 권한 구성
통합에서 조직 리소스를 관리하는 데 필요한 관리 권한을 정의하려면 다음 절차를 따르세요.
- Google 관리 콘솔에서 계정 > 관리자 역할로 이동합니다.
- 새 역할 만들기를 클릭합니다.
- 새 맞춤 역할의 이름을 입력하고 계속을 클릭합니다.
- 권한 선택 페이지에서 Admin API 권한 섹션으로 이동합니다.
- Admin API 권한에서 다음 권한을 선택합니다.
Organization UnitsUsersGroups
- 계속을 클릭합니다.
- 새 맞춤 역할을 만들려면 역할 만들기를 클릭합니다.
사용자에게 맞춤 역할 할당
다음 절차를 사용하여 사용자 계정에 역할을 할당하여 통합이 사용자를 대신하여 작업을 수행하도록 승인합니다.
- 신규 사용자를 만들려면 디렉터리 > 사용자 페이지로 이동합니다.
- 서비스 계정과 연결된 신규 사용자를 추가합니다.
- 새로 만든 사용자의 설정을 엽니다. 사용자 계정 탭이 열립니다.
- '관리자 역할 및 권한'을 클릭합니다.
- edit 수정을 클릭합니다.
- 생성한 맞춤 역할을 선택합니다.
- 선택한 역할의 전환 버튼을 할당됨으로 전환합니다.
워크로드 아이덴티티 사용자 인증 정보 구성
이 방법 또는 JSON 키 방법을 선택하여 통합을 인증합니다. 워크로드 아이덴티티는 서비스 계정 가장을 사용하여 단기 임시 액세스 토큰을 사용하므로 장기 보안 비밀 사용자 인증 정보 노출 위험을 최소화하여 권장되는 더 안전한 접근 방식입니다.
고유 인스턴스 ID 식별
워크로드 아이덴티티를 사용하려면 Google SecOps 인스턴스에 서비스 계정을 가장할 수 있는 권한을 부여해야 합니다. 이 단계를 통해 인스턴스가 Google Cloud 리소스에 안전하게 액세스할 수 있습니다.
- Google SecOps에서 콘텐츠 허브 > 응답 통합으로 이동합니다.
- 구성 중인 통합을 선택하고
Workload Identity Email필드에 서비스 계정 이메일을 입력합니다. - 통합에서 가장할 이메일을
Delegated Email필드에 입력합니다. - 저장 > 테스트를 클릭합니다. 테스트가 실패할 것으로 예상됩니다.
테스트 오른쪽에 있는 close_small을 클릭하고
gke-init-python@...또는soar-python@...로 시작하는 ID 이메일의 오류 메시지를 검색합니다.이 고유 이메일 주소를 복사하여 통합 구성 중에
Workload Identity Email에 붙여넣습니다.
Google Cloud에서 인스턴스 ID 승인
Google SecOps 인스턴스의 고유 ID를 가져온 후에는 Google Cloud 리소스에 액세스할 수 있도록 승인해야 합니다. 이 단계를 통해 서비스 계정 가장이 사용 설정되므로 플랫폼에서 정적 키 없이도 단기 토큰을 생성하고 사용자를 대신하여 작업을 실행할 수 있습니다.
- Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
- 타겟 서비스 계정을 선택하고 권한 > 액세스 권한 부여로 이동합니다.
- 고유한 이메일 주소를 새 주 구성원 필드에 붙여넣습니다.
- 서비스 계정 토큰 생성자 역할(
roles/iam.serviceAccountTokenCreator)을 할당합니다.
통합 매개변수
Cloud ID 통합에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Service Account JSON File Content |
선택사항입니다. 서비스 계정 키 JSON 파일의 콘텐츠입니다. 이 매개변수 또는 워크로드 아이덴티티 이메일을 구성할 수 있습니다. 이 방법을 사용하려면 서비스 계정 생성 중에 다운로드한 키 파일의 전체 JSON 문자열을 붙여넣으세요. |
Workload Identity Email |
선택사항입니다. 서비스 계정의 클라이언트 이메일 주소입니다. 이 매개변수 또는 서비스 계정 JSON 파일 콘텐츠를 구성할 수 있습니다. 서비스 계정 가장에 이 메서드를 사용하려면 Google SecOps 서비스 계정에 서비스 계정 토큰 생성자 역할을 부여해야 합니다. |
Delegated Email |
필수 항목입니다. 통합에서 작업을 실행하는 데 사용하는 이메일 주소입니다. 이 계정에 환경 내에서 필요한 통합 작업을 실행할 수 있는 적절한 위임된 권한이 있는지 확인합니다. |
Verify SSL |
선택사항입니다. 선택하면 통합에서 Cloud Identity 서버에 연결할 때 SSL 인증서를 검증합니다. 기본적으로 사용 설정됩니다. |
Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참고하세요.
필요한 경우 이후 단계에서 변경할 수 있습니다. 통합 인스턴스를 구성한 후 플레이북에서 사용할 수 있습니다. 여러 인스턴스를 구성하고 지원하는 방법에 관한 자세한 내용은 여러 인스턴스 지원을 참고하세요.
작업
작업에 대한 자세한 내용은 내 Workdesk에서 대기 중인 작업에 응답 및 직접 조치 실행을 참고하세요.
핑
Ping 작업을 사용하여 Cloud ID와의 연결을 테스트합니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
이 작업에 필요한 입력 매개변수는 없습니다.
작업 출력
Ping 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 불가 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
출력 메시지
Ping 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
|
작업이 완료되었습니다. |
Failed to connect to the Cloud Identity server! Error is ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 Ping 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
감지기 URL 목록에 항목 추가
감지기 URL 목록에 엔티티 추가 작업을 사용하여 Cloud ID 정책 감지 목록에 엔티티를 추가합니다.
이 작업은 다음 Google SecOps 항목에서 실행됩니다.
- URL
- 도메인
작업 입력
감지기 URL 목록에 항목 추가 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Detector Policy ID |
필수 항목입니다. 업데이트할 감지기 정책의 고유 식별자입니다. |
URL |
선택사항입니다. 검사기 목록에 추가할 URL의 쉼표로 구분된 목록입니다. |
Domain |
선택사항입니다. 탐지기 목록에 추가할 도메인을 쉼표로 구분한 목록입니다. |
작업 출력
감지기 URL 목록에 항목 추가 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
JSON 결과
다음 예는 감지기 URL 목록에 항목 추가 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
"orgUnit": "orgUnits/<ORG_UNIT_ID>"
},
"setting": {
"type": "settings/detector.url_list",
"value": {
"displayName": "test_url_list_detector",
"description": "test_url_list_detector desc",
"urlList": {
"urls": [
"[http://example.com](http://example.com)",
"example.org",
"bad_entity.com"
]
}
}
}
}
출력 메시지
감지기 URL 목록에 항목 추가 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
|
작업이 완료되었습니다. |
Error executing action "Add Entity To Detector URL List". Reason: ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 감지기 URL 목록에 엔티티 추가 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
정책 만들기
정책 만들기 작업을 사용하여 Cloud ID 내에 새 정책 항목을 만듭니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
정책 만들기 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Policy Entry |
필수 항목입니다. 추가할 정책 항목의 구성을 나타내는 JSON 객체입니다. |
정책 구성 예시
다음 예시 구성에서는 Policy Entry 매개변수를 구조화하는 방법을 보여줍니다.
예 1: URL 목록 감지기
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"orgUnit": "orgUnits/<ORG_UNIT_ID>",
"sortOrder": 1
},
"setting": {
"type": "settings/detector.url_list",
"value": {
"displayName": "BlockUrlDetector",
"description": "Blocked urls for security reasons",
"urlList": {
"urls": [
"www.medium.com",
"medium.com",
"wikipedia.org"
]
}
}
}
}
예 2: DLP 규칙
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
"orgUnit": "orgUnits/<ORG_UNIT_ID>",
"sortOrder": 1
},
"setting": {
"type": "settings/rule.dlp",
"value": {
"display_name": "TestRule",
"description": "GoogleSecOps URL Blocklist Rule. Keeps state of blocked URLs. Manual modification is not advised",
"triggers": [
"google.workspace.chrome.url.v1.navigation"
],
"condition": {
"contentCondition": "url.matches_url_list('policies/<DETECTOR_POLICY_ID>')"
},
"action": {
"chromeAction": {
"blockContent": {
"actionParams": {
"customEndUserMessage": {
"unsafeHtmlMessageBody": "(EQ)🚫 BlockedAccess denied."
}
}
}
}
},
"state": "ACTIVE"
}
}
}
작업 출력
정책 만들기 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
JSON 결과
다음 예는 정책 만들기 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
{
"type": "ADMIN",
"customer": "customers/<CUSTOMER_ID>",
"policyQuery": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('<ORG_UNIT_ID>'))",
"orgUnit": "orgUnits/<ORG_UNIT_ID>"
},
"setting": {
"type": "settings/rule.dlp",
"value": {
"display_name": "test_create_rule",
"triggers": [
"google.workspace.chrome.file.v1.download"
],
"state": "ACTIVE",
"action": {
"chromeAction": {
"warnUser": {}
}
}
}
}
}
출력 메시지
정책 만들기 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
|
작업이 완료되었습니다. |
Error executing action "Create Policy". Reason: ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 정책 만들기 작업을 사용할 때 스크립트 결과 출력의 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
정책 나열
정책 나열 작업을 사용하여 Cloud ID에서 기존 정책 목록을 가져옵니다.
이 작업은 Google SecOps 항목에서 실행되지 않습니다.
작업 입력
정책 나열 작업에는 다음 매개변수가 필요합니다.
| 매개변수 | 설명 |
|---|---|
Organization Unit Name |
필수 항목입니다. 정책을 나열할 조직 단위의 이름입니다. |
Policy Type Filter |
선택사항입니다. 목록을 필터링하는 데 사용된 정책 유형입니다. 가능한 값: 기본값은 |
Settings Type Filter |
선택사항입니다. 설정 유형별로 정책을 필터링하는 데 사용되는 정규 표현식 패턴입니다. 이 필터는 API 요청에 직접 적용됩니다. |
Settings Display Name Filter |
선택사항입니다. 정책 설정을 필터링하는 데 사용되는 쉼표로 구분된 표시 이름 목록입니다. |
Max Results To Return |
선택사항입니다. 작업 실행에 대해 반환할 최대 결과 수입니다. 기본값은 |
작업 출력
정책 나열 작업은 다음 출력을 제공합니다.
| 작업 출력 유형 | 가용성 |
|---|---|
| 케이스 월 연결 | 사용 불가 |
| 케이스 월 링크 | 사용 불가 |
| 케이스 월 테이블 | 사용 불가 |
| 보강 테이블 | 사용 불가 |
| JSON 결과 | 사용 가능 |
| 출력 메시지 | 사용 가능 |
| 스크립트 결과 | 사용 가능 |
JSON 결과
다음 예는 정책 목록 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.
[
{
"name": "policies/123",
"customer": "customers/123",
"type": "ADMIN",
"policy_query": {
"query": "entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('12345'))",
"orgUnit": "orgUnits/12345",
"sortOrder": 1
},
"setting": {
"type": "settings/rule.dlp",
"value": {
"display_name": "Test DLP Rule"
}
}
}
]
출력 메시지
정책 나열 작업은 다음 출력 메시지를 반환할 수 있습니다.
| 출력 메시지 | 메시지 설명 |
|---|---|
|
|
작업이 완료되었습니다. |
Error executing action "List Policies". Reason: ERROR_REASON |
작업이 실패했습니다. 서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다. |
스크립트 결과
다음 표에는 정책 나열 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.
| 스크립트 결과 이름 | 값 |
|---|---|
is_success |
true 또는 false |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.