감사 로깅에 대한 역할 구성

이번 주제에서는 여러 가지 감사 시나리오를 가정하여 Cloud IAM(Cloud Identity and Access Management) 권한을 구성하는 방법에 대해서 설명합니다. 또한 각 시나리오에서 회사의 감사 관련 역할에 어떤 Cloud IAM 역할을 부여해야 하는지 설명합니다. 이 주제의 예제는 주로 보안 관리자, 감사자, 조직의 감사 작업을 관리하는 직원을 대상으로 합니다.

배경 정보

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

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

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

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

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

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

시나리오: 운영 모니터링

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

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

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

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

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

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

데이터 액세스 로그의 데이터는 이 조직의 개인 식별 정보(PII)로 간주됩니다. 애플리케이션을 Cloud DLP와 통합하면 데이터 액세스 로그를 보면서 민감한 PII 데이터를 수정할 수 있습니다. 이 데이터가 데이터 액세스 로그에 있는 것이든 Cloud Storage의 이전 자료실에서 가져온 것이든 관계없습니다.

역할 리소스 구성원 설명
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를 사용하여 프로덕션 로그를 수정하지 않은 경우 개발자는 이 프로덕션 로그를 확인할 수 있는 권한이 없습니다. 개발자는 대시보드 애플리케이션을 통해 내보낸 프로덕션 데이터에 보기 전용 권한으로 액세스할 수 있습니다. 조직의 보안팀은 프로덕션 과정 및 개발 환경에서 모든 로그에 액세스할 수 있습니다.

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

역할 리소스 구성원 설명
logging.viewer 조직 보안팀 logging.viewer 역할을 부여받은 보안 관리팀은 관리자 활동 로그를 볼 수 있습니다.
logging.privateLogViewer 조직 보안팀 logging.privateLogViewer 역할을 부여받으면 데이터 액세스 로그를 볼 수 있습니다.
logging.viewer 폴더 개발자팀 logging.viewer 역할을 부여받은 개발자팀은 모든 개발자 프로젝트가 있는 폴더에 포함된 개발자 프로젝트에서 생성한 관리자 활동 로그를 볼 수 있습니다.
logging.privateLogViewer 폴더 개발자팀 logging.privateLogViewer 역할을 부여받으면 데이터 액세스 로그를 볼 수 있습니다.

내보낸 사본에 대한 액세스는 모든 대상 위치(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 관리자 활동 로그를 볼 수 있는 권한을 부여받습니다. 감사 기간이 끝날 때마다 액세스 권한은 취소됩니다.

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

아래 표에는 조직 관리자가 대시보드에서 사용하는 서비스 계정에 부여할 수 있는 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 IAM 문서