View a markdown version of this page

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

Ping Identity PingAccess 的来源配置

与 Ping Identity PingAccess 集成

Ping Identity PingAccess 集成使用 Amazon S3 和 Amazon SQS 来将审计日志数据摄取到 CloudWatch 管线中。PingAccess 部署在本地,不会公开用于审计日志检索的 REST API。Fluent Bit 追踪 PingAccess 主机上的 JSON 格式的审计日志文件,并将其传送到 Amazon S3 存储桶。当新的日志对象到达时,Amazon SQS 通知会提醒管线。

先决条件

  • 有权创建 Amazon S3 存储桶、Amazon SQS 队列和 IAM 角色的 Amazon Web Services 账户

  • 具有管理访问权限的 Ping Identity PingAccess 服务器

  • 安装了 Fluent Bit 的 Linux 主机(可以是与 PingAccess 相同的主机)

  • PingAccess 主机与 Amazon 之间的网络连接

日志转发设置

PingAccess 使用 Log4j2 将审计日志写入本地文件。您可以通过向 log4j2.xml 配置文件添加 JsonTemplateLayout 附加器来配置 JSON 格式的输出。Fluent Bit 会追踪这些 JSON 日志文件并将其传送到 Amazon S3。有关详细配置说明,请参阅下一节中的步骤 5。

Amazon S3 与 Amazon SQS 设置说明

请完成下面的步骤,为 Ping Identity PingAccess 日志摄取配置 Amazon S3 和 Amazon SQS 基础设施。

步骤 1:创建 Amazon S3 存储桶

创建一个 Amazon S3 存储桶来存储 PingAccess 审计日志。存储桶必须位于您计划创建 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:配置 Ping Identity PingAccess 日志导出和 Fluent Bit

编辑 <PA_HOME>/conf/log4j2.xml,以在 PingAccess 上启用 JSON 日志记录。添加下面的 RollingFile 附加器:

<RollingFile name="AdminAudit-JsonTemplateLayout" fileName="${sys:pa.log.dir}/admin_audit_json.log" filePattern="${sys:pa.log.dir}/admin_audit_json.%d{yyyy-MM-dd}.log" ignoreExceptions="false"> <JsonTemplateLayout eventTemplateUri="${sys:pa.log4j.json.templates.uri}/admin-audit-log.json"/> <Policies> <TimeBasedTriggeringPolicy maxRandomDelay="45"/> </Policies> </RollingFile> <RollingFile name="AccessAudit-JsonTemplateLayout" fileName="${sys:pa.log.dir}/audit_json.log" filePattern="${sys:pa.log.dir}/audit_json.%d{yyyy-MM-dd}.log" ignoreExceptions="false"> <JsonTemplateLayout eventTemplateUri="${sys:pa.log4j.json.templates.uri}/access-audit-log.json"/> <Policies> <TimeBasedTriggeringPolicy maxRandomDelay="45"/> </Policies> </RollingFile>

更新 Loggers 部分以引用新的附加器:

<Logger name="com.pingidentity.pa.admin.audit" level="INFO" additivity="false"> <AppenderRef ref="AdminAudit-JsonTemplateLayout"/> </Logger> <Logger name="com.pingidentity.pa.audit.AccessAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="AccessAudit-JsonTemplateLayout"/> </Logger> <Logger name="com.pingidentity.pa.audit.PolicyAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="AccessAudit-JsonTemplateLayout"/> </Logger> <Logger name="com.pingidentity.pa.audit.SessionAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="AccessAudit-JsonTemplateLayout"/> </Logger>

配置 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 - Access Audit Log ######################################## [INPUT] Name tail Path /opt/pingaccess/log/audit_json.log Tag pingaccess.audit Read_from_Head True DB /etc/fluent-bit/db/audit_checkpoint.db DB.Sync Normal storage.type filesystem Rotate_Wait 30 Refresh_Interval 60 ######################################## # INPUT SECTION - Admin Audit Log ######################################## [INPUT] Name tail Path /opt/pingaccess/log/admin_audit_json.log Tag pingaccess.admin Read_from_Head True DB /etc/fluent-bit/db/admin_checkpoint.db DB.Sync Normal storage.type filesystem Rotate_Wait 30 Refresh_Interval 60 ######################################## # OUTPUT SECTION ######################################## [OUTPUT] Name s3 Match pingaccess.* Bucket <YOUR-BUCKET> Region <region> S3_Key_Format /pingaccess/%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
注意

PingAccess 会为每个集群节点写入独立的日志文件。每个节点上都必须安装 Fluent Bit。

audit_json.log 捕获运行时访问控制事件(请求 URL、客户端 IP、策略决策、响应代码、延迟)。admin_audit_json.log 捕获管理控制台活动(配置更改、管理员登录、规则和应用程序修改)。

Fluent Bit 将 gzip 压缩的 NDJSON 文件传输到 Amazon S3。storage.type filesystem 设置可确保缓冲到磁盘,从而提高可靠性。

重要

仅使用 PingAccess 提供的默认 JSON 模板。

步骤 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>/pingaccess/*" ] } ] }

步骤 7:验证

通过确认日志文件出现在 Amazon S3 存储桶中以及正在生成 Amazon SQS 通知来验证设置。检查 Amazon SQS 队列中是否存在指示新对象创建事件的消息。

配置 CloudWatch 管线

  • 创建管线时,请选择 Ping Identity PingAccess 作为数据来源。

  • 提供 Amazon SQS 队列 URL 和 IAM 角色 ARN。

  • 选择目标 CloudWatch Logs 日志组。

  • 创建管线后,数据将在选定的日志组中可用。

支持的开放式网络安全架构框架事件类

此集成支持 OCSF 架构版本 v1.5.0。下表显示了 PingAccess 审计日志类型与 OCSF 事件类之间的映射。

事件名称 OCSF 事件类
访问审计(运行时 HTTP 活动) HTTP 活动 [4002]
API 审计(管理员 API 操作) API 活动 [6003]