View a markdown version of this page

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

Ping Identity PingFederate 的来源配置

与 Ping Identity PingFederate 集成

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

先决条件

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

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

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

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

日志转发设置

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

Amazon S3 与 Amazon SQS 设置说明

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

步骤 1:创建 Amazon S3 存储桶

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

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

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

更新 Loggers 部分,以便为多个审计记录器引用新的附加器:

<Logger name="org.sourceid.websso.profiles.sp.SpAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="SecurityAudit-JsonTemplateLayout"/> </Logger> <Logger name="org.sourceid.websso.profiles.idp.IdpAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="SecurityAudit-JsonTemplateLayout"/> </Logger> <Logger name="org.sourceid.websso.profiles.idp.AsAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="SecurityAudit-JsonTemplateLayout"/> </Logger> <Logger name="org.sourceid.websso.profiles.idp.ClientRegistrationAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="SecurityAudit-JsonTemplateLayout"/> </Logger> <Logger name="org.sourceid.wstrust.log.STSAuditLogger" level="INFO" additivity="false"> <AppenderRef ref="SecurityAudit-JsonTemplateLayout"/> </Logger> <Logger name="com.pingidentity.sdk.logging.LoggingUtil" level="INFO" additivity="false"> <AppenderRef ref="SecurityAudit-JsonTemplateLayout"/> </Logger> <Logger name="AuditLogger" level="INFO" additivity="false"> <AppenderRef ref="AdminAudit-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 - Audit Log ######################################## [INPUT] Name tail Path /opt/pingfederate/log/audit_json.log Tag pingfederate.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 Log ######################################## [INPUT] Name tail Path /opt/pingfederate/log/admin_json.log Tag pingfederate.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 pingfederate.* Bucket <YOUR-BUCKET> Region <region> S3_Key_Format /pingfederate/%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
注意

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

  • audit_json.log 文件捕获运行时身份验证事件(SSO、凭证验证、断言发布)。

  • admin_json.log 文件捕获管理控制台活动(配置更改、管理员登录)。

  • Fluent Bit 将 gzip 压缩的 NDJSON 文件传输到 Amazon S3。

  • storage.type filesystem 设置可确保缓冲到磁盘,从而提高可靠性。

重要

仅使用 PingFederate 提供的默认 JSON 模板。修改 .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>/pingfederate/*" ] } ] }

步骤 7:验证

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

配置 CloudWatch 管线

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

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

  • 选择目标 CloudWatch Logs 日志组。

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

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

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

事件名称 OCSF 事件类
安全审计(运行时身份验证生命周期) 身份验证 [3002]
管理员审计(管理员登录/注销) 身份验证 [3002]
管理员审计(配置对象上的 CRUD) 实体管理 [3004]