활동 로그를 사용하여 Compute Engine 관리자 활동 및 시스템 이벤트를 보는 경우 이 가이드를 읽고 감사 로그를 대신 사용하여 유사한 로그 항목을 찾는 방법을 알아보세요.
Compute Engine 활동 로그는 지원 중단되었습니다. 로그 이름을 기준으로 활동 로그 항목을 식별할 수 있습니다.
logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Compute Engine 감사 로그에는 활동 로그를 통해 제공되는 것과 동일한 정보가 포함됩니다. 그러나 감사 로그는 활동 로그와는 다른 방식으로 정보를 제공합니다. 따라서 쿼리를 조정해야 합니다.
활동 로그에서 감사 로그로 이전하는 방법
활동 로그 대신 감사 로그를 사용하려면 쿼리를 조정하세요. 다음 단계를 따르세요.
이전 쿼리를 찾습니다. 예를 들어 로그 탐색기에서 저장된 검색 결과에 쿼리를 저장했거나 API 또는 SDK를 사용하여 스크립트를 만들었을 수 있습니다. 리소스를 모니터링하는 방법에 대한 자세한 내용은 로깅 문서를 참조하세요.
활동 로그 필드를 적절한 감사 로그 필드로 바꿉니다. 필드가 서로 어떻게 매핑되는지 보려면 표를 참조하세요.
예를 들어 기존 활동 로그 쿼리가
jsonPayload.resource.name
이라는 필드를 찾으면 새 감사 로그 쿼리가protoPayload.resourceName
을 대신 찾아야 합니다.새 감사 로그 쿼리를 저장하고 사용합니다. 예를 들어 Cloud Logging에서 저장된 검색을 만들거나 스크립트를 업데이트합니다.
예시
다음은 변환된 쿼리의 예시입니다.
특정 리소스와 관련된 활동 쿼리
쿼리 예시 | |
---|---|
기존 활동 로그 | gcloud logging read jsonPayload.resource.name="VM_NAME"
|
감사 로그 | 다음 옵션 중 하나를 사용합니다.
옵션 1을 사용하면 'has'( |
최근 관리자 활동 로그 항목 쿼리
쿼리 예시 | |
---|---|
기존 활동 로그 | gcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
|
감사 로그 | gcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" |
최근 인스턴스 생성 로그 항목 쿼리
쿼리 예시 | |
---|---|
기존 활동 로그 | gcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"' |
감사 로그 | gcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"' |
모든 인스턴스 만들기 작업 시작 쿼리
쿼리 예시 | |
---|---|
기존 활동 로그 | gcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"' |
감사 로그 | gcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"' |
작업 완료 쿼리
쿼리 예시 | |
---|---|
기존 활동 로그 | gcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE" |
감사 로그 | gcloud logging read operation.last="true" |
활동 로그와 감사 로그의 차이점
이 섹션에서 감사 로그가 활동 로그와 어떻게 다르게 구성되어 있는지 알아보세요. 이전 활동 로그 쿼리를 감사 로그 쿼리로 변환할 때 이러한 차이점을 염두에 두시기 바랍니다. 예를 들어 쿼리에서 모든 기존 활동 로그 필드 이름을 해당하는 감사 로그 필드 이름으로 바꿉니다.
감사 로깅과 활동 로깅 모두 로그 항목 객체를 반환하지만 다음과 같은 차이점이 있습니다.
- 다른 필드 이름 사용 자세한 내용은 필드 이름 매핑 표를 참조하세요.
- 다른 필드 값 사용:
다음은 로그 이름과 페이로드의 차이를 보여주는 예시입니다.
로그 항목 예시 | |
---|---|
기존 활동 로그 | { insertId: "1x3bbhjg2wwvz1x" jsonPayload: { event_subtype: "compute.instances.stop" ... resource: { id: "12345678900123456789" name: "my-instance-name" type: "instance" zone: "us-east1-b" } ... } labels: {…} logName: "projects/my-project/logs/compute.googleapis.com%2Factivity_log" receiveTimestamp: "2019-08-26T12:22:44.602794616Z" ... } |
감사 로그 | { insertId: "-w6o499e22fwk" logName: "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity" protoPayload: { ... methodName: "beta.compute.instances.stop" ... resourceName: "projects/my-project/zones/us-east1-b/instances/my-instance-name" } receiveTimestamp: "2019-08-26T12:22:46.881198276Z" ... } |
활동 로그에서 감사 로그로 필드 매핑
다음 표를 사용하여 활동 로그 필드를 쿼리의 해당 감사 로그 필드에 매핑합니다.
필드
다음 표를 사용하여 업데이트된 쿼리에서 기존 활동 로그 필드를 감사 로그 필드로 바꿉니다.
예를 들어 기존 활동 로그 쿼리에 jsonPayload.resource.type
을 기준으로 한 필터가 포함되었다면 새 감사 로그 쿼리에서는 그 대신 resource.type
을 기준으로 필터링해야 합니다.
기존 활동 로그 필드 | 감사 로그 필드 |
---|---|
insertId |
insertId |
jsonPayload.actor.user |
protoPayload.authenticationInfo.principalEmail |
jsonPayload.event_subtype |
protoPayload.methodName |
jsonPayload.event_timestamp_us |
timestamp |
jsonPayload.event_type="GCE_API_CALL" |
operation.first="true" |
jsonPayload.event_type="GCE_OPERATION_DONE" |
operation.last="true" |
jsonPayload.request |
protoPayload.request |
jsonPayload.operation |
operation |
jsonPayload.resource.id |
resource.labels.instance_id |
jsonPayload.resource.name |
protoPayload.resourceName |
jsonPayload.resource.type |
resource.type |
jsonPayload.resource.zone |
resource.labels.zone |
jsonPayload.trace_id |
operation.id |
jsonPayload.user_agent |
protoPayload.requestMetadata.callerSuppliedUserAgent |
labels.compute.googleapis.com/resource_id |
resource.labels.[RESOURCE_TYPE]_id |
labels.compute.googleapis.com/resource_name |
protoPayload.resourceName |
labels.compute.googleapis.com/resource_type |
resource.type |
labels.compute.googleapis.com/resource_zone |
다음 중 하나:
|
logName |
logName |
receiveTimestamp |
receiveTimestamp |
resource.labels |
resource.labels |
severity |
severity |
timestamp |
timestamp |
필드 값
다음 표를 사용하여 기존 활동 로그 필드 값을 감사 로그 필드 값에 매핑합니다. 감사 로그는 활동 로그와 비교하여 여러 로그 이름 값과 다른 페이로드 값을 가집니다. 감사 로그 항목은 정규화된 리소스 이름과 버전이 지정된 메서드 이름도 반환합니다.
로그 이름
감사 로그 항목을 찾으려면 cloudaudit.googleapis.com
이 포함된 logName
을 찾습니다.
로그 이름 | 로그 내용 | |
---|---|---|
기존 활동 로그 | projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log | 관리자 활동 및 시스템 이벤트 |
감사 로그 | projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity | 관리자 활동 |
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event | 시스템 이벤트 | |
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access | 데이터 액세스 |
페이로드
각 감사 로그 항목에서 jsonPayload
대신 protoPayload
를 찾습니다.
페이로드 유형 | 페이로드 예시 | |
---|---|---|
기존 활동 로그 | jsonPayload | jsonPayload: { actor: {…} event_subtype: "compute.instances.start" event_timestamp_us: "1566404493487248" event_type: "GCE_API_CALL" ip_address: "" operation: {…} request: {…} resource: {…} trace_id: "operation-1566404491560-590a2f74b4705-a1ae0686-d896d772" user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36" version: "1.2" } |
감사 로그 | protoPayload | protoPayload: { @type: "type.googleapis.com/google.cloud.audit.AuditLog" authenticationInfo: {…} methodName: "v1.compute.instances.start" request: {…} requestMetadata: {…} resourceName: "projects/my-project/zones/us-central1-a/instances/alert" serviceName: "compute.googleapis.com" } |
이러한 페이로드 간의 관계와 기존 활동 로그 필드를 감사 로그 필드에 매핑하는 방법을 알아보려면 로그 항목 필드 매핑을 읽어보세요.
리소스 이름
감사 로그에서 protoPayload.resourceName
필드의 API 리소스 이름은 다음과 같이 정규화됩니다.
resourceName: "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
부분 이름을 계속 사용할 수 있지만 'equals' 연산자 대신 'has' 연산자(:
)를 사용하도록 쿼리를 수정해야 합니다.
감사 로그 쿼리에서 다음 옵션 중 하나를 사용하여 특정 리소스에 필터를 적용합니다.
gcloud logging read protoPayload.resourceName:"VM_NAME"
gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
메서드 이름
감사 로그의 protoPayload.methodName
필드에서 API 메서드 이름에는 버전 프리픽스가 사용됩니다(예: v1.compute.instances.delete
).
필드 | 값 | 쿼리 예시 | |
---|---|---|---|
기존 활동 로그 | jsonPayload.event_subtype | RESOURCE.METHOD | jsonPayload.event_subtype=compute.instances.delete |
감사 로그 | protoPayload.methodName | API_VERSION.RESOURCE.METHOD | protoPayload.methodName=v1.compute.instances.delete 또는 protoPayload.methodName=beta.compute.instances.delete 또는 protoPayload.methodName:compute.instances.delete |
감사 로그 쿼리에서 버전이 지정되지 않은 메서드 이름을 계속 사용할 수 있지만 'equals' 연산자(=
) 대신 'has' 연산자(:
)를 사용하도록 쿼리를 수정해야 합니다. 예를 들어 protoPayload.methodName:compute.instances.delete
는 버전에 관계없이 모든 인스턴스 삭제 API 호출을 반환합니다. 연산자에 대한 자세한 내용은 비교를 참조하세요.
다음 단계
- 로깅 도구 사용에 대한 퀵스타트를 읽어보세요.
- 로그 항목 보기에 대해 자세히 알아보기
- 고급 로깅 필터로 로그를 보는 방법 알아보기
- Compute Engine Cloud 감사 로그 자세히 알아보기