GKEのAudit LogsはCloud Pub/Subを通じて利用可能です。k8saudit-gke Falcoプラグインを使用してください。
始める前に
-
Falcoは
k8saudit-gkeとjsonプラグインで構築されています。 -
Pub/Subアクセススコープが有効なGKEクラスター。
-
クラスターでワークロードアイデンティティが有効になっています。
注意GKEは作成後にノードグループのアクセススコープを変更することをサポートしていません。必要に応じて、Pub/Subアクセスを持つ新しいノードグループを作成してください。
|
手順
- GCPリソースを作成します。
# Variables PROJECT_ID="${your gcp project id}" TOPIC="${your pub/sub topic}" # example: trendmicro-container-security-audit-log-topic SUBSCRIPTION="${your pub/sub subscription}" # example: trendmicro-container-security-audit-log-ns4rhmfdse CLUSTER_NAME="${your gke cluster name}" SINK_NAME="${your sink name}" # example: trendmicro-container-security-audit-log-sink SERVICE_ACCOUNT="${your service account name}" # example: trendmicro-audit-sa # Create Pub/Sub topic and subscription gcloud pubsub topics create "$TOPIC" --project="$PROJECT_ID" gcloud pubsub subscriptions create "$SUBSCRIPTION" --topic="$TOPIC" --project="$PROJECT_ID" # Create service account gcloud iam service-accounts create "$SERVICE_ACCOUNT" \ --project="$PROJECT_ID" \ --display-name="Trendmicro Container Security Audit Log Service Account" # Grant permissions gcloud projects add-iam-policy-binding "$PROJECT_ID" \ --member="serviceAccount:${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/pubsub.subscriber" # Bind Workload Identity gcloud iam service-accounts add-iam-policy-binding \ "${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ --project="$PROJECT_ID" \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:${PROJECT_ID}.svc.id.goog[trendmicro-system/audit-log-collector-trendmicro-container-security]" # Create log sink gcloud logging sinks create "$SINK_NAME" \ "pubsub.googleapis.com/projects/$PROJECT_ID/topics/$TOPIC" \ --log-filter="resource.type=\"k8s_cluster\" AND protoPayload.@type=\"type.googleapis.com/google.cloud.audit.AuditLog\" AND resource.labels.cluster_name=\"$CLUSTER_NAME\"" \ --project="$PROJECT_ID" # Grant sink writer permissions WRITER_IDENTITY=$(gcloud logging sinks describe "$SINK_NAME" --project="$PROJECT_ID" --format="value(writerIdentity)") gcloud pubsub topics add-iam-policy-binding "$TOPIC" \ --project="$PROJECT_ID" \ --member="$WRITER_IDENTITY" \ --role="roles/pubsub.publisher" overrides.yamlを更新して監査ログ収集を有効にします。visionOne: bootstrapToken: ... endpoint: ... exclusion: namespaces: [kube-system] ... auditLogCollection: enabled: true provider: gke gke: gcpProjectId: "${gcp project id from step 1}" pubSubSubscription: "${pub sub subscription name from step 1}" serviceAccount: "${service account name from step 1}"
