감사 로깅을 위한 역할 구성

이 주제에서는 일련의 샘플 감사 시나리오에서 Google Cloud ID 및 액세스 관리 권한을 구성하는 방법에 대해 설명합니다. 또한 각 시나리오에서 회사의 감사 관련 역할에 어떤 Cloud IAM 역할을 부여해야 하는지 설명합니다. 이 주제의 예제는 주로 보안 관리자, 감사자, 조직의 감사 작업을 관리하는 직원을 대상으로 합니다.

배경

Google Cloud Platform(GCP)은 로깅 요구 사항을 해결하기 위한 Stackdriver 제품군의 핵심 요소인 Cloud 감사 로깅을 제공합니다. 이는 프로젝트별로 GCP 서비스가 생성하는 2개의 로그 스트림인 관리자 활동 및 데이터 액세스로 구성되며 이를 통해 GCP 프로젝트에서 '누가 언제 어디서 어떤 작업을 했는지' 파악할 수 있습니다. 이러한 로그는 애플리케이션 로그와는 다르며 자세한 내용은 아래에서 설명합니다.

  • 관리자 활동 로그는 API 호출과 관련된 로그 항목이나 리소스의 구성 또는 메타데이터를 수정하는 다른 관리 작업을 포함합니다. 관리자 활동 로그는 항상 사용 설정되어 있습니다. 관리자 활동 감사 로그에는 요금이 부과되지 않습니다.
  • 데이터 액세스 로그는 사용자가 제공한 데이터를 생성하거나 수정하거나 읽는 API 호출을 기록합니다. 데이터 액세스 감사 로그는 크기가 클 수 있으므로 기본적으로 사용 중지되어 있습니다.

감사 로그를 생성하는 각 서비스는 감사 로그 생성 서비스 섹션에서 확인할 수 있습니다.

로그 항목은 보관 기간이라는 제한된 기간 동안 Stackdriver에 보관된다는 점에 유의해야 합니다. 보관 기간이 지난 항목은 삭제됩니다. 로그 항목을 더 오랫동안 보관하려면 이를 Stackdriver에서 Cloud Pub/Sub, BigQuery, Cloud Storage 버킷 등으로 내보내야 합니다.

이 주제의 예제 시나리오에서는 클라우드 조직이 구성되었다고 가정합니다.

이 문서는 로깅 역할 및 권한에 대해 자세히 설명하지 않습니다. 자세한 설명은 Stackdriver의 액세스 제어 가이드를 참조하세요.

시나리오: 운영 모니터링

이 시나리오에서 조직의 중앙 보안팀은 Stackdriver 및 장기 저장소의 민감한 정보가 포함될 수 있는 로그를 확인할 권한을 갖고 있습니다.

이전 감사 데이터는 Cloud Storage에 저장됩니다. 조직은 애플리케이션을 사용하여 이전 감사 데이터에 대한 액세스를 제공합니다. 이 애플리케이션은 서비스 계정을 사용하여 로그 데이터에 액세스합니다. 일부 민감한 감사 로그 데이터로 인해 해당 데이터는 Cloud Data Loss Prevention API를 통해 수정된 다음 조회용으로 공개됩니다.

아래 표에는 CTO, 보안팀, 서비스 계정에 부여해야 하는 Cloud IAM 역할 및 역할이 부여되는 리소스 수준이 나와 있습니다.

역할 리소스 구성원 설명
resourcemanager.organizationAdmin 조직 CTO resourcemanager.organizationAdmin 역할을 가진 CTO는 보안팀 및 서비스 계정에 권한을 할당할 수 있습니다.
logging.viewer 조직 보안팀 logging.viewer 역할을 가진 보안 관리팀은 관리자 활동 로그를 볼 수 있습니다.
logging.privateLogsViewer 조직 보안팀 logging.privateLogsViewer 역할은 데이터 액세스 로그를 볼 수 있는 권한을 제공합니다.

로그 항목을 내보낸 후 내보낸 사본에 대한 액세스는 내보낸 모든 대상 위치(Cloud Storage, BigQuery, Cloud Pub/Sub)에서의 Cloud IAM 권한 및 역할에 의해 전적으로 제어됩니다. 이 시나리오에서 감사 로그를 장기 저장할 대상 위치는 Cloud Storage입니다.

역할 리소스 구성원 설명
logging.viewer 조직 서비스 계정 logging.viewer 역할을 가진 서비스 계정은 Stackdriver의 관리자 활동 로그를 읽을 수 있습니다.

데이터 액세스 로그의 데이터는 해당 조직의 개인 식별 정보(PII)로 간주합니다. 애플리케이션을 DLP API와 통합하면 데이터 액세스 로그를 볼 때 해당 데이터가 데이터 액세스 로그 또는 Cloud Storage의 이전 자료실에 있는지 여부와 관계없이 민감한 PII 데이터를 수정할 수 있습니다.

역할 리소스 구성원 설명
storage.objectViewer 버킷 서비스 계정 storage.objectViewer 역할을 가진 서비스 계정은 내보낸 관리자 활동 로그를 읽을 수 있습니다.

이 시나리오에서 조직 리소스에 바인딩된 Cloud IAM 정책은 다음과 유사합니다.

{
    "bindings": [{
            "role": "roles/resourcemanager.organizationAdmin",
            "members": [
                "user:cto@example.com"
            ]
        },
        {
            "role": "roles/logging.viewer",
            "members": [
                "group:security-team@example.com",
                "serviceAccount:prod-logviewer@admin-resources.iam.gserviceacount.com"
            ]
        },
        {
            "role": "roles/logging.privateLogViewer",
            "members": [
                "group:security-team@example.com"

            ]
        }
    ]
}

이 시나리오에서 대상 위치 싱크로 구성된 버킷에 바인딩된 Cloud IAM 정책은 다음과 유사합니다.

{
    "bindings": [{
        "role": "roles/storage.objectViewer",
        "members": [
            "serviceAccount:prod-logviewer@admin-resources.iam.gserviceacount.com"
        ]
    }]
}

시나리오: 개발팀의 감사 로그 모니터링

이 시나리오에서 조직의 개발자는 애플리케이션을 개발하면서 생성된 감사 로그를 확인해야 합니다. DLP API를 사용하여 프로덕션 로그를 수정하지 않은 경우 개발자는 해당 로그를 확인할 수 없습니다. 개발자는 대시보드 애플리케이션을 통해 내보낸 프로덕션 데이터에 보기 전용 권한으로 액세스할 수 있습니다. 해당 조직의 보안팀은 프로덕션 환경 및 개발 환경의 모든 로그에 액세스할 수 있습니다.

아래 표에는 보안팀, 개발자, 서비스 계정에 부여해야 하는 Cloud IAM 역할 및 역할이 부여되는 리소스 수준이 나와 있습니다.

역할 리소스 구성원 설명
logging.viewer 조직 보안팀 logging.viewer 역할을 가진 보안 관리팀은 관리자 활동 로그를 볼 수 있습니다.
logging.privateLogsViewer 조직 보안팀 logging.privateLogsViewer 역할은 데이터 액세스 로그를 볼 수 있는 권한을 제공합니다.
logging.viewer 폴더 개발자팀 logging.viewer 역할을 가진 개발자팀은 모든 개발자 프로젝트가 있는 폴더에 포함된 개발자 프로젝트에 의해 생성된 관리자 활동 로그를 볼 수 있습니다.
logging.privateLogsViewer 폴더 개발자팀 logging.privateLogsViewer 역할은 데이터 액세스 로그를 볼 수 있는 권한을 제공합니다.

내보낸 사본에 대한 액세스는 내보낸 모든 대상 위치(Cloud Storage, BigQuery, Cloud Pub/Sub)에서의 Cloud IAM 권한 및 역할에 의해 전적으로 제어됩니다. 이 시나리오에서 감사 로그를 저장할 대상 위치는 BigQuery입니다.

역할 리소스 구성원 설명
bigquery.dataViewer BigQuery 데이터세트 대시보드 서비스 계정 bigquery.dataViewer 역할을 통해 대시보드 애플리케이션에서 사용하는 서비스 계정은 내보낸 관리자 활동 로그를 읽을 수 있습니다.

이 시나리오에서 개발팀의 폴더 리소스에 바인딩된 Cloud IAM 정책은 다음과 유사합니다.

{
    "bindings": [{
            "role": "roles/logging.viewer",
            "members": [
                "group:developer-team@example.com"
            ]
        },
        {
            "role": "roles/logging.privateLogViewer",
            "members": [
                "group:developer-team@example.com"

            ]
        }
    ]
}

이 시나리오에서 조직 리소스에 바인딩된 Cloud IAM 정책은 다음과 유사합니다.

{
    "bindings": [{
            "role": "roles/logging.viewer",
            "members": [
                "group:security-team@example.com"
            ]
        },
        {
            "role": "roles/logging.privateLogViewer",
            "members": [
                "group:security-team@example.com"

            ]
        }
    ]
}

이 시나리오에서 대상 위치 싱크로 구성된 BigQuery 데이터세트에 바인딩된 Cloud IAM 정책은 다음과 유사합니다.

{
    "bindings": [{
        "role": "roles/bigquery.dataViewer",
        "members": [
            "serviceAccount:prod-project-dashboard@admin-resources.iam.gserviceacount.com"

        ]
    }]
}

시나리오: 외부 감사자

이 시나리오에서는 조직의 감사 로그를 집계하여 중앙 싱크 위치로 내보냅니다. 제3자 감사자에게는 조직의 감사 로그를 검토할 수 있는 액세스 권한이 1년에 여러 번 부여됩니다. 해당 감사자는 관리자 활동 로그의 PII 데이터를 볼 수 없습니다. 이 요구사항을 준수하기 위해 대시보드를 사용하여 BigQuery에 저장된 이전 로그에 액세스할 수 있으며 요청 시 Stackdriver 관리자 활동 로그에 액세스할 수 있습니다.

조직은 감사 기간 때마다 임시 감사자 계정을 생성합니다. 이 계정은 모니터링되며 일반적으로 대시보드 애플리케이션에 액세스할 수 있는 권한을 부여받습니다.

일반적인 액세스 중에 감사자는 BigQuery에 저장된 이전 로그만 볼 수 있습니다. 이상이 발견되면 감사자는 대시보드의 권한 상승 모드를 통해 실제 Stackdriver 관리자 활동 로그를 볼 수 있는 권한을 부여받습니다. 감사 기간이 끝나면 액세스 권한은 취소됩니다.

데이터는 DLP API를 사용하여 수정된 다음 대시보드 애플리케이션을 통해 조회할 수 있도록 공개됩니다.

아래 표에는 조직 관리자가 대시보드에서 사용하는 서비스 계정에 부여할 수 있는 Cloud IAM 로깅 역할 및 역할이 부여되는 리소스 수준이 나와 있습니다.

역할 리소스 구성원 설명
logging.viewer 조직 대시보드 서비스 계정 logging.viewer 역할을 가진 서비스 계정은 Stackdriver의 관리자 활동 로그를 읽을 수 있습니다.
bigquery.dataViewer BigQuery 데이터세트 대시보드 서비스 계정 bigquery.dataViewer 역할을 통해 대시보드 애플리케이션에서 사용하는 서비스 계정은 내보낸 관리자 활동 로그를 읽을 수 있습니다.

이 시나리오에서 조직 리소스에 바인딩된 Cloud IAM 정책은 다음과 유사합니다.

{
    "bindings": [{
        "role": "roles/logging.viewer",
        "members": [
            "serviceAccount:prod-project-dashboard@admin-resources.iam.gserviceacount.com"
        ]
    }]
}

이 시나리오에서 대상 위치 싱크로 구성된 BigQuery 데이터세트에 바인딩된 Cloud IAM 정책은 다음과 유사합니다.

{
    "bindings": [{
        "role": "roles/bigquery.dataViewer",
        "members": [
            "serviceAccount:prod-project-dashboard@admin-resources.iam.gserviceacount.com"
        ]
    }]
}
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud ID 및 액세스 관리 문서