IBM Cloud Docs
跟踪 IBM Cloud Object Storage 存储区上的事件

跟踪 IBM Cloud Object Storage 存储区上的事件

IBM Cloud 提供集中式日志记录服务以跟踪对资源执行的事件。 您可以使用这些服务调查异常活动和关键操作,并遵守监管审计要求。

使用这些服务来跟踪 IBM Cloud® Object Storage 存储区上的事件,以提供数据发生情况的记录。 在存储区上启用这些服务以接收有关数据访问和存储区配置事件的详细日志。

使用 IBM Cloud Activity Tracker Event Routing,通过配置定义审计数据路由的目标和路由,在帐户级管理审计事件。

此功能在 Satellite 的 Object Storage 中当前不受支持。

此功能部件支持 SCC 监视

使用 IBM Cloud Activity Tracker 来跟踪存储区事件

自 2024 年 3 月 28 日起,IBM Log Analysis 和 IBM Cloud Activity Tracker 服务将停止使用,自 2025 年 3 月 30 日起将不再提供支持。 客户需要在 2025 年 3 月 30 日之前迁移到取代这两项服务的 IBM Cloud Logs。

使用 IBM Cloud® Activity Tracker 跟踪 Object Storage 事件可提供数据发生情况的记录。 IBM Cloud Activity Tracker 服务提供框架和功能,用于监控对 IBM Cloud 上服务的 API 调用,并提供证据以遵守企业政策和市场行业特定法规。

请参阅开始使用 IBM Cloud Activity Tracker 了解更多信息。 从 IBM Cloud Activity Tracker 迁移到 IBM Cloud 日志,避免事件跟踪中断。

使用 IBM Cloud Logs 跟踪水桶事件

IBM Cloud Logs 让您可以灵活地处理数据以获得洞察力和趋势,以及存储数据以进行高速搜索和长期趋势分析。 它为您提供了工具,使您在保持对总成本的控制时获得的价值最大化。

要通过将 IBM Cloud Logs 作为 Activity Tracker Event Routing 的目标来跟踪水桶事件,请按照 配置 IBM Cloud 日志实例作为目标 中的步骤来配置 IBM Cloud Logs 实例、配置服务对服务授权、创建目标和创建路由。 创建路线时,请选择与水桶所在区域相对应的位置,例如 us-south。 完成配置后,所选区域的所有 Object Storage 请求日志都会转发到 IBM Cloud Logs 实例。 要查看日志,请 启动 IBM Cloud 日志用户界面

您还可以选择使用 TCO 优化器 过滤日志,以便只显示特定 Object Storage 实例的信息。 默认情况下,Activity Tracker Event Routing 捕获所选区域内所有服务的数据。 要将日志限制在特定 Object Storage 实例中,请按照 创建策略 中的步骤添加并应用带有这些设置的新 TCO 优化策略:

  • 应用 = ibm-audit-event
  • 子系统 = 特定 Object Storage 实例的 CRN、CRNserviceName:instanceID

使用 IBM Cloud Activity Tracker 事件路由来路由日志

开始使用 IBM Cloud Activity Tracker 事件路由,为 IBM Cloud Object Storage 审计事件配置路由。 您可以使用 Activity Tracker Event Routing(一项平台服务),通过配置目标和路由来定义审计数据的路由,从而在账户级别管理审计事件。

Activity Tracker Event Routing 支持将 IBM COS 存储区日志路由到以下目标

在 IBM Cloud Object Storage Bucket 上配置活动跟踪事件(推荐)

可在 IBM Cloud Object Storage 存储桶上启用事件跟踪功能,具体方法是在配置存储桶时启用,或在创建存储桶后更新存储桶配置。 事件跟踪仅适用于启用后发出的 COS 请求。

默认情况下,会自动收集报告全局操作(如水桶创建)的 COS 事件。 您可以通过位于法兰克福的 Activity Tracker 实例监控全球行动。

IBM COS 还 (可选) 支持对以下事件类型进行跟踪:

  • 管理事件-与管理存储区和对象配置相关的请求
  • 读取数据事件-与对象列表和读取请求相关的请求
  • 写入数据事件-这些都是与写入和删除对象相关的事件

请参阅 COS API 事件,以查看生成事件的“管理”,“读取数据”和“写入数据”操作的完整列表。

使用 COS 资源配置 API 来配置对存储区上的这些事件的跟踪

启用事件跟踪后,所有事件都会发送到 IBM Cloud Activity Tracker Event Router 的默认接收位置,该位置基于水桶的位置。 请参阅 IBM COS 服务集成,查看此默认映射。 使用 Activity Tracker Event Router 规则将事件路由到其他位置或目标服务。 请参阅 管理规则 以了解更多信息。

在 IBM Cloud Object Storage Bucket(传统)上配置活动跟踪事件

通过在 COS 资源配置 API 中指定 Activity Tracker 实例的目标 CRN,在 COS 存储区上启用 IBM Activity Tracking。 指定 CRN 以定义 COS 事件的路由。

在“活动跟踪”配置上设置 CRN 时,将始终启用管理事件

旧模型还支持 (可选) 对以下事件类型启用跟踪:

  • 读取数据事件-与对象列表和读取请求相关的请求
  • 写入数据事件-这些都是与写入和删除对象相关的事件

IBM Cloud 可观察性路由服务是客户管理平台可观察性数据路由的标准化方法。 不推荐使用特定于服务的路由配置 (例如 COS)。

建议客户 除去这些使用 CRN 的旧路由配置,改为使用 IBM Activity Tracker Event Routing 服务将事件路由到其他位置。

IBM COS 将继续支持指定了不同于缺省位置的 CRN 的旧配置。

在 COS 存储区上从“旧”升级到“建议事件跟踪”

要使用资源配置 API 从旧配置进行升级,请除去目标 Activity Tracker 实例 CRN。 现在,事件将路由到缺省 Activity Tracker Event Router 接收位置,如 COS 服务集成 中所述。 在此位置供应 Activity Tracker 托管事件搜索的实例,或者在升级之前定义路由规则,以确保事件日志记录不会中断。

用于在 COS 存储区上从“旧”事件跟踪配置转换为“建议”事件跟踪配置的示例补丁

选择本主题顶部的 UI,API 或 Terraform 选项卡以查看补丁示例。

用于在 COS 存储区上从“旧”转换为“建议”事件跟踪配置的 UI 示例补丁

  1. 从 IBM Cloud 控制台 资源列表 中,选择包含要升级到建议事件跟踪配置的存储区的服务实例。 这将带您进入 Object Storage 控制台。
  2. 选择要升级的水桶。
  3. 导航至配置选项卡。
  4. 向下滚动到高级配置部分,并找到 Activity Tracker的配置面板。
  5. 单击面板右上角,然后选择“升级”。
  6. 确认要升级此存储区的事件跟踪。

示例

Java SDK

import com.ibm.cloud.objectstorage.config.resource_configuration.v1.ResourceConfiguration;
import com.ibm.cloud.objectstorage.config.resource_configuration.v1.model.BucketPatch;
import com.ibm.cloud.sdk.core.security.IamAuthenticator;

public class ActivityTrackerExample {
   private static final String BUCKET_NAME = <BUCKET_NAME>;
   private static final String API_KEY = <API_KEY>;

   public static void main(String[] args) {
       IamAuthenticator authenticator = new IamAuthenticator.Builder()
               .apiKey(API_KEY)
               .build();
       ResourceConfiguration RC_CLIENT = new ResourceConfiguration("resource-configuration", authenticator);
       ActivityTracking activityTrackingConfig = new ActivityTracking().Builder()
             .activityTrackerCrn(AT_CRN)
             .readDataEvents(true)
             .writeDataEvents(true)
             .build();
       BucketPatch bucketPatch = new BucketPatch.Builder().activityTracking(activityTrackingConfig).build();
       UpdateBucketConfigOptions update = new UpdateBucketConfigOptions
               .Builder(BUCKET_NAME)
               .bucketPatch(bucketPatch.asPatch())
               .build();

       RC_CLIENT.updateBucketConfig(update).execute();
       GetBucketConfigOptions bucketOptions = new GetBucketConfigOptions.Builder(BUCKET_NAME).build();
       Bucket bucket = RC_CLIENT.getBucketConfig(bucketOptions).execute().getResult();

       ActivityTracking activityTrackingResponse = bucket.getActivityTracking();
       System.out.println("Read Data Events : " + activityTrackingResponse.readDataEvents());
       System.out.println("Write Data Events : " + activityTrackingResponse.writeDataEvents());
       System.out.println("Management Events : " + activityTrackingResponse.managementEvents());
   }
}

NodeJS SDK

 const ResourceConfigurationV1 = require('ibm-cos-sdk-config/resource-configuration/v1');
 IamAuthenticator      = require('ibm-cos-sdk-config/auth');

 var apiKey = "<API_KEY>"
 var bucketName = "<BUCKET_NAME>"

 authenticator = new IamAuthenticator({apikey: apiKey})
 rcConfig = {authenticator: authenticator}
 const client = new ResourceConfigurationV1(rcConfig);

 function addAT() {
     console.log('Updating bucket metadata...');

     };
     var params = {
         bucket: bucketName,
         activityTracking: {
           "activity_tracker_crn": at_crn,
           "read_data_events": true,
           "write_data_events": true
           }
     };

     client.updateBucketConfig(params, function (err, response) {
         if (err) {
             console.log("ERROR: " + err);
         } else {
             console.log(response.result);
         }
     });
 }

 addAT()

Python SDK

 from ibm_cos_sdk_config.resource_configuration_v1 import ResourceConfigurationV1
 from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

 api_key = "<API_KEY>"
 bucket_name = "<BUCKET_NAME>"

 authenticator = IAMAuthenticator(apikey=api_key)
 client = ResourceConfigurationV1(authenticator=authenticator)
 activity_tracking_config = {
                             'activity_tracking':
                               {
                                 'activity_tracker_crn':at_crn,
                                 'read_data_events':True,
                                 'write_data_events':True,
                               }
                             }

 client.update_bucket_config(bucket_name, bucket_patch=activity_tracking_config)

GO SDK

 import (
 "github.com/IBM/go-sdk-core/core"
 rc "github.com/IBM/ibm-cos-sdk-go-config/v2/resourceconfigurationv1"
 )

 apiKey := "<ApiKey>"
 bucketName := "<BucketName>"

 authenticator := new(core.IamAuthenticator)
 authenticator.ApiKey = apiKey
 optionsRC := new(rc.ResourceConfigurationV1Options)
 optionsRC.Authenticator = authenticator
 rcClient, _ := rc.NewResourceConfigurationV1(optionsRC)

 patchNameMap := make(map[string]interface{})
 patchNameMap["activity_tracking"] = &rc.ActivityTracking{
   ActivityTrackerCrn: core.StringPtr(activityTrackerCrn),
   ReadDataEvents:     core.BoolPtr(true),
   WriteDataEvents:    core.BoolPtr(true),
 }
 updateBucketConfigOptions := &rc.UpdateBucketConfigOptions{
   Bucket:      core.StringPtr(bucketName),
   BucketPatch: patchNameMap,
 }
 rcClient.UpdateBucketConfig(updateBucketConfigOptions)

示例

 resource "ibm_resource_instance" "cos_instance" {
   name              = "cos-instance"
   resource_group_id = data.ibm_resource_group.cos_group.id
   service           = "cloud-object-storage"
   plan              = "standard"
   location          = "global"
 }

 resource "ibm_cos_bucket" "activity_tracker_bucket" {
   bucket_name          = “bucket_name”
   resource_instance_id = ibm_resource_instance.cos_instance.id
   region_location      = “us-south”
   storage_class        = “standard”
   activity_tracking {
   read_data_events     = true
     write_data_events    = true
     activity_tracker_crn = “crn:v1:bluemix:public:logdnaat:us-south:a/2xxxxxxxxxxxxxxxxxxxxxxxxf:3xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxec::”
       }
 }