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

RAM憑據插件

您在KMS托管RAM用戶的AccessKey后,可以安裝RAM憑據插件,在使用阿里云SDK時通過引用RAM憑據的名稱,獲取AccessKey完成API鑒權,無需關注AccessKey的具體信息或者是否被輪轉。本文介紹RAM憑據插件的工作原理、安裝和使用。

工作原理

RAM憑據插件根據憑據名稱,從KMS獲取RAM憑據值并緩存在應用程序的內存中。應用程序使用阿里云SDK時,通過RAM憑據插件本地緩存的AccessKey向云產品發起請求。

當由于憑據輪轉等原因導致RAM憑據插件本地緩存的AccessKey失效時,RAM憑據插件將立即向KMS重新獲取憑據并刷新本地緩存,并根據您設置的錯誤重試行為,通過最新獲取的RAM憑據重試云產品調用請求。RAM憑據插件默認依據云產品調用響應錯誤碼InvalidAccessKeyIdInvalidAccessKeyId.NotFound來判斷AccessKey無效。

支持的阿里云SDK

KMS為下表中的阿里云SDK提供了RAM憑據插件。

重要

RAM憑據插件需要針對各阿里云SDK分別開發,如果下表不能滿足您的要求,請使用憑據客戶端KMS實例SDK阿里云SDK。關于各SDK的介紹,請參見SDK參考。您也可以聯系技術支持人員反饋需求。

Java SDK(僅支持Java 8及以上版本)

阿里云SDK名稱

RAM憑據插件模塊名稱

說明

阿里云Java SDK(V1.0)

aliyun-java-sdk-managed-credentials-provider

僅支持V1.0版本, 不支持V2.0版本。V2.0版本請使用憑據客戶端KMS實例SDK阿里云SDK

OSS Java SDK

aliyun-oss-java-sdk-managed-credentials-provider

無。

消息隊列商業版 TCP協議Java SDK

ons-client-managed-credentials-provider

無。

Python SDK

阿里云SDK名稱

RAM憑據插件模塊名稱

說明

阿里云 Python SDK(V1.0)

aliyun-openapi-python-sdk-managed-credentials-provider

僅支持V1.0版本, 不支持V2.0版本。V2.0版本請使用憑據客戶端KMS實例SDK阿里云SDK

OSS Python SDK

aliyun-oss-python-sdk-managed-credentials-provider

無。

Go SDK

阿里云SDK名稱

RAM憑據插件模塊名稱

說明

阿里云 Go SDK(V1.0)

alibaba-cloud-sdk-go-managed-credentials-provider

僅支持V1.0版本, 不支持V2.0版本。V2.0版本請使用憑據客戶端KMS實例SDK阿里云SDK

OSS Go SDK

aliyun-oss-go-sdk-managed-credentials-provider

無。

身份認證方式

使用RAM憑據插件時支持如下兩種身份認證方式:

  • 應用接入點(AAP)的Client Key:可以通過KMS實例Endpoint獲取憑據值,也可以通過KMS服務Endpoint獲取憑據值。使用前您需要創建應用接入點(AAP)以及ClientKey。具體操作,請參見創建應用接入點

  • ECS實例RAM角色:通過KMS服務Endpoint調用OpenAPI。使用前您需要創建ECS實例RAM角色。具體操作,請參見通過ECS實例RAM角色授權ECS訪問其他云資源

重要

為了獲得更高QPS、更低時延,推薦您使用應用接入點(AAP)的Client Key,并通過KMS實例Endpoint獲取憑據值。

通過配置文件設置RAM憑據插件運行參數

RAM憑據插件僅支持通過配置文件方式,配置運行參數。您需要在應用程序的運行目錄中新增配置文件(managed_credentials_providers.properties),根據不同認證方式在配置文件中新增內容。

說明

如果您的應用程序無法自動讀取到managed_credentials_providers.properties文件,請參考代碼示例,通過在代碼中設置配置文件路徑的方式讀取。

  • (推薦)使用應用接入點(AAP)的Client Key,通過KMS實例Endpoint獲取憑據值。

    參數名稱為cache_client_dkms_config_info,采用JSON數組格式。您可配置多個KMS實例,以支持業務獲得更高標準的服務可用性保障和容災能力。根據Client Key憑證口令獲取方式不同,配置文件示例如下。

    • 方式一:通過文件獲取Client Key憑證口令

      cache_client_dkms_config_info=[{"regionId":"<your kms region>","endpoint":"<your kms endpoint>","passwordFromFilePath":"<your client key password file absolute path>","clientKeyFile":"<your client key file absolute path>","ignoreSslCerts":false,"caFilePath":"<your DKMS's CA certificate file absolute path>"}]

      配置示例

      cache_client_dkms_config_info=[{"regionId":ch-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    • 方式二:通過環境變量獲取Client Key憑證口令

      該方式您需要將Client Key文件的憑證口令配置到環境變量中,環境變量名稱即您在passwordFromEnvVariable中指定的名稱。

      cache_client_dkms_config_info=[{"regionId":"<your kms region>","endpoint":"<your kms endpoint>","passwordFromEnvVariable":"<your_password_env_variable>","clientKeyFile":"<your client key file absolute path>","ignoreSslCerts":false,"caFilePath":"<your DKMS's CA certificate file absolute path>"}]

    查看各配置項的詳細說明

    配置項

    配置項含義

    說明

    regionId

    KMS實例所在地域ID。

    具體的地域ID,請參見地域和接入地址

    endpoint

    KMS實例的域名地址,格式為{實例ID}.kms.aliyuncs.com

    在控制臺實例管理頁面,單擊目標KMS實例,在實例詳情頁面查看實例VPC地址,將https://去掉后即為KMS實例的域名地址。

    clientKeyFile

    Client Key文件(JSON格式)的絕對路徑或相對路徑。

    • Client Key文件:在應用接入點AAP中創建Client Key時下載的應用身份憑證內容(ClientKeyContent),下載后文件名默認為ClientKey_******.json。

    • 憑證口令:在應用接入點AAP中創建Client Key時保存的憑證口令(ClientKeyPassword)

    重要

    Client Key文件和憑證口令是一一對應的,僅支持您在創建Client Key時獲取。如果您在創建時未保存,則需要在應用接入點AAP中重新創建Client Key。更多詳細內容,請參見創建應用接入點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從文件中獲取憑證口令,取值為文件的絕對路徑或相對路徑。您需要將憑證口令保存到文件中。

    • passwordFromEnvVariable:從環境變量獲取憑證口令,取值為環境變量名稱。您需要將憑證口令配置到環境變量中。

    ignoreSslCerts

    是否忽略KMS實例SSL證書的有效性檢查。KMS實例內置SSL證書,使用SSL/TLS協議用于身份驗證和加密通信。取值:

    • true:表示忽略,不檢查KMS實例SSL證書的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS實例SSL證書的有效性。

    正式生產環境中,請將該值設置為false。

    caFilePath

    KMS實例CA證書文件的絕對路徑或相對路徑。

    KMS實例CA證書,用于檢查KMS實例SSL證書的有效性。例如:檢查KMS實例SSL證書是否由對應的CA中心簽發、是否在有效期內、以及對應的域名是否為KMS實例的域名地址(endpoint)。

    實例管理頁面,單擊獲取實例CA證書區域的下載,下載KMS實例的CA證書。更多詳細內容,請參見獲取實例CA證書

  • 使用應用接入點(AAP)的Client Key,通過KMS服務Endpoint獲取憑據值。

    ## 訪問憑據類型。
    credentials_type=client_key
    
    ## 讀取client key的憑證口令:支持從環境變量或者文件讀取。
    ## 憑證口令:在應用接入點AAP中創建Client Key時保存的憑證口令(ClientKeyPassword)。
    client_key_password_from_env_variable=#your client key private key password environment variable name#
    client_key_password_from_file_path=#your client key private key password file path#
    
    # Client Key文件路徑。
    # Client Key文件:在應用接入點AAP中創建Client Key時下載的應用身份憑證內容(ClientKeyContent)。
    # 下載后文件名默認為ClientKey_******.json。
    client_key_private_key_path=#your client key private key file path#
    
    ## 關聯的KMS服務地域。
    cache_client_region_id=[{"regionId":"#regionId#"}]
  • 使用ECS實例RAM角色,通過KMS服務Endpoint獲取憑據值。

    credentials_type=ecs_ram_role
    ## ECS RAM Role名稱
    credentials_role_name=#credentials_role_name#
    ## 關聯的KMS服務地域
    cache_client_region_id=[{"regionId":"#regionId#"}]

代碼示例

Java

阿里云Java SDK(V1.0)

  1. 通過Maven的方式在項目中引入RAM憑據插件。

    <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-core</artifactId>
       <version>[4.3.2,5.0.0)</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core-managed-credentials-provider</artifactId>
      <version>[1.3.1,)</version>
    </dependency>
    說明

    建議您安裝最新版本的插件,更多信息,請參見原始代碼

  2. 獲得阿里云Java SDK客戶端并調用云服務。

    以調用ECS DescribeInstanceStatus為例:

    運行以下示例代碼時,請自行在pom.xml中添加云服務器aliyun-java-sdk-ecs依賴。

    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusRequest;
    import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusResponse;
    import com.aliyun.kms.secretsmanager.plugin.sdkcore.ProxyAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    
    public class AliyunSdkProviderSample {
        public static void main(String[]args) {
            String secretName="******";
            /*
              如果應用無法設置從classpath和可執行jar包中讀取默認配置文件(managed_credentials_providers.properties),
              或需自定義配置文件名稱時,可調用以下代碼設置自定義配置文件,并按以下順序讀取:
              1."your-config-name"配置絕對路徑+文件名稱,即讀取絕對路徑下的文件
              2."your-config-name"僅配置文件名稱,默認先讀取classpath下的配置文件,再讀取可執行jar包中的配置文件
            */
            //ConfigLoader.setConfigName("your-config-name");
            
            // 1. 獲取ACSClient by aliyun-java-sdk-managed-credentials-provider
            IAcsClient client = null;
            try {
                client = new ProxyAcsClient("<the regionId of ECS>", secretName);
            } catch (ClientException e) {
                 e.printStackTrace();
             }
            // 2. 調用ECS的OpenAPI實現業務功能
            DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest();
            DescribeInstanceStatusResponse response;
            try {
                 response = client.getAcsResponse(request);
            } catch (ServerException e) {
                 e.printStackTrace();
             } catch (ClientException e) {
                 e.printStackTrace();
             }
            // 3. 通過下面方法關閉客戶端來釋放插件關聯的資源 
            client.shutdown();
        }
    }

在OSS SDK中使用

  1. 通過Maven的方式在項目中引入RAM憑據插件。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.17</version>
    </dependency>
    <dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>[2.1.0,3.10.2]</version>
    <exclusions>
        <exclusion>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-kms</artifactId>
        </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-sdk-oss-managed-credentials-provider</artifactId>
    <version>[1.3.1,]</version>
    </dependency>
    說明

    建議您安裝最新版本的插件,更多信息,請參見原始代碼

  2. 獲得OSS Java SDK客戶端并調用云服務。

    以調用OSS listBuckets 為例:

    import com.aliyun.kms.secretsmanager.plugin.oss.ProxyOSSClientBuilder;
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.model.Bucket;
    
    import java.util.List;
    
    public class OssProviderSample {
    
        public static void main(String[] args) throws Exception {
            String secretName = "******";
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
            /*
              如果應用無法設置從classpath和可執行jar包中讀取默認配置文件(managed_credentials_providers.properties),
              或需自定義配置文件名稱時,可調用以下代碼設置自定義配置文件,并按以下順序讀取:
              1."your-config-name"配置絕對路徑+文件名稱,即讀取絕對路徑下的文件
              2."your-config-name"僅配置文件名稱,默認先讀取classpath下的配置文件,再讀取可執行jar包中的配置文件
            */
            //ConfigLoader.setConfigName("your-config-name");
    
            // 獲取Oss Client
            OSS ossClient = new ProxyOSSClientBuilder().build(endpoint, secretName);
    
    
            // 以下為業務方業務代碼:調用阿里云OSS服務實現業務功能
            List<Bucket> buckets = ossClient.listBuckets();
            for (Bucket bucket : buckets) {
                if (bucket != null) {
                    // ...
                }
            }
    
            // 通過下面方法關閉客戶端來釋放插件關聯的資源 
            ossClient.shutdown();
        }
    
    }

Python

阿里云Python SDK(V1.0)

  1. 執行pip命令以在項目中使用RAM憑據插件。

    pip install aliyun-openapi-python-sdk-managed-credentials-provider
    說明

    請確保插件版本為0.1.0及以上版本,更多信息,請參見原始代碼

  2. 獲得阿里云Python SDK客戶端并調用云服務。

    from aliyun_sdk_secretsmanager_sdk_core_plugin.proxy_acs_client import ProxyAcsClient
    
       region="cn-hangzhou"
       secretName="******"
    
       # 1. 獲取ACSClient
       client = ProxyAcsClient(region_id=region, secret_name=secretName )
    
       # 2. 業務方業務代碼:使用client調用阿里云服務,無需代碼改動。
       ...
    
       # 3. 通過下面方法關閉客戶端來釋放插件關聯的資源
       client.shutdown()

OSS Python SDK

  1. 執行pip命令以在項目中使用RAM憑據插件。

    pip install aliyun-oss-python-sdk-managed-credentials-provider
    說明

    請確保插件版本為0.1.0及以上版本,更多信息,請參見原始代碼

  2. 獲得阿里云OSS Python SDK客戶端并調用云服務。

    from aliyun_sdk_secretsmanager_oss_plugin.proxy_bucket import ProxyBucket
    from itertools import islice
    
    endpoint = "******"
    secret_name ="******"
    bucket_name = "******"
    bucket = ProxyBucket(secret_name=secret_name, endpoint=endpoint, bucket_name=bucket_name)
    objects = bucket.list_objects()
    for b in islice(objects.object_list, 10):
        print(b.key)
    bucket.shutdown()

Go

阿里云Go SDK(V1.0)

  1. 安裝阿里云Go SDK的RAM憑據插件。

    說明

    建議您安裝最新版本的插件,更多信息,請參見原始代碼

    • 方式一:使用go.mod管理您的依賴。

      go.mod文件中添加以下內容安裝依賴包。

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider vX.X.X
      )
    • 方式二:使用go get命令獲取遠程代碼包。

      go get -u github.com/aliyun/aliyun-sdk-mxanaged-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider
  2. 獲得阿里云Go SDK的客戶端并調用云服務。

    以調用ECS DescribeInstances 為例:

    package sample
    
    import (
        "fmt"
        "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
        sdkcoreprovider "github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        regionId := "cn-hangzhou"
    
        client, err := sdkcoreprovider.GetClient(&ecs.Client{}, regionId, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
        ecsClient := client.(*ecs.Client)
    
        request := ecs.CreateDescribeInstancesRequest()
        instancesResponse, err := ecsClient.DescribeInstances(request)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        for _, instance := range instancesResponse.Instances.Instance {
            // do something with instance
        }
    }

OSS Go SDK

  1. 安裝OSS Go SDK的RAM憑據插件。

    說明

    建議您安裝最新版本的插件,更多信息,請參見原始代碼

    • 方式一:使用go.mod管理您的依賴。

      go.mod文件中添加以下內容安裝依賴包。

      require (
          github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider vX.X.X
      )
    • 方式二:使用go get命令獲取遠程代碼包。

      go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider
  2. 獲得阿里云OSS Go SDK客戶端并調用云服務。

    package sample
    
    import (
        "fmt"
        ossprovider "aliyun-oss-go-sdk-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
    
        // 獲取Proxy Oss Client
        client, err := ossprovider.New(endpoint, secretName)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        result, err := client.ListBuckets()
        if err != nil {
            fmt.Println(err)
            return
        }
        for _, bucket := range result.Buckets {
            //業務代碼
        }
    
        // 關閉客戶端來釋放插件關聯的資源
        client.Shutdown()
    }