Bucket Policy(Java SDK V2)
通過 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:PutVectors、oss:GetVectors)。
許可權說明
阿里雲帳號預設擁有全部許可權。RAM 使用者或 RAM 角色需通過 RAM Policy 或 Bucket Policy 授予以下操作許可權。
API | Action | 說明 |
PutBucketPolicy | oss:PutBucketPolicy | 設定向量Bucket的授權策略。 |
GetBucketPolicy | oss:GetBucketPolicy | 查看向量Bucket的授權策略。 |
DeleteBucketPolicy | oss:DeleteBucketPolicy | 刪除向量Bucket的授權策略。 |
設定授權策略
為向量Bucket設定授權策略。以下樣本拒絕指定帳號對該向量Bucket執行 PutVectors、GetVectors 操作。
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 的存取控制文檔。