全部產品
Search
文件中心

DataWorks:個人開發環境配置RAM角色

更新時間:Nov 28, 2024

當您在個人開發環境執行個體內訪問其他雲資源時,必須配置存取金鑰來驗證身份資訊。通過為個人開發環境執行個體關聯RAM角色,您可以在執行個體內基於STS臨時憑證訪問其他雲資源,無需再配置長期AccessKey,降低密鑰泄露的風險。本文為您介紹如何基於執行個體RAM角色擷取STS臨時訪問憑證。

背景資訊

執行個體RAM角色是一種可信實體為阿里雲服務的RAM角色,即允許雲端服務扮演的角色,用於解決跨服務訪問的問題。關於RAM角色的詳細說明,請參見什麼是RAM角色

基於執行個體RAM角色擷取臨時訪問憑證來驗證身份資訊和存取權限控制,具有以下優勢:

  • 安全保密

    無需在執行個體內管理認證,使用STS臨時訪問憑證替代長期AccessKey,降低密鑰泄露風險。

使用限制

一個個人開發環境執行個體現只能關聯一個RAM角色。

步驟一:為個人開發環境執行個體配置RAM角色

情境一:為個人開發環境執行個體授權DataWorks預設角色

使用Notebook,Python開發時時,可免除AccessKey ID和AccessKey Secret來訪問部分雲產品。

DataWorks預設角色僅擁有訪問MaxCompute、Hologres、EMR Serverless Spark、Flink、Pai的許可權。基於預設角色簽發的臨時訪問憑證,在訪問以上產品時,將擁有等同於個人開發環境所有者的許可權。

為執行個體授權DataWorks預設角色能夠讓您無需額外建立RAM角色,即可在執行個體內擷取一份可訪問基本開發資源、且無越權的臨時訪問憑證。

為執行個體授權DataWorks預設角色後,以下情境的使用者可以免配置AK:

  • 通過Notebook的SQL Cell訪問MaxCompute、Hologres、EMR Serverless Spark、Flink、Pai。

  • 通過ODPS SDK提交任務到執行個體所有者有執行許可權的MaxCompute專案中。

image

情境二:個人開發環境執行個體不關聯RAM角色

如果您的執行個體設定為工作空間公開可見,建議不要為執行個體關聯RAM角色,避免許可權泄露。您可以在建立執行個體或變更執行個體配置時,將進階資訊地區的執行個體RAM角色設定為不關聯角色

不關聯任何RAM角色時,可通過在代碼中配置AccessKey ID和AccessKey Secret的方式來訪問雲產品。

image

步驟二:基於執行個體RAM角色擷取臨時訪問憑證

您可在授權過RAM角色的個人開發環境執行個體中通過以下方式擷取臨時訪問憑證。

方式一:通過Credentials工具擷取

Credentials工具會調用執行個體本地的服務(執行個體建立時已自動注入)擷取STS臨時訪問憑證,該憑證會周期性更新。

通過Credentials工具擷取執行個體RAM角色的訪問憑證,需要執行如下命令安裝阿里雲Credentials工具(以Python為例)。

pip install alibabacloud_credentials

Credentials工具使用樣本如下,更多語言SDK樣本,請參見使用訪問憑據訪問阿里雲OpenAPI最佳實務

from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_credentials.models import Config as CredConfig

credentialsConfig = CredConfig(
	type='credentials_uri'   # 選填。若您未配置其他“預設憑據鏈”訪問方式,您無需再顯式指定,Credentials SDK會通過uri方式擷取臨時憑證
)
credentialsClient = CredClient(CredConfig)

方式二:直接存取個人開發環境本地服務擷取

在個人開發環境執行個體內,您可在終端執行如下命令,訪問本地自動注入的server直接擷取。

# 擷取執行個體RAM角色的臨時授權訪問憑證
curl $ALIBABA_CLOUD_CREDENTIALS_URI

返回樣本如下,其中:

  • SecurityToken:執行個體RAM角色的臨時Token。

  • Expiration:執行個體RAM角色的臨時授權訪問憑證的有效期間。

{
	"Code": "Success",
	"AccessKeyId": "STS.N*********7",
	"AccessKeySecret": "3***************d",
	"SecurityToken": "DFE32G*******"
	"Expiration": "2024-05-21T10:39:29Z"
}

方式三:直接存取執行個體本地內檔案擷取

您可在個人開發環境執行個體內訪問指定路徑的檔案,擷取執行個體RAM角色的臨時訪問憑證。該檔案所在的路徑為/mnt/.alibabacloud/credentials,檔案內容如下:

{
	"AccessKeyId": "STS.N*********7",
	"AccessKeySecret": "3***************d",
	"SecurityToken": "DFE32G*******"
	"Expiration": "2024-05-21T10:39:29Z"
}

步驟三:基於執行個體RAM角色訪問MaxCompute

  1. 執行如下命令,安裝Credentials工具和ODPS SDK。

    # 安裝credentials工具
    pip install alibabacloud_credentials
    # 安裝odps sdk
    pip install odps
  2. 使用執行個體RAM角色的臨時憑證訪問ODPS,並擷取指定專案的table列表。

    from alibabacloud_credentials import providers
    from odps.accounts import CredentialProviderAccount
    from odps import ODPS
    
    if __name__ == '__main__':
        account = CredentialProviderAccount(providers.DefaultCredentialsProvider())
        o = ODPS(
                 account=account,
                 project="{odps_project}", #需替換為您的project名稱
                 endpoint="{odps_endpoint}"#需替換為您的project所在region的endpoint
                )
    
        for t in o.list_tables():
            print(t)