日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過STS方式訪問DataHub

阿里云臨時安全令牌(Security Token Service,STS)是阿里云提供的一種臨時訪問權限管理服務。通過STS服務,您所授權的身份主體(RAM用戶或RAM角色)可以獲取一個自定義時效和訪問權限的臨時訪問令牌。STS令牌持有者可以通過編程方式或者調用OpenAPI獲取臨時安全令牌來訪問DataHub。

示例代碼

  1. 添加Maven依賴

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-sts</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.4.6</version>
</dependency>
<dependency>
    <groupId>com.aliyun.datahub</groupId>
    <artifactId>aliyun-sdk-datahub</artifactId>
    <version>2.19.0-public</version>
</dependency>
  1. 參考示例:

  • 參數說明:

名稱

類型

是否必選

示例值

描述

RoleArn

String

acs:ram::123456789012****:role/adminrole

指定角色的ARN。格式:acs:ram::$accountID:role/$roleName

RoleSessionName

String

alice

用戶自定義參數。此參數用來區分不同的令牌,可用于用戶級別的訪問審計。

長度為2~32個字符,可包含英文字母、數字、英文句點(.)、at(@)、短劃線(-)和下劃線(_)。

Policy

String

{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}

權限策略。

生成STS Token時可以指定一個額外的權限策略,以進一步限制STS Token的權限。若不指定則返回的Token擁有指定角色的所有權限。

長度為1~1024個字符。

DurationSeconds

Long

3600

過期時間,單位為秒。

過期時間最小值為900秒,最大值為MaxSessionDuration設置的時間。默認值為3600秒。

注意

  • $accountID:阿里云賬號ID。您可以通過登錄阿里云控制臺,將鼠標懸停在右上角頭像的位置,單擊安全設置進行查看。

  • $roleName:RAM角色名稱。您可以通過登錄RAM控制臺,單擊左側導航欄的RAM角色管理,在RAM角色名稱列表下進行查看。

  • 您可以通過CreateRole或UpdateRole接口設置角色最大會話時間MaxSessionDuration。詳情請參見CreateRoleUpdateRole。

  • 您還需要在工程中配置相應的AccessKey ID和AccessKey Secret。

    datahub.endpoint=<yourEndpoint>
    datahub.accessId=<yourAccessKeyId>
    datahub.accessKey=<yourAccessKeySecret>
    重要

    阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。

    強烈建議不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。

import com.aliyun.datahub.client.DatahubClient;
import com.aliyun.datahub.client.DatahubClientBuilder;
import com.aliyun.datahub.client.auth.AliyunAccount;
import com.aliyun.datahub.client.common.DatahubConfig;
import com.aliyun.datahub.client.http.HttpConfig;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;

public class AssumeRole {

    //以華東1(杭州)region為例
    private static final String regionId = "cn-hangzhou";
    //子賬號AccessKey信息
		@Value("${datahub.accessId}")
		String accessId;
		@Value("${datahub.accessKey}")
		String accessKey;
    //以賬號ID為198800131028****、roleName為admin為例
    private static final String roleArn = "acs:ram::198800131028****:role/admin";
    //sessionName:用戶自定義參數,用來區分不同的令牌
    private static final String sessionName = "alice";
    //以華東1(杭州)Region為例
    private static final String endpoint = "http://dh-cn-hangzhou.aliyuncs.com";

    public static void main(String[] args) {
        AssumeRoleResponse.Credentials token = AssumeRole.getToken();
        // 創建DataHubClient實例
        DatahubClient datahubClient = DatahubClientBuilder.newBuilder()
                .setDatahubConfig(
                        new DatahubConfig(endpoint,
                                new AliyunAccount(token.getAccessKeyId(), token.getAccessKeySecret(), token.getSecurityToken()
                                ), true))
                .setHttpConfig(new HttpConfig().setCompressType(HttpConfig.CompressType.LZ4)
                        .setConnTimeout(10000))
                .build();

        //初始化DataHubClient后即可訪問DataHub資源
    }

    /**
     * 生成臨時訪問令牌
     */
    private static AssumeRoleResponse.Credentials getToken() {
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessId, accessKey);
        IAcsClient client = new DefaultAcsClient(profile);
        //構造請求,設置參數。關于參數含義和設置方法,請查看 STS API參考。
        AssumeRoleRequest request = new AssumeRoleRequest();
        request.setRoleArn(roleArn);
        request.setRoleSessionName(sessionName);
        try {
            AssumeRoleResponse response = client.getAcsResponse(request);
            return response.getCredentials();
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }
        return null;
    }
}