Bucket Policy(Java SDK V2)

更新時間:
Copy as MD

通過 Bucket Policy,您可以授權其他使用者訪問您指定的向量Bucket。本文介紹如何使用 OSS Java SDK V2 設定、查看和刪除向量Bucket的授權策略(Bucket Policy)。

說明

說明:向量Bucket的 Bucket Policy 需通過向量用戶端(OSSVectorsClient)操作,並配置帳號 ID(accountId)。Java SDK V2 暫未提供向量 Bucket Policy 的強型別介面,以下樣本通過通用的 invokeOperation 調用。授權策略中的 Resource 使用向量專屬格式 acs:ossvector:{region}:{accountId}:*/*Action 使用向量操作(如 oss:PutVectorsoss:GetVectors)。

許可權說明

阿里雲帳號預設擁有全部許可權。RAM 使用者或 RAM 角色需通過 RAM Policy 或 Bucket Policy 授予以下操作許可權。

API

Action

說明

PutBucketPolicy

oss:PutBucketPolicy

設定向量Bucket的授權策略。

GetBucketPolicy

oss:GetBucketPolicy

查看向量Bucket的授權策略。

DeleteBucketPolicy

oss:DeleteBucketPolicy

刪除向量Bucket的授權策略。

設定授權策略

為向量Bucket設定授權策略。以下樣本拒絕指定帳號對該向量Bucket執行 PutVectorsGetVectors 操作。

import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;

public class PutBucketPolicySample {
    public static void main(String[] args) throws Exception {
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
        try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
                .region("cn-hangzhou")
                .accountId("1234567890")
                .credentialsProvider(provider)
                .build()) {
            String policy = "{\n"
                    + "  \"Version\": \"1\",\n"
                    + "  \"Statement\": [\n"
                    + "    {\n"
                    + "      \"Action\": [\"oss:PutVectors\", \"oss:GetVectors\"],\n"
                    + "      \"Effect\": \"Deny\",\n"
                    + "      \"Principal\": [\"1234567890\"],\n"
                    + "      \"Resource\": [\"acs:ossvector:cn-hangzhou:1234567890:*/*\"]\n"
                    + "    }\n"
                    + "  ]\n"
                    + "}";
            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");
            Map<String, String> parameters = new HashMap<>();
            parameters.put("policy", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("PutBucketPolicy")
                    .method("PUT")
                    .bucket("examplebucket")
                    .parameters(parameters)
                    .headers(headers)
                    .body(BinaryData.fromString(policy))
                    .build();
            OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
            System.out.println("status code: " + output.statusCode()
                    + ", request id: " + output.headers().get("x-oss-request-id"));
        }
    }
}

查看授權策略

查看向量Bucket當前的授權策略,策略內容包含在返回結果的 body 中。

import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;

public class GetBucketPolicySample {
    public static void main(String[] args) throws Exception {
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
        try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
                .region("cn-hangzhou")
                .accountId("1234567890")
                .credentialsProvider(provider)
                .build()) {
            Map<String, String> parameters = new HashMap<>();
            parameters.put("policy", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("GetBucketPolicy")
                    .method("GET")
                    .bucket("examplebucket")
                    .parameters(parameters)
                    .build();
            OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
            System.out.println("status code: " + output.statusCode()
                    + ", request id: " + output.headers().get("x-oss-request-id"));
        }
    }
}

刪除授權策略

刪除向量Bucket的授權策略。

import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;

public class DeleteBucketPolicySample {
    public static void main(String[] args) throws Exception {
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
        try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
                .region("cn-hangzhou")
                .accountId("1234567890")
                .credentialsProvider(provider)
                .build()) {
            Map<String, String> parameters = new HashMap<>();
            parameters.put("policy", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("DeleteBucketPolicy")
                    .method("DELETE")
                    .bucket("examplebucket")
                    .parameters(parameters)
                    .build();
            OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
            System.out.println("status code: " + output.statusCode()
                    + ", request id: " + output.headers().get("x-oss-request-id"));
        }
    }
}

相關文檔

  • 向量 Bucket Policy 的策略文法與 Action/Resource 取值,請參見 OSS Vectors 的存取控制文檔。