收集 Okera Dynamic Access Platform (ODAP) 审核日志
本文档介绍了如何使用云存储(Amazon S3、Google Cloud Storage 或 Azure Blob Storage)将 Okera Dynamic Access Platform (ODAP) 审核日志注入到 Google Security Operations。
Okera Dynamic Access Platform (ODAP) 是一种数据访问权限控制和治理平台,可为数据湖和分析平台提供精细的访问权限控制、自动数据发现和分类以及全面的审核日志记录。该平台会生成 JSON 格式的审核日志,用于捕获所有数据访问权限事件、政策更改和管理操作。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 有效的 Okera ODAP 部署(2.0 版或更高版本)
- 对 Okera 集群配置(Helm 图表或配置 YAML)的管理员访问权限
- 对以下云平台之一的特权访问权限:
- AWS (S3, IAM),适用于 Amazon S3 存储
- GCP (Cloud Storage, IAM),适用于 Google Cloud Storage
- Azure (存储账号),适用于 Azure Data Lake Storage Gen2
- Okera 集群必须具有对云存储位置的写入权限
配置 Okera ODAP 审核日志导出
Okera ODAP 审核日志通过集群配置 YAML 文件进行配置,并使用 Okera Helm 图表进行部署。审核日志以 JSON 格式写入到共享云存储位置。
确定您的云存储平台
根据您的 Okera 部署,选择以下云存储平台之一:
- Amazon S3:适用于在 AWS 上运行的 Okera 集群
- Google Cloud Storage:适用于在 GCP 上运行的 Okera 集群
- Azure Data Lake Storage Gen2:适用于在 Azure 上运行的 Okera 集群
配置审核日志存储位置
- 访问您的 Okera 集群配置 YAML 文件。
- 找到审核日志配置部分。
根据您的云平台配置审核日志目标位置:
对于 Amazon S3:
WATCHER_LOG_DST_DIR: "s3://your-company/okera/ops/" WATCHER_AUDIT_LOG_DST_DIR: "s3://your-company/okera/audit/" WATCHER_S3_REGION: "us-east-1" WATCHER_S3_ENCRYPT: "true" WATCHER_AUDIT_UPLOAD_INTERVAL_SEC: "15"替换以下内容:
your-company:您的 S3 存储桶名称us-east-1:您的 AWS 区域
对于 Google Cloud Storage:
WATCHER_LOG_DST_DIR: "gs://your-company/okera/ops/" WATCHER_AUDIT_LOG_DST_DIR: "gs://your-company/okera/audit/" WATCHER_AUDIT_UPLOAD_INTERVAL_SEC: "15"替换以下内容:
your-company:您的 GCS 存储桶名称
对于 Azure Data Lake Storage Gen2:
WATCHER_LOG_DST_DIR: "abfs://okera-ops@yourstorageaccount.dfs.core.windows.net/" WATCHER_AUDIT_LOG_DST_DIR: "abfs://okera-audit@yourstorageaccount.dfs.core.windows.net/" WATCHER_AUDIT_UPLOAD_INTERVAL_SEC: "15"替换以下内容:
yourstorageaccount:您的 Azure 存储账号名称okera-ops和okera-audit:您的容器名称
保存配置文件。
使用 Helm 图表更新 Okera 集群:
helm upgrade okera okera/okera -f your-config.yaml验证审核日志是否正在写入到配置的位置:
对于 S3:
aws s3 ls s3://your-company/okera/audit/对于 GCS:
gsutil ls gs://your-company/okera/audit/对于 Azure:
az storage blob list --account-name yourstorageaccount --container-name okera-audit
审核日志格式
Okera 审核日志以 JSON 格式写入,具有以下特征:
- 每个文件包含多个 JSON 记录,每行一个(NDJSON 格式)
- 记录包括所有数据访问事件、政策更改和管理操作
- 文件按日期在存储位置中整理
okera_system.audit_logs数据集提供了一个可查询的审核数据视图
为 Google SecOps 配置云存储访问权限
请根据您的云存储平台,按照下面的相应指南操作:
对于 Amazon S3
- 创建一个 IAM 用户,该用户对包含 Okera 审核日志的 S3 存储桶具有读取权限。
- 按照 AWS S3 配置指南 中的步骤执行以下操作:
- 创建 IAM 用户
- 生成访问密钥
- 授予
AmazonS3ReadOnlyAccess或具有s3:GetObject和s3:ListBucket权限的自定义政策
对于 Google Cloud Storage
检索 Google SecOps 服务帐号电子邮件地址:
- 前往 SIEM 设置 > Feed。
- 点击 Add New Feed (添加新 Feed)。
- 点击 Configure a single feed (配置单个 Feed)。
- 输入 Feed 的名称(例如
okera-audit-logs)。 - 选择 Google Cloud Storage V2 作为来源类型 。
- 选择 Okera DAP 作为日志类型 。
- 点击 Get Service Account (获取服务账号)。
- 复制显示的服务帐号电子邮件地址。
向服务帐号授予对 GCS 存储桶的访问权限:
- 在 GCP Console 中,前往 Cloud Storage > 存储分区 。
- 点击包含 Okera 审核日志的存储桶。
- 前往权限 标签页。
- 点击授予访问权限 。
- 在添加主账号中,粘贴 Google SecOps 服务帐号电子邮件地址。
- 在分配角色 中,选择 Storage Object Viewer 。
- 点击保存 。
对于 Azure Blob Storage
检索存储账号访问密钥:
- 在 Azure 门户中,前往您的存储账号 。
- 在安全性 + 网络 下,选择访问密钥 。
- 点击显示密钥 。
- 复制密钥 1 或密钥 2 。
记下 Blob 服务端点:
- 格式:
https://yourstorageaccount.blob.core.windows.net/
- 格式:
在 Google SecOps 中配置 Feed 以注入 Okera ODAP 审核日志
对于 Amazon S3
- 前往 SIEM 设置 > Feed。
- 点击 Add New Feed (添加新 Feed)。
- 点击 Configure a single feed (配置单个 Feed)。
- 为 Feed 名称 输入唯一名称(例如
okera-audit-s3)。 - 选择 Amazon S3 V2 作为来源类型 。
- 选择 Okera DAP 作为日志类型 。
- 点击下一步 ,然后点击提交 。
为以下字段指定值:
- S3 URI:
s3://your-company/okera/audit/ - 来源删除选项:选择从不(建议保留审核日志)
- 最长文件存在时间:包含在过去指定天数内修改的文件(默认值为 180 天)
- 访问密钥 ID:具有对 S3 存储桶的读取权限的 IAM 用户访问密钥
- 私有访问密钥:IAM 用户私有密钥
- 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中的事件的标签
- S3 URI:
点击下一步 ,然后点击提交 。
对于 Google Cloud Storage
- 前往 SIEM 设置 > Feed。
- 点击 Add New Feed (添加新 Feed)。
- 点击 Configure a single feed (配置单个 Feed)。
- 为 Feed 名称 输入唯一名称(例如
okera-audit-gcs)。 - 选择 Google Cloud Storage V2 作为来源类型 。
- 选择 Okera DAP 作为日志类型 。
- 点击下一步 。
为以下字段指定值:
- 存储桶网址:
gs://your-company/okera/audit/ - 来源删除选项:选择从不(建议保留审核日志)
- 最长文件存在时间:包含在过去指定天数内修改的文件(默认值为 180 天)
- 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中的事件的标签
- 存储桶网址:
点击下一步 ,然后点击提交 。
对于 Azure Blob Storage
- 前往 SIEM 设置 > Feed。
- 点击 Add New Feed (添加新 Feed)。
- 点击 Configure a single feed (配置单个 Feed)。
- 为 Feed 名称 输入唯一名称(例如
okera-audit-azure)。 - 选择 Microsoft Azure Blob Storage V2 作为来源类型 。
- 选择 Okera DAP 作为日志类型 。
- 点击下一步 。
为以下字段指定值:
- Azure URI:
https://yourstorageaccount.blob.core.windows.net/okera-audit/ - 来源删除选项:选择从不(建议保留审核日志)
- 最长文件存在时间:包含在过去指定天数内修改的文件(默认值为 180 天)
- 共享密钥:存储账号访问密钥
- 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中的事件的标签
- Azure URI:
点击下一步 ,然后点击提交 。
验证审核日志注入
- 等待 10-15 分钟,让初始注入完成。
- 前往 Google SecOps 中的搜索 。
运行搜索查询,验证 Okera 审核日志是否正在注入:
metadata.vendor_name = "Okera"验证事件是否显示最近的时间戳。
查看 Feed 状态:
- 前往 SIEM 设置 > Feed。
- 找到您的 Okera 审核 Feed。
- 验证状态 是否显示有效 。
- 查看上次成功注入 时间戳。
问题排查
Google SecOps 中未显示任何日志
- 验证 Okera 是否正在将审核日志写入到配置的云存储位置
- 检查 Feed 配置中的存储路径是否与
WATCHER_AUDIT_LOG_DST_DIR设置匹配 - 验证云存储权限是否已正确配置
- 查看 Feed 状态以了解错误消息
权限错误
- S3:验证 IAM 用户是否具有
s3:GetObject和s3:ListBucket权限 - GCS:验证 Google SecOps 服务帐号是否具有 Storage Object Viewer 角色
- Azure:验证存储账号访问密钥是否正确且未过期
Okera 未写入审核日志
- 验证
WATCHER_AUDIT_LOG_DST_DIR配置是否已正确设置 - 检查 Okera 集群是否具有对云存储位置的写入权限
- 验证 Helm 图表更新是否已成功应用
- 检查 Okera 集群日志中是否存在与审核日志上传相关的错误
迁移到 Databricks Unity Catalog
如果您计划从 Okera ODAP 迁移到 Databricks Unity Catalog,请执行以下操作:
- 查看 Databricks Unity Catalog 审核日志文档
- 将 Unity Catalog 审核日志配置为传送到云存储
- 为 Unity Catalog 审核日志创建新的 Google SecOps Feed
- 在迁移期间维护这两个 Feed
- 迁移完成后,停用 Okera Feed
如需获得 Okera ODAP 或迁移到 Unity Catalog 方面的帮助,请与 Databricks 支持团队联系。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| extensions.auth.type | extensions.auth.type | 身份验证类型 |
| json_entry.request_time | metadata.event_timestamp | 事件发生时的时间戳 |
| metadata.event_type | metadata.event_type | 事件类型 |
| json_entry.statement_type | metadata.product_event_type | 特定于产品的事件类型 |
| metadata.product_name | metadata.product_name | 产品名称 |
| metadata.vendor_name | metadata.vendor_name | 供应商/公司名称 |
| json_entry.session_id | network.session_id | 会话标识符 |
| json_entry.connected_user | principal.user.userid | 用户标识符 |
| json_entry.auth_failure | security_result.action | 执行的操作 |
| json_entry.status | security_result.summary | 安全结果摘要 |
| json_entry.client_application | target.application | 应用名称 |
| json_entry.client_network_address | target.ip | IP 地址 |
| json_entry.client_network_address | target.port | 端口号 |
| json_entry.request_id | target.resource.attribute.labels | 资源的属性的键值对 |
| json_entry.num_results_read | target.resource.attribute.labels | |
| json_entry.num_results_returned | target.resource.attribute.labels | |
| json_entry.peak_memory_usage | target.resource.attribute.labels | |
| json_entry.statement | target.resource.attribute.labels | |
| json_entry.bytes_scanned | target.resource.attribute.labels | |
| json_entry.for_reporting | target.resource.attribute.labels | |
| json_entry.auth_failure | target.resource.attribute.labels | |
| json_entry.default_db | target.resource.name | 资源的名称 |
| target.resource.resource_type | target.resource.resource_type | 资源类型 |
| json_entry.user | target.user.userid | 用户标识符 |