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

文檔

使用訪問憑據(jù)訪問阿里云OpenAPI最佳實(shí)踐

更新時(shí)間:
一鍵部署

訪問憑據(jù)一旦發(fā)生泄露,會(huì)給云上資源和用戶業(yè)務(wù)帶來很大的安全隱患。本文為您介紹如何在不同的場(chǎng)景中安全使用訪問憑據(jù)訪問阿里云OpenAPI。

什么是訪問憑據(jù)

訪問憑據(jù)是指用戶證明其身份的一組信息。用戶通過開發(fā)工具(API、CLI、SDK、Terraform等)訪問阿里云時(shí),需要提供正確的訪問憑據(jù)才能驗(yàn)證身份。常見的訪問憑據(jù)類型:

  • AccessKey:訪問密鑰AccessKey(簡(jiǎn)稱AK)是阿里云提供給阿里云賬號(hào)(主賬號(hào))和RAM用戶(子賬號(hào))的永久訪問憑據(jù),一組由AccessKey ID和AccessKey Secret組成的密鑰對(duì)。更多信息,請(qǐng)參見創(chuàng)建AccessKey。

  • STS Token:安全令牌(STS Token)是阿里云提供給RAM角色的臨時(shí)訪問憑據(jù),可以自定義時(shí)效和訪問權(quán)限。更多信息,請(qǐng)參見什么是STS。

常見的訪問憑據(jù)泄露案例

  • 開發(fā)者直接將AK硬編碼在業(yè)務(wù)代碼中,有代碼倉(cāng)庫(kù)閱讀權(quán)限的開發(fā)者均能獲取到AK信息。開發(fā)者直接將業(yè)務(wù)代碼上傳到開源社區(qū)或代碼托管服務(wù),導(dǎo)致AK的進(jìn)一步泄露。

  • 用戶為了能夠讓自己的客戶端直接調(diào)用到OpenAPI,將AK寫到客戶端代碼中。攻擊者通過反編譯客戶端代碼,獲取到AK信息。

  • 開發(fā)者的技術(shù)文檔或者分享材料中包含AK信息。

  • 產(chǎn)品說明文檔中包含的樣例代碼含有AK信息。

  • 用戶無權(quán)限控制的接口中返回了訪問憑據(jù)信息。

訪問憑據(jù)的安全使用方案

訪問憑據(jù)的安全使用方案的主要思路:降低訪問憑據(jù)的暴露時(shí)間和暴露范圍。常見場(chǎng)景的訪問憑據(jù)安全使用方案如下表所示。

方案名稱

適用場(chǎng)景

容器實(shí)例角色扮演

如果您的應(yīng)用程序部署在阿里云ACK容器集群上,則可以基于RRSA(RAM Roles for Service Accounts)功能,在容器集群內(nèi)實(shí)現(xiàn)應(yīng)用隔離的RAM角色功能,各個(gè)應(yīng)用可以扮演獨(dú)立的RAM角色,訪問阿里云OpenAPI。

ECS實(shí)例角色扮演

如果您的應(yīng)用程序部署在阿里云ECS實(shí)例上,則可以通過ECS實(shí)例RAM(Resource Access Management)角色讓ECS實(shí)例扮演具有某些權(quán)限的角色,訪問阿里云OpenAPI。

員工使用STS Token進(jìn)行開發(fā)調(diào)試

針對(duì)研發(fā)、運(yùn)維、產(chǎn)品等職能員工,需要使用AccessKey進(jìn)行運(yùn)維、管理、調(diào)試等操作,建議通過角色SSO的方式,扮演其對(duì)應(yīng)職能的RAM角色,獲取STS Token。

函數(shù)計(jì)算使用STS Token

如果您在函數(shù)計(jì)算(FC)上部署的應(yīng)用程序需要訪問其他云資源,則可以通過函數(shù)計(jì)算RAM角色將FC函數(shù)和RAM角色關(guān)聯(lián),使用STS Token(Security Token Service)訪問云資源,解決永久憑據(jù)可能導(dǎo)致的安全風(fēng)險(xiǎn)問題。

配置系統(tǒng)環(huán)境變量

對(duì)于不適用以上方案的場(chǎng)景,建議您使用配置系統(tǒng)環(huán)境變量的方式,訪問阿里云OpenAPI。

容器實(shí)例角色扮演

前提條件

  • 適用于支持RAM的云服務(wù)。

  • RRSA功能目前僅支持1.22及以上版本的集群,即ACK集群基礎(chǔ)版ACK集群Pro版ACK Serverless集群基礎(chǔ)版ACK Serverless集群Pro版

  • 使用V2.0版本的阿里云SDK。

  • 自建網(wǎng)關(guān)類產(chǎn)品的自研SDK無法使用。

原理介紹

基于RRSA功能,您可以在集群內(nèi)實(shí)現(xiàn)Pod級(jí)別隔離的應(yīng)用關(guān)聯(lián)RAM角色功能。各個(gè)應(yīng)用可以扮演獨(dú)立的RAM角色并使用獲取的臨時(shí)憑證訪問云資源,從而實(shí)現(xiàn)應(yīng)用RAM權(quán)限最小化以及無AccessKey訪問阿里云OpenAPI避免AccessKey泄露的需求。

3

從用戶側(cè)視角來看,RRSA功能的工作流程如下。

  1. 用戶提交使用了服務(wù)賬戶令牌卷投影功能的應(yīng)用Pod。

  2. 集群將為該應(yīng)用Pod創(chuàng)建和掛載相應(yīng)的服務(wù)賬戶OIDC Token文件。

  3. Pod內(nèi)程序使用掛載的OIDC Token文件訪問STS服務(wù)的AssumeRoleWithOIDC接口,獲取扮演指定RAM角色的臨時(shí)憑證。

    說明
    • 請(qǐng)?zhí)崆靶薷腞AM角色配置,允許Pod使用的服務(wù)賬戶扮演該RAM角色。更多信息,請(qǐng)參見AssumeRoleWithOIDC。

    • 從文件中讀取的OIDC Token是一個(gè)臨時(shí)Token,建議應(yīng)用程序每次在使用時(shí)都從文件中讀取最新的Token,集群會(huì)在Token過期前更新替換文件內(nèi)已有的Token。

  4. Pod內(nèi)程序使用獲取到的臨時(shí)憑證訪問云資源OpenAPI。

配置方法

  • ACK容器集群開啟RRAS功能。詳細(xì)信息,請(qǐng)參見啟用RRSA功能。

  • ACK容器集群使用RRAS功能。詳細(xì)信息,請(qǐng)參見使用RRSA功能

代碼示例

目前,阿里云V2.0 SDK已經(jīng)內(nèi)置了支持使用RRSA OIDC Token進(jìn)行OpenAPI認(rèn)證的功能,所有基于V2.0 SDK生成并且支持STS Token認(rèn)證的云產(chǎn)品SDK都將默認(rèn)支持RRSA OIDC Token認(rèn)證。支持此功能的SDK版本信息和參考代碼如下。

編程語言

支持認(rèn)證的SDK版本

使用示例

Go

Alibaba Cloud Credentials for Go 1.2.6及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn

Go SDK使用示例

Java

Alibaba Cloud Credentials for Java 0.2.10及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn

Java SDK使用示例

Python 3

Alibaba Cloud Credentials for Python 0.3.1及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn。

Python 3 SDK使用示例

Node.js和TypeScript

Alibaba Cloud Credentials for TypeScript/Node.js 2.2.6及以上版本。更多信息,請(qǐng)參考方式六:使用OIDCRoleArn

Node.js和TypeScript使用示例

ECS實(shí)例角色扮演

前提條件

  • 適用于支持阿里云RAM的云服務(wù)。

  • 使用V2.0版本的阿里云SDK。

  • 自建網(wǎng)關(guān)類產(chǎn)品的自研SDK無法使用。

原理介紹

實(shí)例RAM角色允許您將一個(gè)角色關(guān)聯(lián)到ECS實(shí)例,在ECS實(shí)例內(nèi)部基于STS(Security Token Service)臨時(shí)憑證訪問其他云產(chǎn)品的API,臨時(shí)憑證將周期性更新。既可以保證云賬號(hào)AccessKey的安全性,也可以借助訪問控制RAM實(shí)現(xiàn)精細(xì)化控制和權(quán)限管理。

1

工作流程如下:

  1. 應(yīng)用程序訪問ECS實(shí)例元數(shù)據(jù)獲取STS臨時(shí)憑證。詳細(xì)信息,請(qǐng)參見ECS實(shí)例元數(shù)據(jù)概述

  2. 使用STS臨時(shí)憑證訪問云資源。詳細(xì)信息,請(qǐng)參見什么是STS

配置方法

為ECS實(shí)例授予RAM角色。詳細(xì)信息,請(qǐng)參見通過ECS實(shí)例RAM角色授權(quán)ECS訪問其他云服務(wù)。

示例代碼

Alibaba Cloud Credentials是阿里云為阿里云開發(fā)者用戶提供身份憑證管理工具,使用Credentials工具可以為您提供更加便捷的方式使用ECS實(shí)例角色扮演功能,以調(diào)用云服務(wù)器ECS的DescribeRegions接口為例,參考代碼如下。

編程語言

使用示例

Go

Go語言代碼示例

Java

Java語言代碼示例

Python

Python語言代碼示例

PHP

PHP語言代碼示例

Node.js

Node.js語言代碼示例

.NET

.NET語言代碼示例

員工使用STS Token進(jìn)行開發(fā)調(diào)試

場(chǎng)景描述

針對(duì)研發(fā)、運(yùn)維、產(chǎn)品等職能員工,需要使用AccessKey進(jìn)行運(yùn)維、管理、調(diào)試等操作,建議通過角色SSO的方式,扮演其對(duì)應(yīng)職能的RAM角色,獲取STS Token。

配置方法

函數(shù)計(jì)算使用STS Token

場(chǎng)景描述

客戶在FC函數(shù)上部署的應(yīng)用程序需要訪問其他云資源,傳統(tǒng)的方式是客戶將RAM用戶的AK(Access Key)固化在函數(shù)中,如果將AK寫在配置文件中,容易造成AK泄露,維護(hù)困難等問題。FC函數(shù)RAM角色通過將FC函數(shù)和RAM角色關(guān)聯(lián),使用STS Token(Security Token Service)訪問云資源,解決永久憑證可能導(dǎo)致的安全風(fēng)險(xiǎn)問題。

方案架構(gòu)

本方案通過FC函數(shù)角色實(shí)現(xiàn)臨時(shí)憑證的獲取和使用。該架構(gòu)和流程通過動(dòng)態(tài)管理和臨時(shí)授予訪問權(quán)限,避免了長(zhǎng)期暴露AK的風(fēng)險(xiǎn),提高了系統(tǒng)的安全性和靈活性。管理員僅需一次性配置角色和權(quán)限,后續(xù)函數(shù)在運(yùn)行時(shí)即可動(dòng)態(tài)獲取和使用臨時(shí)憑證,簡(jiǎn)化了運(yùn)維管理工作。

管理員創(chuàng)建一個(gè)受信給函數(shù)計(jì)算的Role(角色),并對(duì)該角色授予相應(yīng)的權(quán)限。角色權(quán)限包含訪問需要的云資源的權(quán)限(圖中1)。管理員將創(chuàng)建好的角色配置到對(duì)應(yīng)的FC函數(shù)上,使函數(shù)與角色關(guān)聯(lián)(圖中2)。客戶應(yīng)用程序從函數(shù)上下文中獲取臨時(shí)安全憑證(STS Token)(圖中3),該過程中函數(shù)計(jì)算會(huì)使用云服務(wù)的身份調(diào)用AssumeRole接口,從RAM/STS服務(wù)獲取STS Token(圖中i)。 客戶應(yīng)用程序使用獲取到的STS Token來調(diào)用目標(biāo)云資源服務(wù)的API(圖中4)。資源服務(wù)API處理請(qǐng)求并返回訪問結(jié)果,客戶端應(yīng)用程序接收到返回的結(jié)果后完成相應(yīng)的業(yè)務(wù)邏輯。

image

配置方法

具體操作,請(qǐng)參見通過FC函數(shù)角色實(shí)現(xiàn)臨時(shí)憑證的獲取和使用

配置系統(tǒng)環(huán)境變量

配置方法

配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。

  • Linux和macOS系統(tǒng)配置方法

    執(zhí)行以下命令:

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>

    <access_key_id>需替換為已準(zhǔn)備好的AccessKey ID,<access_key_secret>替換為AccessKey Secret。

  • Windows系統(tǒng)配置方法

    1. 新建環(huán)境變量文件,添加環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,并寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。

    2. 重啟Windows系統(tǒng)。

阿里云SDK代碼示例

阿里云SDK支持通過定義ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET環(huán)境變量來創(chuàng)建默認(rèn)的訪問憑證。調(diào)用接口時(shí),程序直接訪問憑證,讀取您的訪問密鑰(即AccessKey)并自動(dòng)完成鑒權(quán)。以調(diào)用云服務(wù)器ECS的DescribeRegions接口為例,參考代碼如下。

編程語言

使用示例

Go

Go語言代碼示例

Java

Java語言代碼示例

Python

Python語言代碼示例

PHP

PHP語言代碼示例

Node.js

Node.js語言代碼示例

.NET

.NET語言代碼示例

通用代碼示例

對(duì)于自建網(wǎng)關(guān)類產(chǎn)品的自研SDK等無法使用阿里云SDK的場(chǎng)景,以Java語言為例,可以采用下面的方式加載環(huán)境變量。

import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;

public class DemoTest {
    public static void main(String[] args) throws Exception{
        Config config = new Config();
        // Which type of credential you want
        config.setType("access_key");
        // AccessKeyId of your ram user
        config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        // AccessKeySecret of your ram user
        config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        Client client = new Client(config);
    }
}

訪問憑據(jù)泄露處理方案

相關(guān)文檔

更多云上安全實(shí)踐,請(qǐng)參閱以下文檔: