收集 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 Data Lake Storage Gen2 的 Azure(存储账号)
- Okera 集群必须具有对 Cloud Storage 位置的写入权限
配置 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 Storage 账号名称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 配置 Cloud Storage 访问权限
根据您的云端存储空间平台,按照以下相应指南操作:
对于 Amazon S3
- 创建具有对包含 Okera 审核日志的 S3 存储桶的读取权限的 IAM 用户。
- 按照 AWS S3 配置指南中的步骤执行以下操作:
- 创建 IAM 用户
- 生成访问密钥
- 授予
AmazonS3ReadOnlyAccess或具有s3:GetObject和s3:ListBucket权限的自定义政策
对于 Google Cloud Storage
检索 Google SecOps 服务账号电子邮件地址:
- 前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 输入 Feed 的名称(例如
okera-audit-logs)。 - 选择 Google Cloud Storage V2 作为来源类型。
- 选择 Okera DAP 作为日志类型。
- 点击获取服务账号。
- 复制显示的服务账号电子邮件地址。
向服务账号授予对 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。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 为 Feed 名称输入一个唯一名称(例如
okera-audit-s3)。 - 选择 Amazon S3 V2 作为来源类型。
- 选择 Okera DAP 作为日志类型。
- 点击下一步,然后点击提交。
为以下字段指定值:
- S3 URI:
s3://your-company/okera/audit/ - 来源删除选项:选择从不(建议保留审核日志)
- 文件存在时间上限:包含过去指定天数内修改过的文件(默认值为 180 天)
- 访问密钥 ID:具有 S3 存储桶读取权限的 IAM 用户访问密钥
- Secret Access Key:IAM 用户密钥
- 资源命名空间:资源命名空间
- 注入标签:要应用于此 Feed 中事件的标签
- S3 URI:
点击下一步,然后点击提交。
对于 Google Cloud Storage
- 前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 在 Feed 名称字段中输入一个不重复的名称(例如
okera-audit-gcs)。 - 选择 Google Cloud Storage V2 作为来源类型。
- 选择 Okera DAP 作为日志类型。
- 点击下一步。
为以下字段指定值:
- 存储桶网址:
gs://your-company/okera/audit/ - 源删除选项:选择从不(建议保留审核日志)
- 文件存在时间上限:包含在过去指定天数内修改过的文件(默认值为 180 天)
- 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中事件的标签
- 存储桶网址:
点击下一步,然后点击提交。
对于 Azure Blob Storage
- 前往 SIEM 设置 > Feed。
- 点击添加新 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 是否正在将审核日志写入配置的 Cloud Storage 位置
- 检查 Feed 配置中的存储路径是否与
WATCHER_AUDIT_LOG_DST_DIR设置一致 - 验证 Cloud Storage 权限是否已正确配置
- 检查 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 审核日志配置为传递到 Cloud Storage
- 为 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 | 用户标识符 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。