ストレージ転送ジョブを使用して、Google Distributed Cloud(GDC)エアギャップ アプライアンスからリモートの S3 互換ストレージ バケットに監査ログと運用ログをエクスポートできます。これらのログをオフロードすると、長期的なコンプライアンス保持要件を満たし、外部セキュリティ監査を実施できます。
IAM ロールを取得する
ログのエクスポートに必要な権限を取得するには、組織の IAM 管理者に、インフラストラクチャ クラスタの obs-system Namespace のログ転送管理者(logs-transfer-admin)ロールと、管理プレーンの obs-system Namespace のログバケット閲覧者(logs-bucket-viewer))ロールを付与するよう依頼します。
これらのロールの詳細については、IAM 権限を準備するをご覧ください。
ソースバケットのエンドポイントと完全修飾名を取得する
KUBECONFIGを Org Management API に設定します。export KUBECONFIG=MANAGEMENT_API_KUBECONFIG_PATHソースバケットのエンドポイントを取得します。
監査ログの場合:
kubectl get bucket audit-logs-loki-all -n obs-system -o json | jq '.status.endpoint'オペレーション ログの場合:
kubectl get bucket ops-logs-loki-all -n obs-system -o json | jq '.status.endpoint'
ソースバケットの完全修飾名を取得します。
監査ログの場合:
kubectl get bucket audit-logs-loki-all -n obs-system -o json | jq '.status.fullyQualifiedName'オペレーション ログの場合:
kubectl get bucket ops-logs-loki-all -n obs-system -o json | jq '.status.fullyQualifiedName'
ソースバケットのアクセス認証情報を取得する
KUBECONFIG を Org Infra クラスタに設定します。
export KUBECONFIG=INFRA_CLUSTER_KUBECONFIG_PATHソースバケットのアクセスキー ID を取得します。
監査ログの場合:
kubectl get secret audit-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."access-key-id"' | base64 -diオペレーション ログの場合:
kubectl get secret ops-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."access-key-id"' | base64 -di
ソースバケットのシークレット アクセスキーを取得します。
監査ログの場合:
kubectl get secret audit-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."secret-access-key"' | base64 -diオペレーション ログの場合:
kubectl get secret ops-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."secret-access-key"' | base64 -di
転送ログ
KUBECONFIGを Org Infra クラスタに設定します。export KUBECONFIG=INFRA_CLUSTER_KUBECONFIG_PATHソースバケットのアクセス認証情報を使用して Secret を作成します。
kubectl create secret generic -n obs-system SRC_BUCKET_SECRET_NAME --from-literal=access-key-id=SRC_BUCKET_ACCESS_KEY_ID --from-literal=secret-access-key=SRC_BUCKET_SECRET_ACCESS_KEY宛先バケットのアクセス認証情報を使用して Secret を作成します。
kubectl create secret generic -n obs-system DST_BUCKET_SECRET_NAME --from-literal=access-key-id=DST_BUCKET_ACCESS_KEY_ID --from-literal=secret-access-key=DST_BUCKET_SECRET_ACCESS_KEY宛先バケットのエンドポイントを認証するための認証局を含むシークレットを作成します。
kubectl create secret generic -n obs-system DST_BUCKET_CA_SECRET_NAME --from-file="ca.crt"=CA_FILE続行するには、リモート バケットから
CA_FILE、DST_BUCKET_ACCESS_KEY_ID、DST_BUCKET_SECRET_ACCESS_KEYを取得します。データ転送ツールの動作は、転送エンドポイントの具体的な場所によって異なります。ログ転送ジョブを作成します。
apiVersion: batch/v1 kind: Job metadata: name: JOB_NAME namespace: obs-system spec: template: spec: serviceAccountName: logs-transfer-sa containers: - name: storage-transfer-pod image: gcr.io/private-cloud-staging/storage-transfer:latest imagePullPolicy: Always command: - /storage-transfer args: - '--src_endpoint=SRC_BUCKET_ENDPOINT' - '--dst_endpoint=DST_BUCKET_ENDPOINT' - '--src_path=SRC_BUCKET_FULLY_QUALIFIED_NAME' - '--dst_path=DST_BUCKET_FULLY_QUALIFIED_NAME' - '--src_credentials=obs-system/SRC_BUCKET_SECRET_NAME' - '--dst_credentials=obs-system/DST_BUCKET_SECRET_NAME' - '--dst_ca_certificate_reference=obs-system/DST_BUCKET_CA_SECRET_NAME' - '--src_ca_certificate_reference=obs-system/trust-store-root-ext' - '--src_type=s3' - '--dst_type=s3' - '--bandwidth_limit=1G' restartPolicy: OnFailure. ---転送ジョブが完了するまで待ちます。
kubectl wait --for=condition=complete job/JOB_NAME -n obs-system