IBM Cloud Object Storage 버킷에서 이벤트 추적
IBM Cloud 은 리소스에서 수행되는 이벤트를 추적하기 위한 중앙 집중식 로깅 서비스를 제공합니다. 이러한 서비스를 사용하여 비정상적인 활동과 중요한 조치를 조사하고 규제 감사 요건을 준수할 수 있습니다.
이러한 서비스를 사용하여 IBM Cloud® Object Storage 버킷에서 이벤트를 추적하여 데이터에서 발생하는 상황에 대한 레코드를 제공하십시오. 데이터 액세스 및 버킷 구성 이벤트에 대한 자세한 로그를 수신하려면 버킷에서 이러한 서비스를 사용으로 설정하십시오.
IBM Cloud Activity Tracker 이벤트 라우팅을 사용하여 감사 데이터가 라우팅되는 위치를 정의하는 대상 및 경로를 구성하여 계정 수준에서 감사 이벤트를 관리할 수 있습니다.
이 기능은 현재 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 로그 UI를 실행합니다.
선택 사항으로 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 이벤트 라우팅을 사용하여 감사 데이터가 라우팅되는 위치를 정의하는 대상 및 경로를 구성하여 계정 수준에서 감사 이벤트를 관리할 수 있습니다.
Activity Tracker 이벤트 라우팅은 IBM COS 버킷 로그를 다음 대상으로 라우팅하도록 지원합니다.
IBM Cloud Object Storage 버킷에서 활동 추적 이벤트 구성(권장)
이벤트 추적은 버킷 프로비저닝 시 또는 버킷 생성 후 버킷 구성을 업데이트하여 IBM Cloud Object Storage 버킷에서 사용 설정할 수 있습니다. 이벤트 추적은 인에이블먼트 후에 작성된 COS 요청에만 적용됩니다.
기본적으로 버킷 생성과 같은 전역 작업을 보고하는 COS 이벤트는 자동으로 수집됩니다. 프랑크푸르트에 위치한 Activity Tracker 인스턴스를 통해 글로벌 작업을 모니터링할 수 있습니다.
IBM COS는 선택적으로 다음 이벤트 유형에 대한 추적도 지원합니다.
- 관리 이벤트-버킷 및 오브젝트 구성 관리와 관련된 요청
- 읽기 데이터 이벤트-오브젝트 목록 및 읽기 요청과 관련된 요청
- 데이터 이벤트 쓰기 - 오브젝트 쓰기 및 삭제와 관련된 모든 이벤트입니다.
이벤트를 생성하는 관리, 데이터 읽기 및 데이터 쓰기 조치의 전체 목록을 보려면 COS API 이벤트를 참조하십시오.
COS 리소스 구성 API 를 사용하여 버킷에서 이러한 이벤트의 추적을 구성하십시오.
이벤트 추적이 활성화되면 모든 이벤트는 버킷의 위치를 기반으로 하는 IBM Cloud Activity Tracker 이벤트 라우터의 기본 수신 위치로 전송됩니다. 이 기본 매핑을 확인하려면 IBM COS 서비스 통합을 참조하세요. Activity Tracker 이벤트 라우터 규칙을 사용하여 이벤트를 대체 위치 또는 대상 서비스로 라우팅합니다. 자세한 정보는 규칙 관리 를 참조하십시오.
버킷에서 IBM Cloud Activity Tracker 을 구성하는 방법 (권장)
이 주제의 맨 위에 있는 UI, API 또는 Terraform탭을 선택하여 버킷에서 관리, 데이터 읽기 및 데이터 쓰기 이벤트의 추적을 사용으로 설정하는 방법을 보여주는 예제를 표시하십시오.
버킷에서 이벤트 추적을 사용으로 설정하는 방법에 대한 UI 예제
- IBM Cloud 콘솔 리소스 목록 에서 이벤트 추적 추가에 관심이 있는 버킷을 포함하는 서비스 인스턴스를 선택하십시오. Object Storage 콘솔로 이동합니다
- 이벤트 추적을 사용 설정할 버킷을 선택합니다.
- 구성 탭으로 이동합니다.
- 고급 구성 섹션으로 아래로 스크롤하고 이 버킷에 대해 추적할 이벤트를 전환하십시오.
- 몇 분 후 Activity Tracker 웹 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 버킷에서 활동 추적 이벤트 구성(레거시)
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을 제거하십시오. 이제 COS 서비스 통합 에 설명된 대로 이벤트가 기본 Activity Tracker 이벤트 라우터 수신 위치로 라우팅됩니다. 이 위치에서 Activity Tracker 호스트 이벤트 검색의 인스턴스를 프로비저닝하거나 이벤트 로깅에 인터럽트가 없도록 업그레이드하기 전에 라우팅 규칙을 정의하십시오.
COS 버킷의 레거시 이벤트 추적 구성에서 권장 이벤트 추적 구성으로 상태 전이하기 위한 예제 패치
패치의 예를 보려면 이 주제의 맨 위에 있는 UI, API 또는 Terraform탭을 선택하십시오.
COS 버킷에서 레거시에서 권장 이벤트 추적 구성으로 상태 전이하기 위한 UI 예제 패치
- 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::”
}
}