View a markdown version of this page

HashiCorp Vault 的来源配置 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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]
正常运行 不适用(原始直通)