HashiCorp Vault 的来源配置
与 HashiCorp Vault 集成
HashiCorp Vault 集成使用 Amazon S3 和 Amazon SQS 来将日志数据摄取到 CloudWatch 管线中。Vault 产生两种日志类型:审计日志(所有 API 请求和响应的详细 JSON 记录)和操作日志(服务器运行状况和性能)。Fluent Bit 从 Vault 主机收集这两种日志类型,并将其传送到 Amazon S3 存储桶。当新的日志对象到达时,Amazon SQS 通知会提醒管线。
先决条件
有权创建 Amazon S3 存储桶、Amazon SQS 队列和 IAM 角色的 Amazon Web Services 账户
具有管理访问权限的 HashiCorp Vault 服务器(自托管)
安装了 Fluent Bit 的 Linux 主机(可以是与 Vault 相同的主机)
Vault 主机与 Amazon 之间的网络连接
日志转发设置
可以使用 Vault 文件审计设备和 Fluent Bit 将 HashiCorp Vault 审计日志转发到 Amazon S3。Vault 支持三种审计设备类型:文件、套接字和系统日志。我们推荐使用文件审计设备以获得最高可靠性。
Amazon S3 与 Amazon SQS 设置说明
请完成下面的步骤,为 HashiCorp Vault 日志摄取配置 Amazon S3 和 Amazon SQS 基础设施。
步骤 1:创建 Amazon S3 存储桶
创建一个 Amazon S3 存储桶来存储 HashiCorp Vault 日志。存储桶必须位于您计划创建 CloudWatch 管线的同一 Amazon 区域中。
步骤 2:创建 Amazon SQS 队列
Amazon SQS 队列必须与您的 Amazon S3 存储桶位于同一 Amazon 区域。当新的日志文件添加到存储桶时,此队列会收到通知。
步骤 3:将 Amazon S3 连接至 Amazon SQS
配置 Amazon S3 存储桶,将 s3:ObjectCreated:* 事件的事件通知发送到 Amazon SQS 队列。
步骤 4:配置 Amazon SQS 队列策略
配置 Amazon SQS 队列策略,允许 Amazon S3 存储桶将消息发送至队列。将以下策略应用于 Amazon SQS 队列:
{ "Version": "2012-10-17", "Id": "AllowS3ToSQS", "Statement": [ { "Sid": "AllowS3BucketNotification", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<region>:<account-id>:<queue-name>", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:s3:::<YOUR-BUCKET>" }, "StringEquals": { "aws:SourceAccount": "<account-id>" } } } ] }
步骤 5:配置 Vault 日志导出和 Fluent Bit
启用 Vault 文件审计设备以写入审计日志:
vault audit enable file file_path=/var/log/vault/audit.log
在 Vault 服务器配置文件中配置 JSON 操作日志(vault.hcl):
log_level = "info" log_format = "json"
配置 Fluent Bit,以收集审计和操作日志并将其传送至 Amazon S3:
######################################## # SERVICE SECTION ######################################## [SERVICE] Flush 5 Daemon Off Log_Level info storage.path /etc/fluent-bit/db/storage storage.sync normal storage.checksum off storage.backlog.mem_limit 10M ######################################## # INPUT SECTION ######################################## [INPUT] Name tail Path /var/log/vault/audit.log Tag vault.audit Parser json Read_from_Head False DB /etc/fluent-bit/db/vault-audit.db DB.Sync Normal storage.type filesystem Rotate_Wait 30 Refresh_Interval 60 [INPUT] Name tail Path /var/log/vault/vault.log Tag vault.operational Parser json Read_from_Head False DB /etc/fluent-bit/db/vault-operational.db DB.Sync Normal storage.type filesystem Rotate_Wait 30 Refresh_Interval 60 ######################################## # OUTPUT SECTION ######################################## [OUTPUT] Name s3 Match vault.* bucket <YOUR-BUCKET> region <region> s3_key_format /hashicorp-vault/%Y/%m/%d/%H/%M/%S.log.gz compression gzip use_put_object On store_dir /etc/fluent-bit/db/s3 total_file_size 1M log_key log upload_timeout 60
步骤 6:IAM 权限
为 Fluent Bit 主机创建具有以下权限的 IAM 策略,以让其向 Amazon S3 存储桶写入对象:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "FluentBitS3Write", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateMultipartUpload", "s3:CompleteMultipartUpload" ], "Resource": [ "arn:aws:s3:::<YOUR-BUCKET>", "arn:aws:s3:::<YOUR-BUCKET>/hashicorp-vault/*" ] } ] }
步骤 7:验证
通过确认日志文件出现在 Amazon S3 存储桶中以及正在生成 Amazon SQS 通知来验证设置。检查 Amazon SQS 队列中是否存在指示新对象创建事件的消息。
配置 CloudWatch 管线
创建管线时,请选择 HashiCorp Vault 作为数据来源。
提供 Amazon SQS 队列 URL 和 IAM 角色 ARN。
选择目标 CloudWatch Logs 日志组。
创建管线后,数据将在选定的日志组中可用。
支持的开放式网络安全架构框架事件类
此集成支持 OCSF 架构版本 v1.5.0。下表显示了 HashiCorp Vault 日志类型与 OCSF 事件类之间的映射。未映射的事件会作为原始日志转发。
| 事件名称 | OCSF 事件类 |
|---|---|
| 审核 | API 活动 [6003] |
| 正常运行 | 不适用(原始直通) |