追蹤 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 Logs 实例作为目标 中的步骤来配置 IBM Cloud Logs 实例、配置服务对服务授权、创建目标和创建路由。 建立路由時,請選擇與您的水桶所在區域相對應的位置,例如
us-south。 完成設定後,選取區域的所有 Object Storage 請求記錄都會轉寄到 IBM Cloud Logs 範例。 若要檢視記錄,請 啟動 IBM Cloud Logs UI。
您可以選擇使用 TCO Optimizer 篩選記錄,以僅顯示特定 Object Storage 範例的資訊。 根據預設,Activity Tracker Event Routing 會擷取所選區域內所有服務的資料。 若要將記錄限制於特定 Object Storage 範例,請遵循 建立政策 中的步驟,新增並套用具有這些設定的新 TCO Optimizer 政策:
- 應用 =
ibm-audit-event - 子系統 = 特定 Object Storage 範例的 CRN、
CRNserviceName:instanceID
使用 IBM Cloud Activity Tracker 事件遞送來遞送日誌
開始使用 IBM Cloud Activity Tracker Event Routing 為您的 IBM Cloud Object Storage 稽核事件設定路由。 您可以使用 Activity Tracker Event Routing (一項平台服務),透過設定定義稽核資料路由位置的目標和路由,在帳戶層級管理稽核事件。
Activity Tracker 事件遞送支援將 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 Activity Tracker (建議)
選取此主題頂端的使用者介面、API 或 Terraform 標籤,以顯示範例來顯示如何啟用儲存區中管理、資料讀取及資料寫入事件的追蹤。
如何啟用儲存區中事件追蹤的使用者介面範例
- 從 IBM Cloud 主控台 資源清單 中,選取包含您有興趣新增事件追蹤之儲存區的服務實例。 這會帶您到 Object Storage 控制台
- 選擇要啟用事件追蹤的水桶。
- 導覽至組態索引標籤。
- 向下捲動至進階配置區段,並開啟您要針對此儲存區追蹤的事件。
- 幾分鐘之後,任何活動都會在 Activity Tracker Web UI 中顯示。
範例
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()
.readDataEvents(true)
.writeDataEvents(true)
.managementEvents(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: {
"read_data_events": true,
"write_data_events": true,
"management_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':
{
'read_data_events':True,
'write_data_events':True,
'management_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{
ReadDataEvents: core.BoolPtr(true),
WriteDataEvents: core.BoolPtr(true),
ManagementEvents: 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 = “Name-of-the-bucket”
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
management_events = true
}
}
在 IBM Cloud Object Storage Bucket 上設定活動追蹤事件 (傳統)
在 COS 資源配置 API 中指定 Activity Tracker 實例的目標 CRN,以在 COS 儲存區上啟用 IBM Activity Tracking。 指定 CRN 以定義 COS 事件的路徑。
在「活動追蹤」配置上設定 CRN 時,一律會啟用管理事件
舊式模型也支援選擇性地在下列事件類型上啟用追蹤:
- 讀取資料事件-與物件清單及讀取要求相關的要求
- 寫入資料事件-這些都是與寫入及刪除物件相關的事件
IBM Cloud 觀察遞送服務是客戶管理平台觀察資料遞送的標準化方式。 服務特定的遞送配置 (例如 COS) 即將淘汰。
建議客戶 移除這些使用 CRN 的舊式遞送配置,並改為使用 IBM Activity Tracker 事件遞送服務,將事件遞送至其他位置。
IBM COS 將繼續支援舊式配置,其中指定的 CRN 不同於預設位置。
在 COS 儲存區上從舊式升級至建議的事件追蹤
若要使用資源配置 API 從舊式配置升級,請移除目標 Activity Tracker 實例 CRN。 事件現在將遞送至預設 Activity Tracker 事件路由器接收位置,如 COS 服務整合 中所述。 在此位置佈建 Activity Tracker 管理的事件搜尋實例,或在升級之前定義遞送規則,以確保事件記載不會岔斷。
在 COS 儲存區上從舊式轉移至建議事件追蹤配置的範例修補程式
選取本主題頂端的使用者介面、API 或 Terraform 標籤,以查看修補程式的範例。
使用者介面範例修補程式,用於從 COS 儲存區上的舊式事件追蹤配置轉移至建議的事件追蹤配置
- 從 IBM Cloud 主控台 資源清單 中,選取包含您要升級至建議事件追蹤配置之儲存區的服務實例。 這會帶您進入 Object Storage 主控台。
- 選擇您要升級的水桶。
- 導覽至組態索引標籤。
- 向下捲動至進階配置區段,並找到 Activity Tracker的配置畫面。
- 按一下畫面右上角,然後選取升級。
- 確認您要升級此儲存區的事件追蹤。
範例
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::”
}
}