すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:アクセス制御とログ

最終更新日:Mar 28, 2026

ベクターバケットは、データセキュリティ、コンプライアンス、および可観測性を確保するためのアクセス制御およびログ管理機能を提供します。

アクセス制御

ベクターバケットでは、バケットポリシーおよびRAM ポリシーをサポートしています。

  • バケットポリシー:他の Alibaba Cloud アカウント、RAM ユーザー、または匿名ユーザーが指定されたベクターリソースにアクセスできるよう、バケットにアタッチされるリソースベースの権限付与ポリシーです。

  • RAM ポリシー:RAM ユーザー、ユーザーグループ、またはロールにアタッチされる ID ベースの権限付与ポリシーで、対象のベクターバケットリソースへのアクセス許可範囲を定義します。

サポートされる操作

API

操作

説明

PutVectorBucket

oss:PutVectorBucket

ベクターバケットを作成します。

GetVectorBucket

oss:GetVectorBucket

ベクターバケットの詳細情報を取得します。

ListVectorBuckets

oss:ListVectorBuckets

リクエスト元が所有するすべてのベクターバケットを一覧表示します。

DeleteVectorBucket

oss:DeleteVectorBucket

ベクターバケットを削除します。

PutBucketLogging

oss:PutBucketLogging

ベクターバケットのログ記録を有効化します。

oss:PutObject

ログ記録を有効化した場合、ソースベクターバケットからターゲットバケットへログを書き込むために必要です。

GetBucketLogging

oss:GetBucketLogging

ベクターバケットのログ記録構成を取得します。

DeleteBucketLogging

oss:DeleteBucketLogging

ベクターバケットのログ記録を無効化します。

PutBucketPolicy

oss:PutBucketPolicy

指定されたベクターバケットに対する権限付与ポリシーを設定します。

GetBucketPolicy

oss:GetBucketPolicy

指定されたベクターバケットの権限付与ポリシーを取得します。

DeleteBucketPolicy

oss:DeleteBucketPolicy

指定されたベクターバケットの権限付与ポリシーを削除します。

PutVectorIndex

oss:PutVectorIndex

ベクトルインデックスを作成します。

GetVectorIndex

oss:GetVectorIndex

ベクトルインデックスの詳細情報を取得します。

ListVectorIndexes

oss:ListVectorIndexes

ベクターバケット内のすべてのベクトルインデックスを一覧表示します。

DeleteVectorIndex

oss:DeleteVectorIndex

ベクトルインデックスを削除します。

PutVectors

oss:PutVectors

ベクトルデータを書き込みます。

GetVectors

oss:GetVectors

指定されたベクトルデータを取得します。

ListVectors

oss:ListVectors

ベクトルインデックス内のすべてのベクトルデータを一覧表示します。

QueryVectors

oss:QueryVectors

ベクトル類似検索を実行します。

DeleteVectors

oss:DeleteVectors

ベクトルインデックスから指定されたベクトルデータを削除します。

リソース形式

リソースレベル

フォーマット

すべてのベクターリソース

acs:ossvector:*:*:*

acs:ossvector:*:*:*/*

acs:ossvector:*:*:*

acs:ossvector:*:*:*/*

ベクターバケット

acs:ossvector:{region}:{account_id}:{bucket_name}

acs:ossvector:*:*:my-vector-bucket

ベクトルインデックス

acs:ossvector:{region}:{account_id}:{bucket_name}/{index_name}

acs:ossvector:*:*:my-vector-bucket/my-index

バケットポリシー

バケットポリシーを使用して、RAM ユーザーおよび他のアカウントが指定されたベクターリソースにアクセスできるように権限を付与します。

コンソール

  1. ベクターバケットページで、対象のバケットをクリックします。左側のナビゲーションウィンドウから、アクセスの制御 > バケット権限付与ポリシー を選択します。

  2. 構文によるポリシーの追加 をクリックし、ポリシー編集画面でポリシーを入力します。たとえば、UID が `11********80****` のユーザーに、`my-vector-bucket` バケットの `my-index` インデックス内のベクトルデータを読み書きする権限を付与する場合:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "oss:PutVectors",
            "oss:GetVectors"
          ],
          "Principal": [
             "1142323451******"
          ],   
          "Resource": [
            "acs:ossvector:*:*:my-vector-bucket/my-index"
          ]
        }
      ]
    }
  3. OK をクリックします。

ossutil

以下の例では、`vector-policy.json` という名前の JSON 構成ファイルを使用してバケットポリシーを設定する方法を示します。このファイルには次の内容が含まれています:

{
   "Version":"1",
   "Statement":[
       {
         "Action":[
           "oss:PutVectors",
           "oss:GetVectors"
        ],
        "Effect":"Deny",
        "Principal":["1234567890"],
        "Resource":["acs:ossvector:cn-hangzhou:1234567890:*"]
       }
    ]
}
ossutil vectors-api put-bucket-policy --bucket vector-example --body file://vector-policy.json

JSON 構成パラメーターを使用してベクターバケットのバケットポリシーを設定できます:

ossutil vectors-api put-bucket-policy --bucket vector-example --body "{\"Version\":\"1\",\"Statement\":[{\"Action\":[\"oss:PutVectors\",\"oss:GetVectors\",\"oss:QueryVectors\"],\"Effect\":\"Allow\",\"Principal\":[\"1234567890\"],\"Resource\":[\"acs:ossvector:cn-hangzhou:1234567890:bucket/vector-example/*\"]}]}"

SDK

Python

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.vectors as oss_vectors

parser = argparse.ArgumentParser(description="vector put bucket policy sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--account_id', help='The account id.', required=True)

def main():
    args = parser.parse_args()

    # Loading credentials values from the environment variables
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Using the SDK's default configuration
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    cfg.account_id = args.account_id
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    vector_client = oss_vectors.Client(cfg)


    policy_content = '''
        {
           "Version":"1",
           "Statement":[
               {
                 "Action":[
                   "oss:PutVectors",
                   "oss:GetVectors"
                ],
                "Effect":"Deny",
                "Principal":["1234567890"],
                "Resource":["acs:ossvector:cn-hangzhou:1234567890:*"]
               }
            ]
         }
    '''

    result = vector_client.put_bucket_policy(oss_vectors.models.PutBucketPolicyRequest(
        bucket=args.bucket,
        body=policy_content
    ))

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
    )

if __name__ == "__main__":
    main()

Go

package main

import (
	"context"
	"flag"
	"log"
	"strings"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/vectors"
)

var (
	region     string
	bucketName string
	accountId  string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the vector bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the vector bucket.")
	flag.StringVar(&accountId, "account-id", "", "The ID of the vector account.")
}

func main() {
	flag.Parse()
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	if len(accountId) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, accountId required")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region).WithAccountId(accountId)

	client := vectors.NewVectorsClient(cfg)

	request := &vectors.PutBucketPolicyRequest{
		Bucket: oss.Ptr(bucketName),
		Body: strings.NewReader(`{
			   "Version":"1",
			   "Statement":[
			   {
				 "Action":[
				   "oss:PutVectors",
				   "oss:GetVectors"
				],
				"Effect":"Deny",
				"Principal":["1234567890"],
				"Resource":["acs:ossvector:cn-hangzhou:1234567890:*"]
			   }
			  ]
			 }`),
	}
	result, err := client.PutBucketPolicy(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to put vector bucket policy %v", err)
	}

	log.Printf("put vector bucket policy result:%#v\n", result)
}

API

PutBucketPolicy API を呼び出して、ベクターバケットのバケットポリシーを設定します。

RAM ポリシー

RAM コンソール (RAM コンソール) を使用して、RAM ユーザーまたはロールに対してベクターバケットの権限を RAM ポリシーで設定できます。これらのポリシーは、インデックスレベルでのリソース粒度をサポートします。

シナリオ 1:特定のベクトルインデックスに対する RAM ユーザーの完全な権限を付与する

{                                                                           
   "Version": "1",                                                             
   "Statement": [                                                              
     {                                                                         
       "Effect": "Allow",                                                      
       "Action": "*",                                                      
       "Resource": [                                                           
         "acs:ossvector:*:*:my-vector-bucket/my-index"                         
       ]                                                                       
     }                                                                         
   ]                                                                           
 } 

シナリオ 2:ベクターバケットに対する RAM ユーザーの完全制御を付与する

  {                                                                             
    "Version": "1",                                                             
    "Statement": [                                                              
      {                                                                         
        "Effect": "Allow",                                                      
        "Action": "*",                                                      
        "Resource": [                                                           
          "acs:ossvector:*:*:my-vector-bucket",                                 
          "acs:ossvector:*:*:my-vector-bucket/*"                                
        ]                                                                       
      }                                                                         
    ]                                                                           
  } 

ログ管理

アクセスログを有効化すると、アクセス記録が指定された OSS バケットに保存されます。これらのログは、セキュリティ監査、パフォーマンス分析、トラブルシューティングに活用できます。

コンソール

  1. ベクターバケットページで、対象のバケットをクリックします。左側のナビゲーションウィンドウから、ログ管理 > ログ記録 を選択します。

  2. ログ記録 スイッチをオンにして、以下のパラメーターを設定します:

    • 送信先ストレージ場所:ログファイルを保存するバケットを選択します。このバケットは、ベクターバケットと同じリージョンにある必要があります。

    • ログプレフィックス:ログファイルのディレクトリおよびプレフィックスを設定します(例:MyLog-)。

    • 権限付与ロール:デフォルトのログ記録ロール AliyunOSSLoggingDefaultRole を使用するか、カスタムロールを選択します。

ossutil

以下の例では、examplebucket という名前のバケットに対してロギングを有効にする方法を示します。ログファイルのプレフィックスは MyLog- で、アクセスログは examplebucket バケットに保存されます。

  • JSON 構成ファイルを使用できます。`bucket-logging-status.json` ファイルには次の内容が含まれています:

    {
      "BucketLoggingStatus": {
        "LoggingEnabled": {
          "TargetBucket": "examplebucket",
          "TargetPrefix": "MyLog-",
          "LoggingRole": "AliyunOSSLoggingDefaultRole"
        }
      }
    }

    コマンド例:

    ossutil vectors-api put-bucket-logging --bucket examplebucket --bucket-logging-status file://bucket-logging-status.json
  • JSON 構成パラメーターを使用できます。コマンド例:

    ossutil vectors-api put-bucket-logging --bucket examplebucket --bucket-logging-status "{\"BucketLoggingStatus\":{\"LoggingEnabled\":{\"TargetBucket\":\"examplebucket\",\"TargetPrefix\":\"MyLog-\",\"LoggingRole\":\"AliyunOSSLoggingDefaultRole\"}}}"

SDK

Python

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.vectors as oss_vectors

parser = argparse.ArgumentParser(description="Sample for enabling log storage for a vector bucket")
parser.add_argument('--region', help='The region where the bucket is located.', required=True)
parser.add_argument('--bucket', help='The bucket name.', required=True)
parser.add_argument('--endpoint', help='The endpoint to access OSS.')
parser.add_argument('--account_id', help='The account ID.', required=True)
parser.add_argument('--target_bucket', help='The destination bucket for storing logs.', required=True)

def main():
    args = parser.parse_args()

    # Loading credentials values from the environment variables
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Using the SDK's default configuration
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    cfg.account_id = args.account_id
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    vector_client = oss_vectors.Client(cfg)

    result = vector_client.put_bucket_logging(oss_vectors.models.PutBucketLoggingRequest(
        bucket=args.bucket,
        bucket_logging_status=oss_vectors.models.BucketLoggingStatus(
            logging_enabled=oss_vectors.models.LoggingEnabled(
                target_bucket=args.target_bucket,
                target_prefix='log-prefix',
                logging_role='AliyunOSSLoggingDefaultRole'
            )
        )
    ))

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
    )

if __name__ == "__main__":
    main()

Go

package main

import (
	"context"
	"flag"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/vectors"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
	accountId  string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the vector bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the vector bucket.")
	flag.StringVar(&accountId, "account-id", "", "The ID of the vector account.")
}

func main() {
	flag.Parse()
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	if len(accountId) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, accountId required")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region).WithAccountId(accountId)

	client := vectors.NewVectorsClient(cfg)

	request := &vectors.PutBucketLoggingRequest{
		Bucket: oss.Ptr(bucketName),
		BucketLoggingStatus: &vectors.BucketLoggingStatus{
			&vectors.LoggingEnabled{
				TargetBucket: oss.Ptr("TargetBucket"),
				TargetPrefix: oss.Ptr("TargetPrefix"),
				LoggingRole:  oss.Ptr("AliyunOSSLoggingDefaultRole"),
			},
		},
	}
	result, err := client.PutBucketLogging(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to put vector bucket logging %v", err)
	}

	log.Printf("put vector bucket logging result:%#v\n", result)
}

API

PutBucketLogging API を呼び出して、ベクターバケットのログ記録を有効化します。

ログファイルの命名規則

保存されるログファイルの命名規則は以下のとおりです:

<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString

フィールド

説明

TargetPrefix

ログファイル名のプレフィックスです。

SourceBucket

アクセスログを生成するソースバケットの名前です。

YYYY-mm-DD-HH-MM-SS

ログの時間パーティションです。左から順に年、月、日、時、分、秒を表します。保存されるログは時間単位で整理されます。たとえば、HH が `01` の場合、ログファイルには `01:00:00` から `01:59:59` までのログ情報が含まれます。MM および SS はいずれも `00` として設定されます。

UniqueString

ログファイルを一意に識別するシステム生成の文字列です。

ログ形式および例

  • ログ形式

    OSS アクセスログには、リクエスターおよびアクセスされたリソースに関する情報が含まれます。形式は以下のとおりです:

    RemoteIP Reserved Reserved Time "RequestURL" HTTPStatus SentBytes RequestTime "Referer" "UserAgent" "HostName" "RequestID" "LoggingFlag" "RequesterAliyunID" "Operation" "BucketName" "ObjectName" ObjectSize ServerCostTime "ErrorCode" RequestLength "UserID" DeltaDataSize "SyncRequest" "StorageClass" "TargetStorageClass" "TransmissionAccelerationAccessPoint" "AccessKeyID" "BucketARN"

    フィールド

    説明

    RemoteIP

    192.168.0.1

    リクエスターの IP アドレスです。

    Reserved

    -

    予約済みフィールドです。値は固定で - です。

    Reserved

    -

    予約済みフィールドです。値は固定で - です。

    Time

    03/Jan/2021:14:59:49 +0800

    OSS がリクエストを受信した時刻です。

    RequestURL

    GET /example.jpg HTTP/1.0

    クエリ文字列を含むリクエスト URL です。

    OSS は、x- で始まるクエリ文字列パラメーターを無視しますが、これらのパラメーターはアクセスログに記録されます。x- で始まるクエリ文字列パラメーターを使用してリクエストにマーキングし、そのマーキングを使って対応するログをすばやく検索できます。

    HTTPStatus

    200

    OSS が返す HTTP ステータスコードです。

    SentBytes

    999131

    リクエストによって発生したダウンストリームトラフィック(バイト単位)です。

    RequestTime

    127

    リクエスト完了までに要した時間(ミリ秒単位)です。

    Referer

    http://www.aliyun.com/product/oss

    HTTP Referer です。

    UserAgent

    curl/7.15.5

    HTTP リクエストの User-Agent ヘッダーです。

    HostName

    examplebucket.oss-cn-hangzhou.aliyuncs.com

    リクエストがアクセスした宛先ドメイン名です。

    RequestID

    5FF16B65F05BC932307A3C3C

    リクエスト ID です。

    LoggingFlag

    true

    ログ記録が有効かどうかを示します。有効な値は以下のとおりです:

    • true:有効。

    • false:無効。

    RequesterAliyunID

    16571836914537****

    リクエスターのユーザー ID です。- の場合は、匿名アクセスを意味します。

    Operation

    GetObject

    リクエストの種類です。

    BucketName

    examplebucket

    宛先バケットの名前です。

    ObjectName

    example.jpg

    宛先オブジェクトの名前です。

    ObjectSize

    999131

    宛先オブジェクトのサイズ(バイト単位)です。

    ServerCostTime

    88

    OSS がリクエストを処理するのに要した時間(ミリ秒単位)です。

    ErrorCode

    -

    OSS が返すエラーコードです。- の場合は、エラーコードが返されなかったことを意味します。

    RequestLength

    302

    リクエストの長さ(バイト単位)です。

    UserID

    16571836914537****

    バケット所有者の ID です。

    DeltaDataSize

    -

    オブジェクトサイズの変化量です。- の場合は、リクエストがオブジェクト書き込み操作を伴わないことを意味します。

    SyncRequest

    -

    リクエストの種類です。有効な値は以下のとおりです:

    • -:一般リクエスト。

    • cdn:CDN オリジンリクエスト。

    • lifecycle:ライフサイクルルールを通じて行われるデータダンプまたは削除リクエスト。

    StorageClass

    Standard

    宛先オブジェクトのストレージクラスです。有効な値は以下のとおりです:

    • Standard:標準。

    • IA:低頻度アクセス。

    • Archive:アーカイブストレージ。

    • コールドアーカイブ: コールドアーカイブ。

    • DeepCold Archive:ディープコールドアーカイブストレージ。

    • -:オブジェクトのストレージクラスが取得できませんでした。

    TargetStorageClass

    -

    ライフサイクルルールまたは CopyObject 操作によってオブジェクトのストレージクラスが変更されたかどうかを示します。有効な値は以下のとおりです:

    • Standard:ストレージクラスが「標準」に変更されました。

    • IA:ストレージクラスが「低頻度アクセス」に変更されました。

    • Archive:ストレージクラスが「アーカイブストレージ」に変更されました。

    • Cold Archive:ストレージクラスが「コールドアーカイブストレージ」に変更されました。

    • DeepCold Archive:ストレージクラスが「ディープコールドアーカイブストレージ」に変更されました。

    • -:ストレージクラス変換操作は関係ありません。

    TransmissionAccelerationAccessPoint

    -

    転送アクセラレーションドメイン名を介して宛先バケットにアクセスする際に使用されるアクセラレーションエンドポイントです。たとえば、リクエスターが中国(杭州)のエンドポイントを介して宛先バケットにアクセスする場合、値は cn-hangzhou になります。

    - の場合は、転送アクセラレーションドメイン名が使用されていないか、アクセラレーションエンドポイントが宛先バケットと同じリージョンであることを意味します。

    AccessKeyID

    LTAI****************

    リクエスターの AccessKey ID です。

    • リクエストがコンソールから開始された場合、ログフィールドには TMP で始まる一時的な AccessKey ID が表示されます。

    • リクエストが長期キーを使用するツールまたは SDK から開始された場合、ログフィールドには一般的な AccessKey ID が表示されます(例:LTAI****************)。

    • リクエストがセキュリティトークンサービス(STS)からの一時的アクセス認証情報を使用して開始された場合、STS で始まる一時的な AccessKey ID が表示されます。

    説明

    匿名リクエストの場合、AccessKey ID フィールドには - が表示されます。

    BucketArn

    acs:oss***************

    バケットのグローバルに一意なリソース記述子です。

  • ログの例

    192.168.0.1 - - [03/Jan/2021:14:59:49 +0800] "GET /example.jpg HTTP/1.0" 200 999131 127 "http://www.aliyun.com/product/oss" "curl/7.15.5" "examplebucket.oss-cn-hangzhou.aliyuncs.com" "5FF16B65F05BC932307A3C3C" "true" "16571836914537****" "GetObject" "examplebucket" "example.jpg" 999131 88 "-" 302 "16571836914537****" - "cdn" "standard" "-" "-" "LTAI****************" "acs:oss***************"

    ログファイルが指定された OSS バケットに保存された後は、Simple Log Service を使用して分析できます。分析を実行する前に、ログファイルを Simple Log Service にインポートする必要があります。データのインポート方法については、「OSS データのインポート」をご参照ください。Simple Log Service の分析機能について詳しくは、「クエリおよび分析の概要」をご参照ください。