Cloud 감사 로그 개요

이 문서에서는 Cloud 감사 로그의 개념 개요를 설명합니다.

Google Cloud 서비스는 Google Cloud 리소스 내의 관리 활동과 액세스를 기록하는 감사 로그를 작성합니다. 감사 로그는 온프레미스 환경과 투명성 수준이 동일한 Google Cloud 리소스 내에서 '누가 언제 어디서 무엇을 했는가?'라는 질문에 답하는 데 도움을 줍니다. 감사 로그를 사용 설정하면 보안, 감사, 규정 준수 항목이 Google Cloud 데이터 및 시스템에서 취약점 발생 또는 외부 데이터 오용 가능성을 모니터링할 수 있습니다.

감사 로그를 생성하는 Google Cloud 서비스

감사 로그를 제공하는 Google Cloud 서비스 목록은 감사 로그를 생성하는 Google Cloud 서비스를 참조하세요. 모든 Google Cloud 서비스는 감사 로그를 제공합니다.

Google Workspace 감사 로그의 개요는 Google Workspace 감사 로그를 참조하세요.

필요한 역할

감사 로그를 보려면 적절한 Identity and Access Management(IAM) 권한 및 역할이 있어야 합니다.

  • 관리자 활동, 정책 거부, 시스템 이벤트 감사 로그에 대한 읽기 전용 액세스 권한을 얻으려면 관리자에게 문의해서 프로젝트에 대한 로그 뷰어(roles/logging.viewer) IAM 역할이 있는지 확인합니다.

    로그 뷰어((roles/logging.viewer)) 역할만 있는 경우 _Default 버킷에 있는 데이터 액세스 감사 로그를 볼 수 없습니다.

  • 데이터 액세스 로그를 포함하여 _Required_Default 버킷의 모든 로그에 액세스하는 데 필요한 권한을 얻으려면 관리자에게 문의하여 프로젝트에 대한 비공개 로그 뷰어(roles/logging.privateLogViewer) IAM 역할을 부여해 달라고 요청하세요.

    비공개 로그 뷰어 역할 (roles/logging.privateLogViewer)에는 로그 뷰어 역할(roles/logging.viewer)에 포함된 권한과 _Default 버킷의 데이터 액세스 감사 로그를 읽는 데 필요한 권한이 포함되어 있습니다.

감사 로그 데이터에 적용되는 IAM 권한과 역할에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

감사 로그 유형

Cloud 감사 로그는 각 Google Cloud 프로젝트, 폴더, 조직에 대해 다음 감사 로그를 제공합니다.

관리자 활동 감사 로그

관리자 활동 감사 로그에는 API 호출이나 리소스의 구성 또는 메타데이터를 수정하는 기타 작업과 관련된 로그 항목이 포함됩니다. 예를 들어 사용자가 VM 인스턴스를 만들거나 Identity and Access Management 권한을 변경하면 로그가 기록됩니다.

관리자 활동 감사 로그는 항상 기록되며 구성하거나 제외하거나 사용 중지할 수 없습니다. Cloud Logging API를 사용 중지해도 관리자 활동 감사 로그는 계속 생성됩니다.

관리자 활동 감사 로그를 작성하는 서비스 목록과 이러한 로그를 생성하는 활동에 대한 자세한 내용은 감사 로그가 있는 Google Cloud 서비스를 참조하세요.

데이터 액세스 감사 로그

데이터 액세스 감사 로그에는 리소스의 구성 또는 메타데이터를 읽는 API 호출뿐만 아니라 사용자가 제공한 리소스 데이터를 생성, 수정 또는 읽는 사용자 주도 API 호출도 포함됩니다.

Identity and Access Management 정책 allAuthenticatedUsers 또는 allUsers가 있는 공개적으로 사용 가능한 리소스는 감사 로그를 생성하지 않습니다. Google Cloud, Google Workspace, Cloud ID 또는 기업용 Drive 계정에 로그인하지 않고 액세스할 수 있는 리소스는 감사 로그를 생성하지 않습니다. 이를 통해 최종 사용자 ID와 정보를 보호할 수 있습니다.

데이터 액세스 감사 로그(BigQuery 데이터 액세스 감사 로그 제외)는 크기가 클 수 있으므로 기본적으로 사용 중지되어 있습니다. BigQuery 이외의 Google Cloud 서비스에 대해 데이터 액세스 감사 로그를 작성하려면 로그를 명시적으로 사용 설정해야 합니다. 이 로그를 사용 설정하면 추가 로그 사용량에 따라 요금이 Google Cloud 프로젝트에 청구될 수 있습니다. 데이터 액세스 감사 로그 사용 설정 및 구성에 대한 안내는 데이터 액세스 감사 로그 사용 설정을 참조하세요.

데이터 액세스 감사 로그를 작성하는 서비스 목록과 이러한 로그를 생성하는 활동에 대한 자세한 내용은 감사 로그가 있는 Google Cloud 서비스를 참조하세요.

데이터 액세스 감사 로그는 다른 곳으로 라우팅하지 않는 한 _Default 로그 버킷에 저장됩니다. 자세한 내용은 이 페이지의 감사 로그 저장 및 라우팅 섹션을 참고하세요.

시스템 이벤트 감사 로그

시스템 이벤트 감사 로그는 리소스 구성을 수정하는 Google Cloud 작업의 로그 항목을 포함합니다. 시스템 이벤트 감사 로그는 Google Cloud 시스템에서 생성되며 사용자의 직접적인 작업을 통해 생성되지 않습니다.

시스템 이벤트 감사 로그는 항상 기록되며, 구성하거나 제외하거나 사용 중지할 수 없습니다.

시스템 이벤트 감사 로그를 작성하는 서비스 목록과 이러한 로그를 생성하는 활동에 대한 자세한 내용은 감사 로그가 있는 Google Cloud 서비스를 참조하세요.

정책 거부 감사 로그

정책 거부 감사 로그는 보안 정책 위반으로 인해 Google Cloud 서비스가 사용자 또는 서비스 계정에 대해 액세스를 거부할 때 기록됩니다.

기본적으로 정책 거부 감사 로그가 생성되며 Google Cloud 프로젝트에 로그 스토리지에 대한 요금이 청구됩니다. 정책 거부 감사 로그를 중지할 수 없지만 제외 필터를 사용하여 정책 거부 감사 로그가 Cloud Logging에 저장되지 않게 할 수 있습니다.

정책 거부 감사 로그를 작성하는 서비스 목록과 이러한 로그를 생성하는 활동에 대한 자세한 내용은 감사 로그가 있는 Google Cloud 서비스를 참조하세요.

감사 로그 항목 구조

Cloud Logging의 모든 감사 로그 항목은 LogEntry 유형의 객체입니다. 감사 로그 항목과 다른 로그 항목의 차이점은 protoPayload 필드입니다. 이 필드에는 감사 로깅 데이터를 저장하는 AuditLog 객체가 있습니다.

감사 로그 항목을 읽고 해석하는 방법과 감사 로그 항목의 샘플을 보려면 감사 로그 이해를 참조하세요.

로그 이름

Cloud 감사 로그의 로그 이름에는 다음이 포함됩니다.

  • 감사 로그를 소유한 Google Cloud 프로젝트 또는 기타 Google Cloud 항목을 나타내는 리소스 식별자입니다.

  • cloudaudit.googleapis.com 문자열입니다.

  • 로그에 관리자 활동, 데이터 액세스, 정책 거부 또는 시스템 이벤트 감사 로깅 데이터가 포함되어 있는지 여부를 나타내는 문자열입니다.

다음은 리소스 식별자 변수를 포함한 감사 로그 이름입니다.

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

감사 로그의 호출자 ID

감사 로그는 Google Cloud 리소스에서 로깅된 작업을 수행한 ID를 기록합니다. 호출자 ID는 AuditLog 객체의 AuthenticationInfo 필드에 보관됩니다.

감사 로깅은 액세스 성공이나 쓰기 작업에 대해 호출자의 기본 이메일 주소를 수정하지 않습니다.

'권한 거부됨' 오류와 함께 실패하는 읽기 전용 작업의 경우 호출자가 서비스 계정이 아닌 한 감사 로깅에서 호출자의 기본 이메일 주소를 수정할 수 있습니다.

위에 나열된 조건 외에도 특정 Google Cloud 서비스에는 다음 사항이 적용됩니다.

  • BigQuery: 특정 조건이 충족되지 않으면 호출자 ID, IP 주소 및 일부 리소스 이름이 감사 로그에서 수정됩니다.

  • Cloud Storage: Cloud Storage 사용량 로그가 사용 설정되면 Cloud Storage는 사용량 데이터를 Cloud Storage 버킷에 기록하고 버킷의 데이터 액세스 감사 로그를 생성합니다. 생성된 데이터 액세스 감사 로그에는 수정된 호출자 ID가 있습니다.

  • Firestore: JSON 웹 토큰(JWT)이 타사 인증에 사용된 경우 thirdPartyPrincipal 필드에는 토큰의 헤더와 페이로드가 포함됩니다. 예를 들어 Firebase 인증으로 인증된 요청의 감사 로그에는 해당 요청의 인증 토큰이 포함됩니다.
  • VPC 서비스 제어: 정책 거부 감사 로그의 경우 다음과 같은 수정 작업이 수행됩니다.

    • 호출자 이메일 주소의 일부를 수정하여 말줄임표 ...로 바꿀 수 있습니다.

    • google.com 도메인에 속한 일부 호출자 이메일 주소가 수정되고 google-internal로 바뀝니다.

  • 조직 정책: 호출자 이메일 주소의 일부를 수정하여 말줄임표 ...로 바꿀 수 있습니다.

감사 로그의 호출자 IP 주소

호출자 IP 주소는 AuditLog 객체의 RequestMetadata.callerIp 필드에 보관됩니다.

  • 인터넷 호출자의 경우 주소는 공개 IPv4 또는 IPv6 주소입니다.
  • 내부 프로덕션 네트워크 내에서 Google Cloud 서비스 간에 이루어지는 호출의 경우 callerIp가 '비공개'로 수정됩니다.
  • 외부 IP 주소가 있는 Compute Engine VM의 호출자의 경우 callerIp는 VM의 외부 주소입니다.
  • 외부 IP 주소가 없는 Compute Engine VM의 호출자의 경우 VM이 액세스된 리소스와 동일한 조직 또는 프로젝트에 있으면 callerIp가 VM의 내부 IPv4 주소입니다. 그렇지 않으면 callerIp가 'gce-internal-ip'로 수정됩니다. 자세한 내용은 VPC 네트워크 개요를 참고하세요.

감사 로그 보기

모든 감사 로그를 쿼리하거나 감사 로그 이름별로 로그를 쿼리할 수 있습니다. 감사 로그 이름에는 감사 로깅 정보를 보려는 Google Cloud 프로젝트, 폴더, 결제 계정 또는 조직의 리소스 식별자가 포함됩니다. 쿼리에서 색인이 생성된 LogEntry 필드를 지정할 수 있습니다. 로그 쿼리에 대한 자세한 내용은 로그 탐색기에서 쿼리 빌드를 참고하세요.

로그 탐색기를 사용하면 개별 로그 항목을 필터링하여 볼 수 있습니다. SQL을 사용하여 로그 항목 그룹을 분석하려면 로그 애널리틱스 페이지를 사용하세요. 자세한 내용은 다음을 참고하세요.

대부분의 감사 로그는 Google Cloud 콘솔, Google Cloud CLI 또는 Logging API를 사용하여 Cloud Logging에서 볼 수 있습니다. 하지만 결제와 관련된 감사 로그의 경우 Google Cloud CLI 또는 Logging API만 사용할 수 있습니다.

콘솔

Google Cloud 콘솔에서 로그 탐색기를 사용하여 Google Cloud 프로젝트, 폴더 또는 조직의 감사 로그 항목을 검색할 수 있습니다.

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.

  2. 기존 Google Cloud 프로젝트, 폴더 또는 조직을 선택합니다.

  3. 모든 감사 로그를 표시하려면 쿼리 편집기 필드에 다음 쿼리 중 하나를 입력한 후 쿼리 실행을 클릭합니다.

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. 특정 리소스 및 감사 로그 유형에 대한 감사 로그를 표시하려면 쿼리 빌더 창에서 다음을 수행합니다.

    • 리소스 유형에서 감사 로그를 확인할 Google Cloud 리소스를 선택하세요.

    • 로그 이름에서 확인할 감사 로그 유형을 선택합니다.

      • 관리자 활동 감사 로그의 경우 activity를 선택합니다.
      • 데이터 액세스 감사 로그의 경우 data_access를 선택합니다.
      • 시스템 이벤트 감사 로그의 경우 system_event를 선택합니다.
      • 정책 거부 감사 로그의 경우 policy를 선택합니다.
    • 쿼리 실행을 클릭합니다.

    이러한 옵션 중 어느 것도 표시되지 않으면 Google Cloud 프로젝트나 폴더, 조직에 해당 유형의 감사 로그가 없다는 의미입니다.

    로그 탐색기에서 로그를 확인하려고 할 때 문제가 발생하는 경우 문제 해결 정보를 참조하세요.

    로그 탐색기를 사용한 쿼리에 대한 상세 설명은 로그 탐색기에서 쿼리 빌드를 참조하세요.

gcloud

Google Cloud CLI는 Logging API에 명령줄 인터페이스를 제공합니다. 각 로그 이름에 유효한 리소스 식별자를 제공합니다. 예를 들어 쿼리에 PROJECT_ID가 포함된 경우 제공한 프로젝트 식별자가 현재 선택된 Google Cloud 프로젝트를 참조해야 합니다.

Google Cloud 프로젝트 수준의 감사 로그 항목을 읽으려면 다음 명령어를 실행합니다.

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

폴더 수준의 감사 로그 항목을 읽으려면 다음 명령어를 실행합니다.

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \
    --folder=FOLDER_ID

조직 수준의 감사 로그 항목을 읽으려면 다음 명령어를 실행합니다.

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
    --organization=ORGANIZATION_ID

Cloud Billing 계정 수준의 감사 로그 항목을 읽으려면 다음 명령어를 실행합니다.

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

1일 이상 된 로그를 읽으려면 명령어에 --freshness 플래그를 추가합니다.

gcloud CLI 사용에 대한 상세 설명은 gcloud logging read를 참조하세요.

REST

쿼리를 빌드할 때 각 로그 이름에 유효한 리소스 식별자를 제공합니다. 예를 들어 쿼리에 PROJECT_ID가 포함된 경우 제공한 프로젝트 식별자가 현재 선택된 Google Cloud 프로젝트를 참조해야 합니다.

예를 들어 Logging API를 사용하여 프로젝트 수준의 감사 로그 항목을 보려면 다음을 수행합니다.

  1. entries.list 메서드 문서의 API 사용해 보기 섹션으로 이동합니다.

  2. API 사용해 보기 양식의 요청 본문 부분에 다음을 입력합니다. 이 자동 입력된 양식을 클릭하면 요청 본문이 자동으로 입력되지만 각 로그 이름에 유효한 PROJECT_ID를 입력해야 합니다.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. 실행을 클릭합니다.

감사 로그 저장 및 라우팅

Cloud Logging은 로그 버킷을 로그 데이터를 저장하고 정리하는 컨테이너로 사용합니다. 각 결제 계정, Google Cloud 프로젝트, 폴더, 조직에 대해 Logging은 로그 버킷(_Required_Default) 두 개와 그에 맞게 이름이 지정된 싱크를 자동으로 만듭니다.

Cloud Logging _Required 버킷은 관리자 활동 감사 로그와 시스템 이벤트 감사 로그를 저장합니다. 관리자 활동 또는 시스템 이벤트 감사 로그가 저장되는 것을 방지할 수는 없습니다. 로그 항목을 _Required 버킷으로 라우팅하는 싱크도 구성할 수 없습니다.

관리자 활동 감사 로그와 시스템 이벤트 감사 로그는 항상 로그가 생성된 프로젝트의 _Required 버킷에 저장됩니다.

관리자 활동 감사 로그와 시스템 이벤트 감사 로그를 다른 프로젝트로 라우트하면 이러한 로그가 대상 프로젝트의 _Default 또는 _Required 싱크를 통과하지 않습니다. 따라서 이러한 로그는 대상 프로젝트의 _Default 로그 버킷 또는 _Required 로그 버킷에 저장되지 않습니다. 이러한 로그를 저장하려면 대상 프로젝트에 로그 싱크를 만듭니다. 자세한 내용은 지원되는 대상으로 로그 라우팅을 참조하세요.

_Default 버킷은 기본적으로 사용 설정된 데이터 액세스 감사 로그와 정책 거부 감사 로그를 저장합니다. 데이터 액세스 감사 로그가 _Default 버킷에 저장되지 않도록 하려면 이를 사용 중지하면 됩니다. 정책 거부 감사 로그가 _Default 버킷에 저장되지 않도록 하려면 싱크의 필터를 수정하여 이를 제외하면 됩니다.

또한 Google Cloud 프로젝트 수준에서 사용자 정의된 Cloud Logging 버킷 또는 싱크를 사용하는 Logging 외부의 지원되는 대상으로 감사 로그 항목을 라우팅할 수 있습니다. 로그 라우팅에 대한 안내는 지원되는 대상으로 로그 라우팅을 참조하세요.

로그 싱크 필터를 구성할 때는 라우팅하려는 감사 로그 유형을 지정해야 합니다. 필터링 예시는 보안 로깅 쿼리를 참조하세요.

Google Cloud 조직, 폴더 또는 결제 계정의 감사 로그 항목을 라우팅하려면 조직 수준 로그를 수집하여 지원되는 대상으로 라우팅을 참조하세요.

감사 로그 보관

Logging에서 로그 항목이 보관되는 기간에 대한 자세한 내용은 할당량 및 한도: 로그 보관 기간의 보관 정보를 참조하세요.

액세스 제어

IAM 권한 및 역할에 따라 Logging API, 로그 탐색기, Google Cloud CLI의 감사 로그 데이터에 액세스할 수 있는지 여부가 결정됩니다.

필요한 IAM 권한과 역할에 대한 자세한 내용은 IAM으로 액세스 제어를 참고하세요.

할당량 및 한도

감사 로그의 최대 크기 등 로깅 사용량 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

가격 책정

Cloud Logging은 로그를 지원되는 대상으로 라우팅하는 데 비용을 청구하지 않지만 대상에 요금이 부과될 수 있습니다. _Required 로그 버킷을 제외하고 Cloud Logging은 로그를 로그 버킷으로 스트리밍하고 로그 버킷의 기본 보관 기간보다 긴 스토리지에 대해 요금을 청구합니다.

Cloud Logging은 로그 복사, 로그 범위 정의, 로그 탐색기 또는 로그 애널리틱스 페이지를 통해 실행되는 쿼리에 대해 요금을 부과하지 않습니다.

자세한 내용은 다음 문서를 참조하세요.

다음 단계

  • Google Cloud 콘텐츠에 액세스할 때 Google Cloud 직원이 수행한 작업의 로그를 제공하는 액세스 투명성에 대해 알아보세요.