조직의 로그 집계 및 저장

이 문서에서는 비 가로채기 집계 싱크를 사용하여 Google Cloud 조직에 포함된 리소스에서 생성된 로그 항목을 관리하는 방법을 설명합니다.

쿼리할 수 있는 로그 항목을 제어할지 또는 하위 리소스의 싱크를 통해 라우팅할지 여부에 따라 집계 싱크를 가로채기 또는 비 가로채기로 구성할 수 있습니다. 이 튜토리얼에서는 조직의 감사 로그를 Google Cloud 프로젝트로 라우팅하는 집계 싱크를 만든 후 집계된 감사 로그를 로그 버킷으로 라우팅합니다.

집계 싱크에 대한 자세한 내용은 조직 및 폴더 수준 로그를 취합하여 지원되는 목적지로 라우팅을 참조하세요.

이 튜토리얼에서는 다음 단계를 수행합니다.

  1. 먼저 집계된 로그 항목을 저장할 Google Cloud 프로젝트에서 로그 버킷과 로그 싱크를 만듭니다.

  2. 다음으로 조직 수준에서 비 가로채기 집계 싱크를 만들어 로그 항목을 로그 버킷이 포함된 Google Cloud 프로젝트로 라우팅합니다.

  3. 그런 다음 새 로그 버킷의 로그 뷰에 대한 읽기 액세스 권한을 구성합니다.

  4. 마지막으로 로그 탐색기 페이지에서 로그 항목을 쿼리하고 봅니다.

시작하기 전에

다음을 확인합니다.

  • 집계 싱크를 구성하는 데 필요한 권한을 얻으려면 관리자에게 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

    • 프로젝트에 로그 버킷과 싱크를 만드는 경우: 로그 구성 작성자(roles/logging.configWriter) - 프로젝트
    • 집계 싱크를 만드는 경우: 로그 구성 작성자(roles/logging.configWriter) - 조직
    • 주 구성원에게 역할을 부여하려는 경우: 소유자(roles/owner) - 내 프로젝트

    역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  • VPC 서비스 제어를 사용하는 경우 인그레스 규칙을 서비스 경계에 추가해야 합니다. VPC 서비스 제어 제한사항에 대한 자세한 내용은 집계 싱크 및 VPC 서비스 제어 제한사항을 참조하세요.
  • In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

로그 버킷 만들기

로그 버킷은 다른 Google Cloud 프로젝트, 폴더 또는 조직에서 라우팅된 로그 항목을 저장합니다. 자세한 내용은 로그 버킷 구성을 참조하세요.

로그 항목을 합산하려는 Google Cloud 프로젝트에 로그 버킷을 만들려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. Cloud Shell 터미널에서 gcloud logging buckets create 명령어를 실행합니다.

    다음 명령어를 실행하기 전에 다음을 바꿉니다.

    • BUCKET_NAME: 로그 버킷의 이름
    • LOCATION: 로그 버킷의 위치 로그 버킷을 만든 후에는 위치를 변경할 수 없습니다.
    • PROJECT_ID: 로그 버킷을 만들 프로젝트의 식별자

    gcloud logging buckets create 명령어를 실행합니다.

     gcloud logging buckets create BUCKET_NAME \
       --location=LOCATION --project=PROJECT_ID
    
  3. 로그 버킷이 생성되었는지 확인합니다.

    gcloud logging buckets list --project=PROJECT_ID
    

    이 명령어 응답은 프로젝트의 로그 버킷 목록입니다.

  4. 로그 버킷에는 구성 가능한 보관 기간이 있습니다. 로그 버킷에서 로그 항목 보관 기간을 설정하려면 gcloud logging buckets update 명령어를 사용합니다. 예를 들어 다음 명령어는 로그 버킷에 저장된 로그 항목의 보관 기간을 365일로 연장합니다.

    gcloud logging buckets update BUCKET_NAME \
       --location=LOCATION --project=PROJECT_ID \
       --retention-days=365
    

    옵션에 대한 자세한 내용은 gcloud logging buckets update를 참조하세요.

프로젝트 수준 로그 싱크 만들기

싱크를 만들어 로그 항목을 로그 버킷으로 라우팅합니다. 싱크에는 포함 필터, 제외 필터, 대상이 포함됩니다. 이 튜토리얼에서는 포함 필터와 대상을 새 로그 버킷에 구성합니다. 싱크에는 제외 필터가 포함되지 않습니다. 싱크에 대한 자세한 내용은 지원되는 대상으로 로그 라우팅을 참조하세요.

로그 항목을 방금 만든 로그 버킷으로 라우팅하는 싱크를 만들려면 gcloud logging sinks create 명령어를 실행합니다.

다음 명령어를 실행하기 전에 다음을 바꿉니다.

  • PROJECT_LEVEL_SINK_NAME: 프로젝트 수준 로그 싱크의 이름입니다.
  • SINK_DESTINATION: 로그 항목이 라우팅되는 로그 버킷입니다. 로그 버킷의 목적지 경로 형식은 다음과 같습니다.

    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
    
  • PROJECT_ID: 로그 싱크를 만들 프로젝트의 식별자입니다. 이 옵션을 로그 버킷을 만든 프로젝트와 동일한 프로젝트로 설정합니다.

  • 다음 옵션을 포함합니다.

    • --log-filter: 이 옵션을 사용하여 싱크에 포함하려는 로그 항목과 일치하는 필터를 설정합니다. 이 튜토리얼에서는 모든 감사 로그 항목을 선택하도록 필터가 설정됩니다. 필터를 설정하지 않으면 Google Cloud 프로젝트의 모든 로그 항목이 대상으로 라우팅됩니다.
    • --description: 이 옵션을 사용하여 싱크의 목적이나 사용 사례를 설명합니다.

gcloud logging sinks create 명령어를 실행합니다.

gcloud logging sinks create PROJECT_LEVEL_SINK_NAME SINK_DESTINATION
--project=PROJECT_ID
--log-filter='logName:cloudaudit.googleapis.com' \
--description="Audit logs from my organization" \

집계 싱크 만들기

집계 싱크는 조직 또는 폴더에 포함된 리소스의 로그 항목을 결합하고 목적지로 라우팅합니다.

이 튜토리얼에서는 비 가로채기인 집계 싱크를 만듭니다. 즉, 집계 싱크에 의해 라우팅되는 모든 로그 항목은 로그 항목이 시작된 리소스의 싱크에 의해 라우팅됩니다. 예를 들어 프로젝트에서 시작되는 감사 로그는 집계 싱크와 해당 프로젝트의 싱크에 의해 라우팅됩니다. 따라서 로그 항목 복사본을 여러 개 저장할 수 있습니다.

가로채기 싱크를 만들 수 있습니다. 자세한 내용은 조직 및 폴더 수준 로그를 취합하여 지원되는 목적지로 라우팅을 참조하세요.

조직 수준의 싱크 설정

로그 항목을 프로젝트로 라우팅하는 비 가로채기 집계 싱크를 만들려면 다음 단계를 완료하세요.

  1. gcloud logging sinks create 명령어를 실행합니다.

    다음 명령어를 실행하기 전에 다음을 바꿉니다.

    • SINK_NAME: 로그 싱크의 이름 만든 후에는 싱크 이름을 변경할 수 없습니다.
    • PROJECT_ID: 로그 버킷을 저장하는 프로젝트의 식별자
    • ORGANIZATION_ID: 조직의 식별자

    gcloud logging sinks create 명령어를 실행합니다.

    gcloud logging sinks create SINK_NAME \
    logging.googleapis.com/projects/PROJECT_ID  \
      --log-filter='logName:cloudaudit.googleapis.com' \
      --description="Audit logs from my organization" \
      --organization=ORGANIZATION_ID \
      --include-children
    

    --include-children 옵션이 중요합니다. 이 옵션을 사용하면 조직 내 모든 Google Cloud 프로젝트와 폴더의 로그 항목이 라우팅됩니다. 자세한 내용은 조직 수준 로그를 취합하여 지원되는 목적지로 라우팅을 참조하세요.

  2. 싱크가 생성되었는지 확인합니다.

    gcloud logging sinks list --organization=ORGANIZATION_ID
    
  3. 서비스 계정의 이름을 가져옵니다.

    gcloud logging sinks describe SINK_NAME --organization=ORGANIZATION_ID
    

    결과는 다음과 유사합니다.

    writerIdentity: serviceAccount:o1234567890-ORGANIZATION_ID@gcp-sa-logging.iam.gserviceaccount.com
    
  4. serviceAccount 필드 값을 클립보드에 복사합니다.

싱크에 액세스 권한 부여

집계 싱크를 만든 후에는 로그 항목을 대상으로 설정한 프로젝트에 작성할 수 있는 권한을 싱크에 부여해야 합니다. Google Cloud 콘솔을 사용하거나 대상 권한 설정에 설명된 대로 Identity and Access Management(IAM) 정책을 수정하여 권한을 부여할 수 있습니다.

싱크에 로그 항목을 작성할 수 있는 권한을 부여하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

    IAM으로 이동합니다.

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

  2. 로그 버킷이 포함된 Google Cloud 프로젝트를 선택합니다.

  3. 액세스 권한 부여를 클릭하고 서비스 계정을 새 주 구성원으로 추가합니다. serviceAccount: 프리픽스를 포함하지 마세요.

  4. 역할 선택 메뉴에서 로그 작성자를 선택합니다.

  5. 저장을 클릭합니다.

싱크 확인에 도움이 되는 로그 항목 생성

집계 싱크가 올바르게 구성되었는지 확인하려면 다음을 시도해 보세요.

  1. 로그 버킷으로 라우팅되어야 하는 감사 로그 항목을 생성합니다.

    • 조직에 Google Cloud 프로젝트가 많은 경우 감사 로그 트래픽이 충분해 검증 목적으로 만들 필요가 없을 수 있습니다. 다음 단계로 이동합니다.

    • 그렇지 않으면 다른 프로젝트로 이동하고, Compute Engine VM 인스턴스를 만든 다음, 만든 인스턴스를 삭제합니다. 감사 로그는 VM이 생성, 시작, 삭제될 때 기록됩니다.

  2. 로그 탐색기 페이지에서 로그 보기 섹션의 절차에 따라 감사 로그를 확인합니다. _AllLogs 뷰를 선택해야 합니다.

로그 버킷의 로그 뷰에 대한 읽기 액세스 권한 구성

로그 버킷을 만들면 Cloud Logging에서 자동으로 _AllLogs라는 로그 뷰를 만듭니다. 이 뷰에는 로그 버킷에 저장된 모든 로그 항목이 포함됩니다.

주 구성원이 특정 로그 항목에만 액세스할 수 있도록 제한하려면 로그 뷰를 만든 후 다음 중 하나를 수행합니다.

  • 로그 뷰에 대한 권한 부여를 제한하는 IAM 조건과 함께 roles/logging.viewAccessor 역할을 부여합니다.

  • 로그 뷰와 연결된 IAM 정책에서 주 구성원에게 액세스 권한을 부여합니다. 로그 뷰를 대량으로 만들 때 이 방법을 사용하는 것이 좋습니다.

이 두 가지 방법에 대한 자세한 내용은 로그 뷰에 대한 액세스 제어를 참조하세요.

다음 단계에서는 _AllLogs라는 뷰에 대한 권한 부여를 제한하는 IAM 조건과 함께 roles/logging.viewAccessor 역할을 주 구성원에게 부여합니다.

  1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

    IAM으로 이동합니다.

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

  2. 로그 버킷이 포함된 Google Cloud 프로젝트를 선택합니다.

  3. 추가를 클릭합니다.

  4. 새 주 구성원 필드에 주 구성원을 추가합니다.

  5. 역할 선택 메뉴에서 로그 뷰 접근자를 선택합니다.

    이 역할에 조건을 추가하지 않으면 주 구성원이 Google Cloud 프로젝트의 모든 사용자 정의 로그 버킷에 대한 모든 로그 뷰에 액세스할 수 있습니다

  6. 바인딩에 IAM 조건을 추가합니다.

    1. 조건 추가를 클릭하고 제목과 설명을 입력합니다.
    2. 조건 유형 메뉴에서 리소스로 스크롤한 다음 이름을 선택합니다.
    3. 연산자 메뉴에서 다음으로 끝남을 선택합니다.
    4. 필드에 로그 뷰의 전체 이름을 입력합니다.

      locations/LOCATION/buckets/BUCKET_NAME/views/_AllLogs
      
    5. 저장을 클릭하여 조건을 저장합니다.

  7. 저장을 클릭하여 바인딩을 저장합니다.

로그 탐색기 페이지에서 로그 항목 보기

로그 버킷의 로그 항목을 보려면 다음을 수행합니다.

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

    로그 탐색기로 이동

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

  2. 범위 상세검색을 선택합니다.

  3. 범위 상세검색 패널에서 로그 뷰를 선택합니다.

  4. 로그 항목을 확인할 로그 뷰를 선택합니다. 예를 들어 모든 로그 항목을 보려면 _AllLogs라는 뷰를 선택합니다.

  5. 적용을 클릭합니다.

    로그 탐색기가 새로고침되어 로그 버킷의 로그 항목이 표시됩니다. 로그 탐색기 사용 방법에 대한 자세한 내용은 로그 탐색기 사용을 참조하세요.