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

應(yīng)用程序接入憑據(jù)管家

應(yīng)用程序可以采用多種方式接入憑據(jù)管家,動態(tài)使用憑據(jù)。

接入方式

應(yīng)用程序可以使用多種開發(fā)工具接入憑據(jù)管家,不同開發(fā)工具說明及其應(yīng)用場景如下:

開發(fā)工具

說明

應(yīng)用場景

KMS SDK

KMS SDK幫助您構(gòu)造HTTPS請求,更好地使用KMS API。

  • 獲取憑據(jù)值頻率較低

  • 需要對憑據(jù)進行創(chuàng)建、刪除、增加新版本的憑據(jù)值等操作

憑據(jù)管家客戶端

憑據(jù)管家客戶端(SecretsManager Client)支持簡單地配置客戶端緩存頻率,并定時刷新存儲在憑據(jù)管家的憑據(jù)。

  • 在客戶端周期性或者頻繁獲取憑據(jù)值

  • 需要根據(jù)憑據(jù)值進行相關(guān)操作

憑據(jù)管家JDBC客戶端

憑據(jù)管家JDBC客戶端(SecretsManager JDBC)支持在JDBC連接中簡單地使用托管在憑據(jù)管家的憑據(jù)。

使用動態(tài)RDS憑據(jù)通過Java程序訪問數(shù)據(jù)庫

多種阿里云SDK的托管憑據(jù)插件

多種阿里云SDK的托管憑據(jù)插件是一個幫助您更有效通過動態(tài)RAM憑據(jù)快速使用阿里云服務(wù)的插件。

使用動態(tài)RAM憑據(jù)獲取阿里云訪問憑據(jù)訪問阿里云服務(wù)

憑據(jù)管家Kubernetes插件

憑據(jù)管家Kubernetes插件是一種以無代碼方式快速集成憑據(jù)管家能力的插件。

以無代碼的方式周期性更新配置

使用KMS SDK

以下以Java語言為例,為您介紹如何在應(yīng)用程序中使用動態(tài)RDS憑據(jù)。如果您使用的不是動態(tài)RDS憑據(jù)而是其他類型的憑據(jù),也可以使用此方法。

  1. 獲取密鑰管理服務(wù)Java SDK的依賴聲明。

    需要獲取的版本請參見SDK概覽。示例如下:

     <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.16</version>
      </dependency>
      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-kms</artifactId>
        <version>2.12.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.4</version>
      </dependency> 
  2. 應(yīng)用程序從憑據(jù)管家獲取數(shù)據(jù)庫賬號和口令,建立數(shù)據(jù)庫連接。

    說明

    阿里云賬號AccessKey擁有所有OpenAPI的訪問權(quán)限,建議您使用RAM用戶進行API訪問或日常運維。強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。

    本示例以將AccessKey配置在環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現(xiàn)身份驗證為例。

    示例代碼如下:

    package com.aliyun.kms.samples;
    
    import java.util.Map;
    import com.google.gson.Gson;
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.http.FormatType;
    import com.aliyuncs.http.MethodType;
    import com.aliyuncs.http.ProtocolType;
    import com.aliyuncs.kms.model.v20160120.GetSecretValueRequest;
    import com.aliyuncs.kms.model.v20160120.GetSecretValueResponse;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.profile.IClientProfile;
    import org.apache.commons.lang3.tuple.Pair;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class RdsSecretSampleCode {
    
        private static final String MYSQL_JDBC_DRIVER = "com.mysql.jdbc.Driver";
        private static final String MSSQL_JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    
        private static KmsClient kmsClient;
    
        static {
            kmsClient = KmsClient.getKMSClient("<regionId>", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        }
    
        static class KmsClient {
            private DefaultAcsClient acsClient;
    
            private KmsClient(DefaultAcsClient acsClient) {
                this.acsClient = acsClient;
            }
    
            private static KmsClient getKMSClient(String regionId, String accessKeyId, String accessKeySecret) {
                IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
                DefaultAcsClient client = new DefaultAcsClient(profile);
                return new KmsClient(client);
            }
        }
    
        // 通過憑據(jù)信息獲取MySQL鏈接。
        public static Connection getMySQLConnectionBySecret(String secretName, String jdbcUrl) throws ClassNotFoundException, SQLException, ClientException {
            Class.forName(MYSQL_JDBC_DRIVER);
            Pair<String, String> userAndPasswordPair = getUserAndPasswordPair(secretName);
            return DriverManager.getConnection(jdbcUrl, userAndPasswordPair.getKey(), userAndPasswordPair.getValue());
        }
    
        // 通過憑據(jù)信息獲取MSSQL鏈接。
        public static Connection getMSSQLConnectionBySecret(String secretName, String jdbcUrl) throws ClassNotFoundException, SQLException, ClientException {
            Class.forName(MSSQL_JDBC_DRIVER);
            Pair<String, String> userAndPasswordPair = getUserAndPasswordPair(secretName);
            return DriverManager.getConnection(jdbcUrl, userAndPasswordPair.getKey(), userAndPasswordPair.getValue());
        }
    
        // 通過憑據(jù)信息獲取指定的數(shù)據(jù)庫賬號和口令。
        private static Pair<String, String> getUserAndPasswordPair(String secretName) throws ClientException {
            final GetSecretValueRequest request = new GetSecretValueRequest();
            request.setProtocol(ProtocolType.HTTPS);
            request.setAcceptFormat(FormatType.JSON);
            request.setMethod(MethodType.POST);
            request.setSecretName(secretName);
            GetSecretValueResponse response = kmsClient.acsClient.getAcsResponse(request);
            Map<String,String> map = new Gson().fromJson(response.getSecretData(), Map.class);
            return Pair.of(map.get("AccountName"), map.get("AccountPassword"));
        }
    }