无论您是在本地还是在云中,您都希望确保以同构的方式设置工具和流程。无论在何处访问基础结构,您都希望确保用于与各种基础结构进行交互的工具与其他区域相似。
考虑到这一点,在部署您自己的 MinIO 对象存储基础架构时,深入了解您的存储基础架构至关重要。当存储基础结构中发生任何意外活动时,您需要以简洁的方式快速显示这些日志。本教程将全面概述如何在 ElasticSearch 中显示 MinIO 审计日志,以便对其进行搜索。
设置配置
在 Kubernetes 集群上部署 MinIO operator
kubectl apply -k github.com/minio/operator/
我们需要在启用 ElasticSearch WebHook 的情况下部署租户
以 base64 格式对您的用户和密码进行编码
# Encode your user and password in base64
$ echo -n 'user:password' | base64
dXNlcjpwYXNzd29yZA==
创建密钥所在的命名空间
kubectl create namespace tenant-lite
使用之前生成的 base64 用户/密码创建密钥。创建一个名为的文件 secret.yaml 并将内容保存在其中。
apiVersion: v1
kind: Secret
metadata:
name: mysecrettoken
type: Opaque
stringData:
token: "Basic dXNlcjpwYXNzd29yZA=="
按如下方式应用密钥
k apply -f secret.yaml
让我们配置 Webhook,以便它可以从密钥中获取凭据
apiVersion: minio.min.io/v2
kind: Tenant
metadata:
name: storage
namespace: minio-tenant
spec:
env:
- name: MINIO_AUDIT_WEBHOOK_ENABLE_TESTING
value: "on"
- name: MINIO_AUDIT_WEBHOOK_ENDPOINT_TESTING
value: "http://<HOST>:9200/ajtest/ajtest2"
- name: MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_TESTING
valueFrom:
secretKeyRef:
name: mysecrettoken
key: token
optional: false # value coming from secret
- name: MINIO_ROOT_USER
value: minio
- name: MINIO_ROOT_PASSWORD
value: minio123
使用 Kustomize 安装租户
kubectl apply -k github.com/minio/operator/examples/kustomization/tenant-lite
让我们卷曲索引以查看输出
curl -u <USER>:<PASSWORD> -X GET "<HOST>:9200/ajtest/_search?pretty" -H 'Content-Type: application/json'
您应该会看到类似于下面的审核日志
[TRUNCATED]
"remotehost" : "10.244.4.2",
"requestID" : "17329E78E6E41E8E",
"userAgent" : "MinIO (linux; arm64) madmin-go/0.0.1",
"requestQuery" : {
"key" : "audit_webhook:storage-lite-log-search-api"
},
"requestHeader" : {
"Authorization" : "AWS4-HMAC-SHA256 Credential=minio/20221220//s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2ae3c3d8693619c4407723146091ae3b884827bc6dc8b9d12c9380f4a50db3b7",
"User-Agent" : "MinIO (linux; arm64) madmin-go/0.0.1",
"X-Amz-Content-Sha256" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"X-Amz-Date" : "20221220T214413Z"
},
"responseHeader" : {
"Accept-Ranges" : "bytes",
"Content-Length" : "242",
"Content-Security-Policy" : "block-all-mixed-content",
"Content-Type" : "application/json",
"Server" : "MinIO",
"Strict-Transport-Security" : "max-age=31536000; includeSubDomains",
"Vary" : "Origin,Accept-Encoding",
"X-Amz-Request-Id" : "17329E78E6E41E8E",
"X-Content-Type-Options" : "nosniff",
"X-Xss-Protection" : "1; mode=block"
}
}
},
[TRUNCATED]
{
"_index" : "ajtest",
"_type" : "ajtest2",
"_id" : "ADB-MYUBuuSsBbj2iI88",
"_score" : 1.0,
"_source" : { }
}
]
}
}
输出会很长,所以我们截断了输出,使其清晰易读。
最后的思考
如您所见,快速注意这些审核日志非常重要。事实上,您可以通过监控系统或直接通过 ElasticSearch 设置警报,以根据某些日志向您发送警报,以便您可以掌握 MinIO 存储基础设施。
更重要的是,您需要将云视为一种运营模式,而不是一个位置。这意味着,无论您在哪里部署工具和基础设施,无论是混合云、私有云还是本地部署,您都希望确保将 MinIO 审计日志发送到日志处理器,而不必是 ElasticSearch。这样,无论您将 MinIO 部署在何处,您都可以确保它的每一步都受到监控。