收集 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 集群

配置审核日志存储位置

  1. 访问您的 Okera 集群配置 YAML 文件。
  2. 找到审核日志配置部分。
  3. 根据您的云平台配置审核日志目标位置:

    • 对于 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:您的容器名称
  4. 保存配置文件。

  5. 使用 Helm 图表更新 Okera 集群:

    helm upgrade okera okera/okera -f your-config.yaml
    
  6. 验证审核日志是否已写入配置的位置:

    • 对于 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

  1. 创建具有对包含 Okera 审核日志的 S3 存储桶的读取权限的 IAM 用户。
  2. 按照 AWS S3 配置指南中的步骤执行以下操作:
    • 创建 IAM 用户
    • 生成访问密钥
    • 授予 AmazonS3ReadOnlyAccess 或具有 s3:GetObject 和 s3:ListBucket 权限的自定义政策

对于 Google Cloud Storage

  1. 检索 Google SecOps 服务账号电子邮件地址:

    1. 前往 SIEM 设置 > Feed。
    2. 点击添加新 Feed。
    3. 点击配置单个 Feed。
    4. 输入 Feed 的名称(例如 okera-audit-logs)。
    5. 选择 Google Cloud Storage V2 作为来源类型。
    6. 选择 Okera DAP 作为日志类型。
    7. 点击获取服务账号。
    8. 复制显示的服务账号电子邮件地址。
  2. 向服务账号授予对 GCS 存储桶的访问权限:

    1. 在 GCP Console 中,前往 Cloud Storage > 存储桶。
    2. 点击包含 Okera 审核日志的存储桶。
    3. 前往权限标签页。
    4. 点击授予访问权限。
    5. 在添加主账号中,粘贴 Google SecOps 服务账号电子邮件地址。
    6. 在分配角色中,选择 Storage Object Viewer。
    7. 点击保存。

对于 Azure Blob Storage

  1. 检索存储账号访问密钥:

    1. 在 Azure 门户中,前往您的存储账号。
    2. 选择安全 + 网络下的访问密钥。
    3. 点击显示密钥。
    4. 复制键 1 或键 2。
  2. 记下 Blob 服务端点:

    • 格式:https://yourstorageaccount.blob.core.windows.net/

在 Google SecOps 中配置 Feed 以注入 Okera ODAP 审核日志

对于 Amazon S3

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 点击配置单个 Feed。
  4. 为 Feed 名称输入一个唯一名称(例如 okera-audit-s3)。
  5. 选择 Amazon S3 V2 作为来源类型。
  6. 选择 Okera DAP 作为日志类型。
  7. 点击下一步,然后点击提交。
  8. 为以下字段指定值:

    • S3 URI:s3://your-company/okera/audit/
    • 来源删除选项:选择从不(建议保留审核日志)
    • 文件存在时间上限:包含过去指定天数内修改过的文件(默认值为 180 天)
    • 访问密钥 ID:具有 S3 存储桶读取权限的 IAM 用户访问密钥
    • Secret Access Key:IAM 用户密钥
    • 资源命名空间:资源命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  9. 点击下一步,然后点击提交。

对于 Google Cloud Storage

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 点击配置单个 Feed。
  4. 在 Feed 名称字段中输入一个不重复的名称(例如 okera-audit-gcs)。
  5. 选择 Google Cloud Storage V2 作为来源类型。
  6. 选择 Okera DAP 作为日志类型。
  7. 点击下一步。
  8. 为以下字段指定值:

    • 存储桶网址:gs://your-company/okera/audit/
    • 源删除选项:选择从不(建议保留审核日志)
    • 文件存在时间上限:包含在过去指定天数内修改过的文件(默认值为 180 天)
    • 资产命名空间:资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  9. 点击下一步,然后点击提交。

对于 Azure Blob Storage

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 点击配置单个 Feed。
  4. 为 Feed 名称输入一个唯一名称(例如 okera-audit-azure)。
  5. 选择 Microsoft Azure Blob Storage V2 作为来源类型。
  6. 选择 Okera DAP 作为日志类型。
  7. 点击下一步。
  8. 为以下字段指定值:

    • Azure URI:https://yourstorageaccount.blob.core.windows.net/okera-audit/
    • 来源删除选项:选择从不(建议保留审核日志)
    • 文件存在时间上限:包含在过去指定天数内修改过的文件(默认值为 180 天)
    • 共享密钥:存储账号访问密钥
    • 资产命名空间:资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  9. 点击下一步,然后点击提交。

验证审核日志注入

  1. 等待 10-15 分钟,让初始提取完成。
  2. 前往 Google SecOps 中的搜索。
  3. 运行搜索查询以验证 Okera 审核日志是否正在被注入:

    metadata.vendor_name = "Okera"
    
  4. 验证事件是否显示最近的时间戳。

  5. 检查 Feed 状态:

    1. 前往 SIEM 设置 > Feed。
    2. 找到您的 Okera 审核 Feed。
    3. 验证状态是否显示为有效。
    4. 检查上次成功提取的时间戳。

问题排查

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,请注意:

  1. 查看 Databricks Unity Catalog 审核日志文档
  2. 将 Unity Catalog 审核日志配置为传递到 Cloud Storage
  3. 为 Unity Catalog 审核日志创建新的 Google SecOps Feed
  4. 在迁移期间同时维护这两个 Feed
  5. 在迁移完成后停用 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 专业人士的解答。