조직의 로그 집계 및 저장

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

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

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

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

  1. 먼저 집계된 로그를 저장하려는 Google Cloud 프로젝트에 로그 버킷과 로그 싱크를 만듭니다.

  2. 다음으로 조직 수준에서 비 가로채기 집계 싱크를 만들어 로그를 Google Cloud 프로젝트로 라우팅합니다.

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

  4. 마지막으로 로그 탐색기 페이지에서 로그를 쿼리하고 확인합니다.

시작하기 전에

다음을 확인합니다.

  • 주 구성원 역할을 부여하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트의 소유자(roles/owner) IAM 역할을 부여해 달라고 요청하세요.

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

로그 버킷 만들기

로그 버킷은 다른 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. (선택사항) 버킷에 있는 로그의 보관 기간을 설정합니다. 이 예시에서는 버킷에 저장된 로그 보관을 365일로 확장합니다.

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

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

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

방금 만든 로그 버킷으로 로그 항목을 라우팅하는 싱크를 만들려면 다음을 바꾸고 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 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. 액세스 권한 부여를 클릭합니다.

  4. 새 주 구성원 필드에 serviceAccount: 프리픽스 없이 서비스 계정을 추가합니다.

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

  6. 저장을 클릭합니다.

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

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

  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 및 관리자인 결과를 선택합니다.

    로그 집계에 사용할 Google Cloud 프로젝트를 선택했는지 확인합니다.

  2. 추가를 클릭합니다.

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

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

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

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

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

  6. 저장을 클릭하여 결합을 저장합니다.

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

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

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

    로그 탐색기로 이동

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

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

  3. 범위 상세검색 패널에서 스토리지별 범위를 선택합니다.

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

  5. 적용을 클릭합니다.

    로그 탐색기가 새로고침되어 로그 버킷의 로그가 표시됩니다.

    로그 탐색기 사용에 대한 자세한 내용은 로그 탐색기 사용을 참조하세요.