비 가로채기 집계 싱크를 사용하면 조직 Google Cloud 전체의 로그 항목을 중앙 위치로 라우팅하는 동시에 하위 리소스가 해당 로그의 자체 사본을 라우팅하고 저장할 수 있습니다. 이 튜토리얼에서는 조직의 감사 로그를 Google Cloud 프로젝트로 라우팅하는 조직 수준의 비 가로채기 집계 싱크를 만듭니다. 여기서 프로젝트 수준 싱크는 감사 로그를 중앙 로그 버킷으로 라우팅합니다. 그런 다음 해당 버킷의 로그 뷰에 대한 읽기 액세스 권한을 구성하고 로그 탐색기에서 집계된 감사 로그를 쿼리합니다.
하위 리소스에서 쿼리하거나 라우팅할 수 있는 로그 항목을 제어하려면 집계 싱크를 가로채기로 구성할 수도 있습니다. 자세한 내용은 집계 싱크 개요를 참조하세요. 새 조직을 설정하는 경우 Google Cloud 설정 프로세스의 일부로 중앙 집중식 로그 스토리지를 구성할 수도 있습니다.
시작하기 전에
다음을 확인합니다.
-
로그 항목을 프로젝트로 라우팅하는 조직 수준 집계 싱크를 만들어 스토리지를 중앙 집중화하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
집계 싱크를 만드는 경우:
조직의 로그 구성 작성자 (
roles/logging.configWriter) -
서비스 계정 IAM 역할을 부여하고 로그 버킷을 만드는 경우:
소유자 (
roles/owner) 프로젝트의
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
집계 싱크를 만드는 경우:
조직의 로그 구성 작성자 (
-
콘솔 Google Cloud 에서 Cloud Shell을 활성화합니다.
콘솔 Google Cloud 하단에 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
로그 버킷 만들기
로그 버킷은 다른 Google Cloud 프로젝트, 폴더 또는 조직에서 라우팅된 로그 항목을 저장합니다. 자세한 내용은 로그 버킷 구성을 참조하세요.
로그 항목을 합산하려는 Google Cloud 프로젝트에 로그 버킷을 만들려면 다음 단계를 완료합니다.
셸을 엽니다.
예를 들어 Cloud Shell을 사용하려면 다음을 수행합니다.
-
콘솔 Google Cloud 로 이동합니다.
- 툴바에서 terminal 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로그 버킷이 생성되었는지 확인합니다.
gcloud logging buckets list --project=PROJECT_ID이 명령어 응답은 프로젝트의 로그 버킷 목록입니다.
로그 버킷에는 구성 가능한 보관 기간이 있습니다. 로그 버킷에서 로그 항목 보관 기간을 설정하려면
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)를 사용해야 합니다. 리전 엔드포인트 (REP)는 지원되지 않습니다. 로그 버킷의 목적지 경로 형식은 다음과 같습니다.logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAMEPROJECT_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"
집계 싱크 만들기
집계 싱크는 조직 또는 폴더에 포함된 리소스의 로그 항목을 결합하고 목적지로 라우팅합니다.
이 튜토리얼에서는 비 가로채기인 집계 싱크를 만듭니다. 즉, 집계된 싱크에서 라우팅하는 모든 로그 항목은 로그 항목이 발생한 리소스의 싱크에서도 라우팅됩니다. 예를 들어 프로젝트에서 발생한 감사 로그는 집계된 싱크와 해당 프로젝트의 싱크에 의해 라우팅됩니다. 따라서 로그 항목의 여러 사본을 저장할 수 있습니다.
가로채기 싱크를 만들 수도 있습니다. 자세한 내용은 집계 싱크 개요를 참조하세요.
조직 수준의 싱크 설정
로그 항목을 프로젝트로 라우팅하는 비 가로채기 집계 싱크를 만들려면 다음 단계를 완료하세요.
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 프로젝트와 폴더의 로그 항목이 라우팅됩니다. 자세한 내용은 조직 수준 및 폴더 수준 로그를 취합하여 지원되는 대상으로 라우팅을 참조하세요.싱크가 생성되었는지 확인합니다.
gcloud logging sinks list --organization=ORGANIZATION_ID서비스 계정의 이름을 가져옵니다.
gcloud logging sinks describe SINK_NAME --organization=ORGANIZATION_ID결과는 다음과 유사합니다.
writerIdentity: serviceAccount:o1234567890-ORGANIZATION_ID@gcp-sa-logging.iam.gserviceaccount.comserviceAccount필드 값을 클립보드에 복사합니다.
싱크에 액세스 권한 부여
집계 싱크를 만든 후에는 로그 항목을 대상으로 설정한 프로젝트에 작성할 수 있는 권한을 싱크에 부여해야 합니다. Google Cloud 콘솔을 사용하거나 대상 권한 설정에 설명된 대로 Identity and Access Management (IAM) 정책을 수정하여 권한을 부여할 수 있습니다.
대상 Google Cloud 프로젝트가 VPC 서비스 제어 서비스 경계로 보호되는 경우 싱크의 서비스 계정에서 액세스할 수 있도록 허용하는 인그레스 규칙을 대상 경계에 추가해야 합니다. 비집계 싱크에는 인그레스 규칙을 구성할 필요가 없습니다. 자세한 내용은 조직 및 폴더 수준 로그를 취합하여 지원되는 대상으로 라우팅: 제한사항을 참조하세요.
싱크에 로그 항목을 작성할 수 있는 권한을 부여하려면 다음을 수행합니다.
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 IAM 및 관리자인 결과를 선택합니다.
로그 버킷이 포함된 Google Cloud 프로젝트를 선택합니다.
액세스 권한 부여 를 클릭하고 서비스 계정을 새 주 구성원으로 추가합니다.
serviceAccount:프리픽스는 포함하지 마세요.역할 선택 메뉴에서 로그 작성자 를 선택합니다.
저장을 클릭합니다.
싱크 확인에 도움이 되는 로그 항목 생성
집계 싱크가 올바르게 구성되었는지 확인하려면 다음을 시도해 보세요.
로그 버킷으로 라우팅되어야 하는 감사 로그 항목을 생성합니다.
조직에프로젝트 Google Cloud 가 많은 경우 감사 로그 트래픽이 충분해 검증 목적으로 만들 필요가 없을 수 있습니다. 다음 단계로 이동합니다.
그러지 않으면 다른 프로젝트로 이동하여 Compute Engine VM 인스턴스를 만든 후 만든 인스턴스를 삭제합니다. 감사 로그는 VM이 생성, 시작, 삭제될 때 작성됩니다.
로그 탐색기 페이지에서 로그 항목 보기의 단계에 따라 감사 로그를 봅니다.
_AllLogs뷰를 선택해야 합니다.
로그 버킷의 로그 뷰에 대한 읽기 액세스 권한 구성
로그 버킷을 만들면 Cloud Logging에서 자동으로 _AllLogs라는 로그 뷰를 만듭니다.
이 뷰에는 로그 버킷에 저장된 모든 로그 항목이 포함됩니다.
주 구성원이 특정 로그 항목에만 액세스할 수 있도록 제한하려면 로그 뷰를 만든 후 다음 중 하나를 수행합니다.
로그 뷰에 대한 권한 부여를 제한하는 IAM 조건과 함께 로그 뷰 접근자 역할 (
roles/logging.viewAccessor) 을 부여합니다.로그 뷰와 연결된 IAM 정책에서 주 구성원에게 액세스 권한을 부여합니다. 로그 뷰를 대량으로 만들 때 이 방법을 사용하는 것이 좋습니다.
이 두 가지 방법에 대한 자세한 내용은 로그 뷰에 대한 액세스 제어를 참조하세요.
다음 단계에서는 _AllLogs라는 뷰에 대한 권한 부여를 제한하는 IAM 조건과 함께 로그 뷰 접근자 역할(roles/logging.viewAccessor)을 주 구성원에게 부여합니다.
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 IAM 및 관리자인 결과를 선택합니다.
로그 버킷이 포함된 Google Cloud 프로젝트를 선택합니다.
추가를 클릭합니다.
새 주 구성원 필드에 주 구성원을 추가합니다.
역할 선택 메뉴에서 로그 뷰 접근자를 선택합니다.
이 역할에 조건을 추가하지 않으면 주 구성원이 Google Cloud 프로젝트의 모든 사용자 정의 로그 버킷에 대한 모든 로그 뷰에 액세스할 수 있습니다.
바인딩에 IAM 조건을 추가합니다.
- 조건 추가를 클릭한 다음 제목과 설명을 입력합니다.
- 조건 유형 메뉴에서 리소스로 이동한 후 이름을 선택합니다.
- 연산자 메뉴에서 다음으로 끝남 을 선택합니다.
값 필드에 로그 뷰의 전체 이름을 입력합니다.
locations/LOCATION/buckets/BUCKET_NAME/views/_AllLogs저장을 클릭하여 조건을 저장합니다.
저장을 클릭하여 바인딩을 저장합니다.
로그 탐색기 페이지에서 로그 항목 보기
로그 버킷의 로그 항목을 보려면 다음을 수행합니다.
-
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
범위 미세 조정을 선택합니다.
범위 미세 조정 패널에서 로그 뷰를 선택합니다.
로그 항목을 확인할 로그 뷰를 선택합니다. 예를 들어 모든 로그 항목을 보려면
_AllLogs라는 뷰를 선택합니다.적용 을 클릭합니다.
로그 탐색기 페이지가 새로고침되어 로그 버킷의 로그 항목이 표시됩니다. 로그 탐색기 사용에 대한 자세한 내용은 로그 탐색기 사용을 참조하세요.