IAM을 사용하여 기능 액세스 제어 구성
기능 RBAC는 시스템 내의 특정 기능 또는 기능에 대한 사용자 액세스를 제어하고 역할에 따라 사용자가 액세스할 수 있는 기능을 결정합니다. 이 페이지에서는 Google Security Operations 내에서 기능 액세스 제어를 구성하는 방법을 설명합니다.
이 문서에서 기존 RBAC라는 용어는 Identity and Access Management(IAM)가 아닌 Google SecOps를 사용하여 구성된 이전에 사용 가능한 액세스 제어 시스템을 나타내기 위해 사용됩니다. 기능 RBAC는 IAM을 사용하여 구성하는 기능 기반 액세스 제어를 설명하는데 사용됩니다.
Google SecOps는 Google Cloud IAM과 통합되어 Google SecOps 관련 권한 및 사전 정의된 역할을 제공합니다. Google SecOps 관리자는 사용자 또는 그룹을 사전 정의된 역할에 바인딩하는 IAM 정책을 만들어 기능에 대한 액세스 권한을 제어하거나 커스텀 IAM 역할을 만들 수 있습니다. 이 기능은 특정 UDM 레코드 또는 UDM 레코드의 필드에 대한 액세스를 제어하지 않습니다.
이 문서에서는 다음을 설명합니다.
- Google SecOps가 IAM과 통합되는 방식을 설명합니다.
- 기능 RBAC 역할이 기존 RBAC 역할과 어떻게 다른지 설명합니다.
- Google SecOps 인스턴스를 RBAC 기능으로 마이그레이션하는 단계를 제공합니다.
- IAM을 사용하여 권한을 할당하는 방법에 대한 예를 제공합니다.
- IAM에서 사용할 수 있는 권한과 사전 정의된 역할을 요약합니다.
일반적으로 사용되는 Google SecOps 권한 및 권한이 생성하는 감사 로그 목록은 리소스 그룹별 권한 및 API 메서드를 참고하세요. 모든 Google SecOps 권한 목록은 Identity and Access Management 권한 참조를 참고하세요.
각 Google SecOps 권한은 Google SecOps API 리소스 및 메서드와 연결되어 있습니다. 사용자 또는 그룹에 권한이 부여된 경우 사용자가 Google SecOps의 기능에 액세스하고 관련 API 메서드를 사용하여 요청을 보낼 수 있습니다.
Google SecOps가 IAM과 통합되는 방법
IAM을 사용하려면 Google SecOps를 Google Cloud 프로젝트에 바인딩하고 서드 파티 ID 공급업체에 대한 인증 흐름의 중간 단계로 Cloud ID, Google Workspace 또는 Google Cloud 직원 ID 제휴를 사용하여 구성해야 합니다. 서드 파티 인증 흐름에 대한 자세한 내용은 Google SecOps를 서드 파티 ID 공급업체와 통합을 참고하세요.
Google SecOps는 다음 단계를 수행하여 기능 액세스를 확인 및 제어합니다.
- Google SecOps에 로그온한 후 사용자가 Google SecOps 애플리케이션 페이지에 액세스합니다. 또는 사용자가 Google SecOps에 API 요청을 보낼 수 있습니다.
- Google SecOps는 해당 사용자에 대해 정의된 IAM 정책에 부여된 권한을 확인합니다.
- IAM이 승인 정보를 반환합니다. 사용자가 애플리케이션 페이지에 액세스한 경우 Google SecOps는 사용자에게 액세스 권한이 부여된 기능에만 액세스 권한을 사용 설정합니다.
- 사용자가 API 요청을 보냈지만 요청된 작업을 수행할 권한이 없으면 API 응답에 오류가 포함됩니다. 그렇지 않으면 표준 응답이 반환됩니다.
Google SecOps는 사용자가 기능에 액세스할 수 있는지 여부를 제어하는 정의된 권한 집합이 포함된 사전 정의된 역할 집합을 제공합니다. 단일 IAM 정책은 웹 인터페이스 및 API를 사용하여 기능 액세스를 제어합니다.
Google SecOps에 바인딩된 Google Cloud 프로젝트에 다른 Google Cloud 서비스가 있고 프로젝트 IAM 관리자 역할이 있는 사용자를 Google SecOps 리소스만 수정하도록 제한하려면 허용 정책에 IAM 조건을 추가합니다. 이를 수행하는 방법 예시는 사용자 및 그룹에 역할 할당을 참조하세요.
관리자는 조직에서 직원의 역할을 기반으로 Google SecOps 기능에 대한 액세스를 조정합니다.
시작하기 전에
- Cloud Shell, gcloud CLI 명령어, Google Cloud 콘솔을 숙지해야 합니다.
- 다음 개념을 포함하여 IAM을 숙지하세요.
- Google Cloud 프로젝트에 Google SecOps 바인딩의 모든 단계를 수행하여 Google SecOps에 바인딩된 프로젝트를 설정합니다.
- 다음 중 하나를 사용하여 ID 공급업체를 구성합니다.
- Google Cloud ID 공급업체 구성
- Google SecOps를 서드 파티 ID 공급업체와 통합의 모든 단계를 수행하여 서드 파티 ID 공급업체(IdP)를 통해 인증을 설정합니다.
- 프로젝트를 Google SecOps 인스턴스에 바인딩하고 ID 공급자를 구성합니다.
- 이 문서의 단계를 수행하기 위한 권한이 있는지 확인합니다. 온보딩 프로세스의 각 단계에 필요한 권한에 대해서는 필요한 역할을 참조하세요.
구현 계획
조직의 배포 요구사항을 지원하는 IAM 정책을 만듭니다. Google SecOps 사전 정의된 역할 또는 사용자가 만든 커스텀 역할을 사용할 수 있습니다.
조직 요구사항에 따라 Google SecOps 사전 정의된 역할 및 권한 목록을 검토합니다. 각 Google SecOps 기능에 대해 액세스 권한을 가져야 하는 조직 구성원을 식별합니다. 조직에 사전 정의된 Google SecOps 역할과 다른 IAM 정책이 필요한 경우 이러한 요구사항을 지원하도록 커스텀 역할을 만듭니다. IAM 커스텀 역할에 대한 자세한 내용은 커스텀 역할 만들기 및 관리를 참조하세요.
Google SecOps 역할 및 권한 요약
다음 섹션에서는 사전 정의된 역할에 대한 대략적인 요약을 제공합니다.
Google SecOps 권한의 최신 목록은 IAM 권한 참조에 있습니다. 권한 검색 섹션에서 chronicle
을 검색합니다.
사전 정의된 Google SecOps 역할의 최신 목록은 IAM 기본 및 사전 정의된 역할 참조에 있습니다. 사전 정의된 역할 섹션에서 Chronicle API 역할 서비스를 선택하거나 chronicle
을 검색합니다.
API 메서드 및 권한, 권한이 사용되는 페이지, API가 호출될 때 Cloud 감사 로그에 기록되는 정보에 대한 자세한 내용은 IAM의 Chronicle 권한을 참고하세요.
IAM의 Google SecOps 사전 정의된 역할
Google Security Operations는 IAM에 표시되는 대로 다음과 같은 사전 정의된 역할을 제공합니다.
IAM의 사전 정의된 역할 | 제목 | 설명 |
---|---|---|
roles/chronicle.admin |
Chronicle API 관리자 | 전역 설정을 포함하여 Google Security Operations 애플리케이션 및 API 서비스에 대한 전체 액세스 권한을 갖습니다. |
roles/chronicle.editor |
Chronicle API 편집자 | Google Security Operations 애플리케이션 및 API 리소스에 대한 수정 액세스 권한을 갖습니다. |
roles/chronicle.viewer |
Chronicle API 뷰어 | Google Security Operations 애플리케이션 및 API 리소스에 대한 읽기 전용 액세스 권한을 갖습니다. |
roles/chronicle.limitedViewer |
Chronicle API 제한적 뷰어 | 감지 엔진 규칙 및 RetroHunt를 제외하고 Google Security Operations 애플리케이션 및 API 리소스에 대해 읽기 전용 액세스 권한을 부여합니다. |
IAM의 Google SecOps 권한
Google SecOps 권한은 Google SecOps API 메서드와 일대일로 대응합니다. 각 Google SecOps 권한은 웹 애플리케이션 또는 API를 사용할 때 특정 Google SecOps 기능에서 특정 작업을 사용 설정합니다. IAM에 사용되는 Google SecOps API는 알파 출시 단계에 있습니다.
Google SecOps 권한 이름은 SERVICE.FEATURE.ACTION
형식을 따릅니다.
예를 들어 권한 이름 chronicle.dashboards.edit
는 다음으로 구성됩니다.
chronicle
: Google SecOps API 서비스 이름입니다.dashboards
: 기능 이름입니다.edit
: 기능에서 수행할 수 있는 작업입니다.
권한 이름은 Google SecOps에서 기능으로 수행할 수 있는 작업을 기술합니다. 모든 Google SecOps 권한에는 chronicle
서비스 이름이 포함됩니다.
사용자 및 그룹에 역할 할당
다음 섹션에서는 IAM 정책 만들기를 위한 사용 사례 예시를 제공합니다. <project>
용어는 Google SecOps에 바인딩한 프로젝트의 프로젝트 ID를 나타내기 위해 사용됩니다.
Chronicle API를 사용 설정한 후 Google SecOps 사전 정의된 역할 및 권한이 IAM에서 제공되며 조직 요구사항을 지원하도록 정책을 만들 수 있습니다.
새로 만든 Google SecOps 인스턴스가 있으면 조직 요구사항을 충족하도록 IAM 정책을 만듭니다.
기존 Google SecOps 인스턴스인 경우 기능 액세스 제어를 위해 Google SecOps를 IAM으로 마이그레이션에서 인스턴스를 IAM으로 마이그레이션하는 방법을 참고하세요.
예시: 전용 프로젝트에서 프로젝트 IAM 관리자 역할 할당
이 예시에서 프로젝트는 Google SecOps 인스턴스 전용입니다. 프로젝트 IAM 역할 바인딩을 부여하고 수정할 수 있도록 사용자에게 프로젝트 IAM 관리자 역할을 부여합니다. 사용자는 프로젝트의 모든 Google SecOps 역할 및 권한을 관리하고 프로젝트 IAM 관리자 역할에 의해 부여된 태스크를 수행할 수 있습니다.
Google Cloud 콘솔을 사용하여 역할 할당
다음 단계에서는 Google Cloud 콘솔을 사용하여 사용자에게 역할을 부여하는 방법을 설명합니다.
- Google Cloud 콘솔을 엽니다.
- Google SecOps에 바인딩된 프로젝트를 선택합니다.
- IAM 및 관리자를 선택합니다.
- 액세스 권한 부여를 선택합니다.
<project>
에 액세스 권한 부여가 표시됩니다. - 주 구성원 추가 섹션의 새 주 구성원 필드에 관리 대상 계정 이메일 주소를 입력합니다.
- 역할 할당 섹션의 역할 선택 메뉴에서 프로젝트 IAM 관리자 역할을 선택합니다.
- 저장을 클릭합니다.
- IAM > 권한 페이지를 열어 사용자에게 올바른 역할이 부여됐는지 확인합니다.
Google Cloud CLI를 사용하여 역할 할당
다음 예시 명령어에서는 직원 ID 제휴를 사용할 때 사용자에게 chronicle.admin
역할을 부여하는 방법을 보여줍니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_EMAIL \
--role=roles/chronicle.admin
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.WORKFORCE_POOL_ID
: ID 공급업체를 위해 생성된 직원 풀의 식별자입니다.USER_EMAIL
: 사용자의 이메일 주소입니다.
다음 예시 명령어에서는 Cloud ID 또는 Google Workspace를 사용할 때 그룹에 chronicle.admin
역할을 부여하는 방법을 보여줍니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member "user:USER_EMAIL" \
--role=roles/chronicle.admin
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.USER_EMAIL
: 사용자의 이메일 주소입니다.
예시: 공유 프로젝트에서 프로젝트 IAM 관리자 역할 할당
이 예시에서는 프로젝트가 여러 애플리케이션에 대해 사용됩니다. 프로젝트가 Google SecOps 인스턴스에 바인딩되고 Google SecOps와 관련되지 않은 서비스를 실행합니다. 예를 들어 다른 목적으로 사용되는 Compute Engine 리소스입니다.
여기에서는 사용자가 프로젝트의 IAM 역할 바인딩을 부여 및 수정하고 Google SecOps를 구성할 수 있도록 사용자에게 프로젝트 IAM 관리자 역할을 부여할 수 있습니다. 또한 역할 바인딩에 IAM을 추가하여 프로젝트의 Google SecOps 관련 역할에 대한 액세스만 제한합니다. 이 사용자는 IAM 조건에 지정된 역할만 부여할 수 있습니다.
IAM 조건에 대한 자세한 내용은 IAM 조건 개요 및 조건부 역할 바인딩 관리를 참조하세요.
Google Cloud 콘솔을 사용하여 역할 할당
다음 단계에서는 Google Cloud 콘솔을 사용하여 사용자에게 역할을 부여하는 방법을 설명합니다.
- Google Cloud 콘솔을 엽니다.
- Google SecOps에 바인딩된 프로젝트를 선택합니다.
- IAM 및 관리자를 선택합니다.
- 액세스 권한 부여를 선택합니다.
<project>
에 액세스 권한 부여가 표시됩니다. <project>
에 대한 액세스 권한 부여 대화상자의 주 구성원 추가 섹션에서 새 주 구성원 필드에 사용자 이메일 주소를 입력합니다.- 역할 할당 섹션의 역할 선택 메뉴에서 프로젝트 IAM 관리자 역할을 선택합니다.
- + IAM 조건 추가를 클릭합니다.
- 조건 추가 대화상자에 다음 정보를 입력합니다.
- 조건의 제목을 입력합니다.
- 조건 편집기를 선택합니다.
- 다음 조건을 입력합니다.
api.getAttribute(iam.googleapis.com/modifiedGrantsByRole,[]).hasOnly([roles/chronicle.googleapis.com/limitedViewer, roles/chronicle.googleapis.com/viewer, roles/chronicle.googleapis.com/editor, roles/chronicle.googleapis.com/admin])
- 조건 추가 대화상자에서 저장을 클릭합니다.
<project>
에 액세스 권한 부여 대화상자에서 저장을 클릭합니다.- IAM > 권한 페이지를 열어 사용자에게 올바른 역할이 부여됐는지 확인합니다.
Google Cloud CLI를 사용하여 역할 할당
다음 예시 명령어에서는 직원 ID 제휴를 사용할 때 사용자에게 chronicle.admin
역할을 부여하고 IAM 조건을 적용하는 방법을 보여줍니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_EMAIL \
--role=roles/chronicle.admin\
--condition=^:^'expression=api.getAttribute(iam.googleapis.com/modifiedGrantsByRole,[]).hasOnly([roles/chronicle.googleapis.com/limitedViewer, roles/chronicle.googleapis.com/viewer, roles/chronicle.googleapis.com/editor, roles/chronicle.googleapis.com/admin])':'title=Chronicle Role Admin'
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.WORKFORCE_POOL_ID
: ID 공급업체를 위해 생성된 직원 풀의 식별자입니다.USER_EMAIL
: 사용자의 이메일 주소입니다.
다음 예시 명령어에서는 Cloud Identity 또는 Google Workspace를 사용할 때 그룹에 chronicle.admin
역할을 부여하고 IAM 조건을 적용하는 방법을 보여줍니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=user:USER_EMAIL \
--role=roles/chronicle.admin\
--condition=^:^'expression=api.getAttribute(iam.googleapis.com/modifiedGrantsByRole,[]).hasOnly([roles/chronicle.googleapis.com/limitedViewer, roles/chronicle.googleapis.com/viewer, roles/chronicle.googleapis.com/editor, roles/chronicle.googleapis.com/admin])':'title=Chronicle Role Admin'
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.USER_EMAIL
: 사용자 이메일 주소(예:bob@example.com
)
예시: 사용자에게 Chronicle API 편집자 역할 할당
이 경우 사용자에게 Google SecOps API 리소스에 대한 액세스 권한을 수정하는 기능을 부여하려고 합니다.
Google Cloud 콘솔을 사용하여 역할 할당
- Google Cloud 콘솔을 엽니다.
- Google SecOps에 바인딩된 프로젝트를 선택합니다.
- IAM 및 관리자를 선택합니다.
- 액세스 권한 부여를 선택합니다.
<project>
에 대한 액세스 권한 부여 대화상자가 열립니다. - 주 구성원 추가 섹션의 새 주 구성원 필드에 사용자 이메일 주소를 입력합니다.
- 역할 할당 섹션의 역할 선택 메뉴에서 Google SecOps API 편집자 역할을 선택합니다.
<project>
에 액세스 권한 부여 대화상자에서 저장을 클릭합니다.- IAM > 권한 페이지를 열어 사용자에게 올바른 역할이 부여됐는지 확인합니다.
Google Cloud CLI를 사용하여 역할 할당
다음 예시 명령어에서는 직원 ID 제휴를 사용할 때 사용자에게 chronicle.editor
역할을 부여하는 방법을 보여줍니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_EMAIL \
--role=roles/chronicle.editor
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.WORKFORCE_POOL_ID
: ID 공급업체를 위해 생성된 직원 풀의 식별자입니다.USER_EMAIL
: 사용자의 이메일 주소입니다.다음 예시 명령어에서는 Cloud ID 또는 Google Workspace를 사용할 때 사용자에게
chronicle.editor
역할을 부여하는 방법을 보여줍니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=user:USER_EMAIL \
--role=roles/chronicle.editor
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.WORKFORCE_POOL_ID
: ID 공급업체를 위해 생성된 직원 풀의 식별자입니다.USER_EMAIL
: 사용자의 이메일 주소입니다.
예시: 커스텀 역할 만들기 및 그룹에 할당
사전 정의된 Google SecOps 역할이 조직의 사용 사례에 맞는 권한 그룹을 제공하지 않으면 커스텀 역할을 만들고 해당 커스텀 역할에 Google SecOps 권한을 할당할 수 있습니다. 사용자 또는 그룹에 커스텀 역할을 할당합니다. IAM 커스텀 역할에 대한 자세한 내용은 커스텀 역할 만들기 및 관리를 참조하세요.
다음 단계에서는 LimitedAdmin
이라는 커스텀 역할을 만들 수 있습니다.
LimitedAdmin
이라는 커스텀 역할과 이 역할에 부여된 권한을 정의하는 YAML 또는 JSON 파일을 만듭니다. 다음은 YAML 파일 예시입니다.title: "LimitedAdmin" description: "Admin role with some permissions removed" stage: "ALPHA" includedPermissions: - chronicle.collectors.create - chronicle.collectors.delete - chronicle.collectors.get - chronicle.collectors.list - chronicle.collectors.update - chronicle.dashboards.copy - chronicle.dashboards.create - chronicle.dashboards.delete - chronicle.dashboards.get - chronicle.dashboards.list - chronicle.extensionValidationReports.get - chronicle.extensionValidationReports.list - chronicle.forwarders.create - chronicle.forwarders.delete - chronicle.forwarders.generate - chronicle.forwarders.get - chronicle.forwarders.list - chronicle.forwarders.update - chronicle.instances.get - chronicle.instances.report - chronicle.legacies.legacyGetCuratedRulesTrends - chronicle.legacies.legacyGetRuleCounts - chronicle.legacies.legacyGetRulesTrends - chronicle.legacies.legacyUpdateFinding - chronicle.logTypeSchemas.list - chronicle.multitenantDirectories.get - chronicle.operations.cancel - chronicle.operations.delete - chronicle.operations.get - chronicle.operations.list - chronicle.operations.wait - chronicle.parserExtensions.activate - chronicle.parserExtensions.create - chronicle.parserExtensions.delete - chronicle.parserExtensions.generateKeyValueMappings - chronicle.parserExtensions.get - chronicle.parserExtensions.legacySubmitParserExtension - chronicle.parserExtensions.list - chronicle.parserExtensions.removeSyslog - chronicle.parsers.activate - chronicle.parsers.activateReleaseCandidate - chronicle.parsers.copyPrebuiltParser - chronicle.parsers.create - chronicle.parsers.deactivate - chronicle.parsers.delete - chronicle.parsers.get - chronicle.parsers.list - chronicle.parsers.runParser - chronicle.parsingErrors.list - chronicle.validationErrors.list - chronicle.validationReports.get - resourcemanager.projects.getIamPolicy
커스텀 역할을 만듭니다. 다음 예시 gcloud CLI 명령어에서는 이전 단계에서 만든 YAML 파일을 사용하여 이 커스텀 역할을 만드는 방법을 보여줍니다.
gcloud iam roles create ROLE_NAME \ --project=PROJECT_ID \ --file=YAML_FILE_NAME
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.YAML_FILE_NAME
: 앞선 단계에서 만든 파일의 이름입니다.ROLE_NAME
: YAML 파일에 정의된 커스텀 역할의 이름입니다.
Google Cloud CLI를 사용하여 커스텀 역할 할당
다음 예시 명령어는 직원 ID 제휴를 사용할 때 사용자 그룹에 커스텀 역할인
limitedAdmin
을 부여하는 방법을 보여줍니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID \ --role=projects/PROJECT_ID/roles/limitedAdmin
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.WORKFORCE_POOL_ID
: ID 공급업체를 위해 생성된 직원 풀의 식별자입니다.GROUP_ID
: 직원 ID 제휴에서 생성된 그룹 식별자입니다. 직원 ID 제휴에서 생성된 그룹 식별자에 대한 자세한 내용은 IAM 정책에서 직원 풀 사용자 표현을 참조하세요.GROUP_ID
에 대한 자세한 내용은 IAM 정책에서 직원 풀 사용자 표현을 참조하세요.
다음 예시 명령어는 Cloud Identity 또는를 사용할 때 사용자 그룹에 커스텀 역할인
limitedAdmin
을 부여하는 방법을 보여줍니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=groupid:GROUP_ID \ --role=projects/PROJECT_ID/roles/limitedAdmin
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트에 Google SecOps 인스턴스 바인딩에서 만든 Google SecOps에 바인딩된 프로젝트의 프로젝트 ID입니다. 프로젝트를 식별하는 필드에 대한 설명은 프로젝트 만들기 및 관리를 참조하세요.WORKFORCE_POOL_ID
: ID 공급업체를 위해 생성된 직원 풀의 식별자입니다.GROUP_ID
: 직원 ID 제휴에서 생성된 그룹 식별자입니다. 직원 ID 제휴에서 생성된 그룹 식별자에 대한 자세한 내용은 IAM 정책에서 직원 풀 사용자 표현을 참조하세요.GROUP_ID
에 대한 자세한 내용은 IAM 정책에서 직원 풀 사용자 표현을 참조하세요.
감사 로깅 확인
Google SecOps의 사용자 작업 및 Google SecOps API에 대한 요청은 Cloud 감사 로그로 기록됩니다. 로그가 작성되는지 확인하려면 다음 단계를 수행합니다.
- 모든 기능에 액세스할 수 있는 권한이 있는 사용자로 Google SecOps에 로그인합니다. 자세한 내용은 Google SecOps에 로그인을 참고하세요.
- 검색 등의 작업을 수행합니다.
- Google Cloud 콘솔에서 로그 탐색기를 사용하여 Google SecOps에 바인딩된 클라우드 프로젝트의 감사 로그를 봅니다. Google SecOps 감사 로그에는 다음과 같은 서비스 이름
chronicle.googleapis.com
이 포함됩니다.
Cloud 감사 로그를 보는 방법에 대한 자세한 내용은 Google SecOps 감사 로깅 정보를 참고하세요.
다음은 alice@example.com
사용자가 Google SecOps에서 파서 확장 프로그램 목록을 봤을 때 기록되는 예시 로그입니다.
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "alice@example.com"
},
"requestMetadata": {
"callerIp": "private",
"callerSuppliedUserAgent": "abc_client",
"requestAttributes": {
"time": "2023-03-27T21:09:43.897772385Z",
"reason": "8uSywAYeWhxBRiBhdXRoIFVwVGljay0-REFUIGV4Y2abcdef",
"auth": {}
},
"destinationAttributes": {}
},
"serviceName": "chronicle.googleapis.com",
"methodName": "google.cloud.chronicle.v1main.ParserService.ListParserExtensions",
"authorizationInfo": [
{
"resource": "projects/100000000000/locations/us/instances/aaaa0aa0-000A-00a0-0000-0000a0aa0a1/logTypes/-",
"permission": "chronicle.parserExtensions.list",
"granted": true,
"resourceAttributes": {}
}
],
"resourceName": "projects/100000000000/locations/us/instances/aaaa0aa0-000A-00a0-0000-0000a0aa0a1/logTypes/-",
"numResponseItems": "12",
"request": {
"@type": "type.googleapis.com/google.cloud.chronicle.v1main.ListParserExtensionsRequest",
"parent": "projects/100000000000/locations/us/instances/aaaa0aa0-000A-00a0-0000-0000a0aa0a1/logTypes/-"
},
"response": {
"@type": "type.googleapis.com/google.cloud.chronicle.v1main.ListParserExtensionsResponse"
}
},
"insertId": "1h0b0e0a0",
"resource": {
"type": "audited_resource",
"labels": {
"project_id": "dev-sys-server001",
"method": "google.cloud.chronicle.v1main.ParserService.ListParserExtensions",
"service": "chronicle.googleapis.com"
}
},
"timestamp": "2023-03-27T21:09:43.744940164Z",
"severity": "INFO",
"logName": "projects/dev-sys-server001/logs/cloudaudit.googleapis.com%2Fdata_access",
"receiveTimestamp": "2023-03-27T21:09:44.863100753Z"
}
기능 액세스 제어를 위해 Google SecOps를 기능 RBAC로 마이그레이션
이 섹션의 정보를 사용하여 기존 Google Security Operations SIEM 인스턴스를 기존 RBAC 시스템에서 기능 RBAC로 마이그레이션합니다.
또한 기능 RBAC로 마이그레이션한 후 Cloud 감사 로그를 사용하여 Google SecOps 인스턴스에서 활동을 감사할 수 있습니다.
기존 RBAC와 기능 RBAC의 차이점
기능 RBAC 사전 정의된 역할 이름이 기존 RBAC 역할과 비슷하지만 기능 RBAC 사전 정의된 역할은 기존 RBAC 역할과 동일한 기능 액세스를 제공하지 않습니다. 사전 정의된 각 기능 RBAC 역할에 할당되는 권한이 약간 다릅니다. 자세한 내용은 기능 RBAC IAM 역할이 기존 RBAC 역할에 매핑되는 방법을 참고하세요.
Google SecOps 사전 정의된 역할을 있는 그대로 사용하거나, 각 사전 정의된 역할에 정의된 권한을 변경하거나, 커스텀 역할을 만들고 다른 권한 집합을 할당할 수 있습니다.
Google SecOps 인스턴스를 마이그레이션한 후 Google Cloud 콘솔에서 IAM을 사용하여 역할, 권한, 기능 RBAC 정책을 관리합니다. 다음 Google SecOps 애플리케이션 페이지는 사용자를 Google Cloud 콘솔로 연결하도록 수정되었습니다.
- 사용자 및 그룹
- 역할
기존 RBAC에서 각 권한은 기능 이름 및 작업으로 기술됩니다. 기능 RBAC의 IAM 권한은 리소스 이름 및 메서드로 기술됩니다. 다음 표는 대시보드 및 피드의 두 가지 예시를 통해 차이점을 보여줍니다.
대시보드 예시: 대시보드 액세스를 제어하기 위해 기존 RBAC는 대시보드에서 수행할 수 있는 5가지 작업을 제공합니다. 기능 RBAC는 사용자가 사용 가능한 대시보드를 나열할 수 있도록 하는 추가 권한
dashboards.list
가 있는 유사한 IAM 권한을 제공합니다.피드 예시: 피드 액세스를 제어하기 위해 기존 RBAC는 사용 설정 또는 사용 중지할 수 있는 7가지 작업을 제공합니다. 기능 RBAC에는
feeds.delete
,feeds.create
,feeds.update
,feeds.view
의 4가지 작업이 있습니다.
기능 | 기존 RBAC의 권한 | 기능 RBAC의 IAM 권한 | 사용자 작업 설명 |
---|---|---|---|
대시보드 | 수정 | chronicle.dashboards.edit |
대시보드 수정 |
대시보드 | 복사 | chronicle.dashboards.copy |
대시보드 복사 |
대시보드 | 만들기 | chronicle.dashboards.create |
대시보드 만들기 |
대시보드 | 예약 | chronicle.dashboards.schedule |
보고서 예약 |
대시보드 | 삭제 | chronicle.dashboards.delete |
보고서 삭제 |
대시보드 | 없음 이 기능은 기능 RBAC에서만 사용할 수 있습니다. | chronicle.dashboards.list |
사용 가능한 대시보드 나열 |
피드 | DeleteFeed | chronicle.feeds.delete |
피드 삭제 |
피드 | CreateFeed | chronicle.feeds.create |
피드 만들기 |
피드 | UpdateFeed | chronicle.feeds.update |
피드 업데이트 |
피드 | EnableFeed | chronicle.feeds.update |
피드 업데이트 |
피드 | DisableFeed | chronicle.feeds.update |
피드 업데이트 |
피드 | ListFeeds | chronicle.feeds.view |
하나 이상의 피드 반환 |
피드 | GetFeed | chronicle.feeds.view |
하나 이상의 피드 반환 |
기존 액세스 제어 권한을 마이그레이션하는 단계
기존 Google SecOps 인스턴스를 마이그레이션하는 단계를 완료한 후 기능 액세스 제어 구성을 마이그레이션할 수도 있습니다.
Google SecOps는 SIEM 설정 > 사용자 및 그룹 페이지의 Google SecOps에서 구성된 기존 RBAC와 동일한 새 기능 RBAC IAM 정책을 만드는 자동 생성 명령어를 제공합니다.
Google SecOps를 위한 Google Cloud 프로젝트 구성에 설명된 필수 권한이 있는지 확인한 후 기존 권한 및 역할을 IAM으로 마이그레이션의 단계를 따르세요.
기능 RBAC IAM 역할이 기존 RBAC 역할에 매핑되는 방식
이 섹션의 매핑 정보는 마이그레이션 전후에 사전 정의된 역할에 대한 액세스 권한의 몇 가지 차이점을 설명합니다. 기존 RBAC 역할 이름은 기능 RBAC IAM 사전 정의된 역할과 비슷하지만 각 역할에서 액세스 권한을 제공하는 작업은 다릅니다. 이 섹션에서는 이러한 차이점 중 일부를 소개합니다.
Chronicle API 제한적 뷰어
이 역할은 감지 엔진 규칙 및 RetroHunt를 제외하고 Google SecOps 애플리케이션 및 API 리소스에 대해 읽기 전용 액세스 권한을 부여합니다. 역할 이름은 chronicle.limitedViewer
입니다.
권한의 자세한 목록은 Chronicle API 뷰어를 참고하세요.
Chronicle API 뷰어
이 역할은 Google SecOps 애플리케이션 및 API 리소스에 대한 읽기 전용 액세스 권한을 제공합니다. 역할 이름은 chronicle.viewer
입니다.
다음 권한은 유사한 기존 RBAC와 기능 RBAC 역할 간의 몇 가지 차이점을 보여줍니다. 권한의 자세한 목록은 Chronicle API 뷰어를 참고하세요.
Feature RBAC IAM permission | Equivalent permission is mapped to this legacy RBAC role |
---|---|
chronicle.ruleDeployments.get |
Viewer |
chronicle.ruleDeployments.list |
Viewer |
chronicle.rules.verifyRuleText |
Viewer |
chronicle.rules.get |
Viewer |
chronicle.rules.list |
Viewer |
chronicle.legacies.legacyGetRuleCounts |
Viewer |
chronicle.legacies.legacyGetRulesTrends |
Viewer |
chronicle.rules.listRevisions |
Viewer |
chronicle.legacies.legacyGetCuratedRulesTrends |
Viewer |
chronicle.ruleExecutionErrors.list |
Viewer |
chronicle.curatedRuleSets.get |
Viewer |
chronicle.curatedRuleSetDeployments.get |
Viewer |
chronicle.curatedRuleSets.list |
Viewer |
chronicle.curatedRuleSetDeployments.list |
Viewer |
chronicle.curatedRuleSetCategories.get |
Viewer |
chronicle.curatedRuleSetCategories.list |
Viewer |
chronicle.curatedRuleSetCategories.countAllCuratedRuleSetDetections |
Viewer |
chronicle.curatedRuleSets.countCuratedRuleSetDetections |
Viewer |
chronicle.curatedRules.get |
Viewer |
chronicle.curatedRules.list |
Viewer |
chronicle.referenceLists.list |
Viewer |
chronicle.referenceLists.get |
Viewer |
chronicle.referenceLists.verifyReferenceList |
Viewer |
chronicle.retrohunts.get |
Viewer |
chronicle.retrohunts.list |
Viewer |
chronicle.dashboards.schedule |
Editor |
chronicle.operations.get |
None. This is available in feature RBAC only. |
chronicle.operations.list |
None. This is available in feature RBAC only. |
chronicle.operations.wait |
None. This is available in feature RBAC only. |
chronicle.instances.report |
None. This is available in feature RBAC only. |
chronicle.collectors.get |
None. This is available in feature RBAC only. |
chronicle.collectors.list |
None. This is available in feature RBAC only. |
chronicle.forwarders.generate |
None. This is available in feature RBAC only. |
chronicle.forwarders.get |
None. This is available in feature RBAC only. |
chronicle.forwarders.list |
None. This is available in feature RBAC only. |
Chronicle API 편집자
이 역할이 있으면 사용자가 Google SecOps 애플리케이션 및 API 리소스에 대한 액세스 권한을 수정할 수 있습니다. 역할 이름은 chronicle.editor
입니다.
다음 권한은 유사한 기존 RBAC와 기능 RBAC 역할 간의 몇 가지 차이점을 보여줍니다. 권한의 자세한 목록은 Chronicle API 편집기를 참고하세요.
Feature RBAC IAM permission | Equivalent permission is mapped to this legacy RBAC role |
---|---|
chronicle.ruleDeployments.update |
Editor |
chronicle.rules.update |
Editor |
chronicle.rules.create |
Editor |
chronicle.referenceLists.create |
Editor |
chronicle.referenceLists.update |
Editor |
chronicle.rules.runRetrohunt |
Editor |
chronicle.retrohunts.create |
Editor |
chronicle.curatedRuleSetDeployments.batchUpdate |
Editor |
chronicle.curatedRuleSetDeployments.update |
Editor |
chronicle.dashboards.copy |
Editor |
chronicle.dashboards.edit |
Editor |
chronicle.dashboards.create |
Editor |
chronicle.legacies.legacyUpdateFinding |
Editor |
chronicle.dashboards.delete |
Editor |
chronicle.operations.delete |
None. This is available in feature RBAC only. |
Chronicle API 관리자
이 역할은 전역 설정을 포함하여 Google SecOps 애플리케이션 및 API 서비스에 대한 전체 액세스 권한을 제공합니다. 역할 이름은 chronicle.admin
입니다.
다음 권한은 유사한 기존 RBAC와 기능 RBAC 역할 간의 몇 가지 차이점을 보여줍니다. 권한의 자세한 목록은 Chronicle API 관리자를 참고하세요.
Feature RBAC IAM permission | Equivalent permission is mapped to this legacy RBAC role |
---|---|
chronicle.parserExtensions.delete |
Admin |
chronicle.parsers.copyPrebuiltParser |
Admin |
chronicle.extensionValidationReports.get |
Admin |
chronicle.extensionValidationReports.list |
Admin |
chronicle.validationErrors.list |
Admin |
chronicle.parsers.runParser |
Admin |
chronicle.parserExtensions.get |
Admin |
chronicle.parserExtensions.list |
Admin |
chronicle.validationReports.get |
Admin |
chronicle.parserExtensions.create |
Admin |
chronicle.parserExtensions.removeSyslog |
Admin |
chronicle.parsers.activate |
Admin |
chronicle.parserExtensions.activate |
Admin |
chronicle.parsers.activateReleaseCandidate |
Admin |
chronicle.parsers.deactivate |
Admin |
chronicle.parsers.deactivate |
Admin |
chronicle.parserExtensions.generateKeyValuechronicle.Mappings |
Admin |
chronicle.parserExtensions.legacySubmitParserExtension |
Admin |
chronicle.parsers.activate |
Admin |
chronicle.parsers.activate |
Admin |
chronicle.parsers.activate |
Admin |
chronicle.parsers.list |
Admin |
chronicle.parsers.create |
Admin |
chronicle.parsers.delete |
Admin |
chronicle.feeds.delete |
Admin |
chronicle.feeds.create |
Admin |
chronicle.feeds.update |
Admin |
chronicle.feeds.enable |
Admin |
chronicle.feeds.disable |
Admin |
chronicle.feeds.list |
Admin |
chronicle.feeds.get |
Admin |
chronicle.feedSourceTypeSchemas.list |
Admin |
chronicle.logTypeSchemas.list |
Admin |
chronicle.operations.cancel |
Editor |
chronicle.collectors.create |
None. This is available in feature RBAC only. |
chronicle.collectors.delete |
None. This is available in feature RBAC only. |
chronicle.collectors.update |
None. This is available in feature RBAC only. |
chronicle.forwarders.create |
None. This is available in feature RBAC only. |
chronicle.forwarders.delete |
None. This is available in feature RBAC only. |
chronicle.forwarders.update |
None. This is available in feature RBAC only. |
chronicle.parsingErrors.list |
None. This is available in feature RBAC only. |