全部產品
Search
文件中心

Tablestore:配置訪問憑證

更新時間:Nov 12, 2024

使用Python SDK發起請求訪問Tablestore,您需要配置訪問憑證。阿里雲服務會通過訪問憑證驗證您的身份資訊和存取權限。您可以根據使用情境對認證和授權的要求,配置不同類型的訪問憑證。

前提條件

配置訪問憑證前,您需要完成安裝TablestorePython SDK的準備工作。具體操作,請參見安裝Python SDK

訪問憑證

訪問憑證選型

  • 臨時訪問憑證:對於需要高安全性的情境,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。

  • 長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。

    重要
    • 建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。

    • 當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。

臨時訪問憑證

當您準備臨時使用Python SDK訪問Tablestore服務時,您可以選擇以下方式配置臨時訪問憑證。

配置STS臨時訪問憑證

如果您需要在規定時間內訪問Tablestore,您可以通過STS服務頒發一個STS臨時訪問憑證。臨時訪問憑證無需透露您的RAM使用者密鑰,使Tablestore的訪問更加安全。

  1. 建立RAM使用者。具體操作,請參見建立RAM使用者

  2. 為RAM使用者授予 AliyunSTSAssumeRoleAccess許可權。具體操作,請參見為RAM使用者授權

  3. 建立RAM角色,並為RAM角色授予自訂權限原則。具體操作,請參見建立RAM角色為RAM角色授予自訂權限原則

  4. 使用RAM使用者扮演RAM角色擷取STS臨時訪問憑證。具體操作,請參見擷取STS臨時訪問憑證

  5. 配置STS臨時訪問憑證。

    環境變數
    1. 使用臨時身份憑證設定環境變數。

      Mac OS X/Linux/Unix
      export OTS_AK_ENV=<OTS_AK_ENV>
      export OTS_SK_ENV=<OTS_SK_ENV>
      export OTS_SESSION_TOKEN=<OTS_SESSION_TOKEN>
      Windows

      以管理員身份運行命令提示字元,執行以下命令。

      setx OTS_AK_ENV <OTS_AK_ENV> /m
      setx OTS_SK_ENV <OTS_SK_ENV> /m
      setx OTS_SESSION_TOKEN <OTS_SESSION_TOKEN> /m
      說明

      環境變數配置完成後,為確保新的設定被正確應用,您可能需要重啟相關的開發工具(IDE等)或服務。

    2. 通過環境變數來傳遞憑證資訊。

      # -*- coding: utf-8 -*-
      import os
      
      access_key_id = os.getenv("OTS_AK_ENV")
      access_key_secret = os.getenv("OTS_SK_ENV")
      sts_token = os.getenv("OTS_SESSION_TOKEN")
    靜態憑證

    您可以在代碼中使用變數來引用憑證,這些變數在運行時會被環境變數、設定檔或其他外部資料源中的實際憑證值填充。

    以下操作步驟以設定檔為例。

    1. 建立設定檔config.ini

      [configName]
      OTS_AK_ENV = <OTS_AK_ENV>
      OTS_SK_ENV = <OTS_SK_ENV>
      OTS_SESSION_TOKEN = <OTS_SESSION_TOKEN>
    2. 使用設定檔來傳遞憑證資訊。

      # -*- coding: utf-8 -*-
      import configparser
      
      # 讀取設定檔
      config = configparser.ConfigParser()
      # 假設config.ini位於指令碼同級目錄下
      config.read('config.ini')
      
      # 從設定檔中擷取Access Key ID和Access Key Secret
      access_key_id = config.get('configName', 'OTS_AK_ENV')
      access_key_secret = config.get('configName', 'OTS_SK_ENV')
      security_token = config.get('configName', 'OTS_SESSION_TOKEN')

使用Function Compute上下文中的Credentials

如果您的應用程式的函數部署運行在Function Compute中,您可以使用Function Compute上下文中的Credentials擷取臨時訪問憑證。

該方式底層實現是STS Token。Function Compute根據函數配置的角色,通過扮演服務角色,而擷取一個STS Token,然後通過上下文中的參數Credentials將STS Token傳遞給您的應用程式。該STS Token的有效期間為36小時,且不支援修改。函數的最大執行時間為24小時,因此,執行函數過程中,STS Token不會到期,您無需考慮重新整理問題。該方式無需您提供一個AK或STS Token,消除了手動維護AK或STS Token的風險。如何授予Function Compute訪問Tablestore的許可權,請參見授予Function Compute訪問其他雲端服務的許可權

  1. 使用Function Compute上下文中的Credentials擷取臨時訪問憑證。

    # -*- coding: utf-8 -*-
    
    def handler(event, context):
        # 擷取密鑰資訊,執行前,確保函數所在的服務配置了角色資訊,並且角色需要擁有Tablestore的許可權,建議直接使用AliyunFCDefaultRole角色
        creds = context.credentials
    
        access_key_id = creds.access_key_id
        access_key_secret = creds.access_key_secret
        security_token = creds.security_token
    
        # 後續操作...
    
        return 'success'

長期訪問憑證

如果您的應用程式部署運行在安全、穩定且不易受外部攻擊的環境中,需要長期使用Python SDK訪問您的Tablestore,您可以使用阿里雲帳號或RAM使用者的AK(Access Key ID、Access Key Secret)的方式訪問。如何擷取AK,請參見使用RAM使用者密鑰發起請求

警告

阿里雲帳號擁有資源的全部許可權,AK一旦泄露,會給系統帶來巨大風險,不建議使用。推薦使用最小化授權的RAM使用者的AK。

環境變數

  1. 使用AK設定環境變數。

    Mac OS X/Linux/Unix
    export OTS_AK_ENV=<OTS_AK_ENV>
    export OTS_SK_ENV=<OTS_SK_ENV>
    Windows

    以管理員身份運行命令提示字元,執行以下命令。

    setx OTS_AK_ENV <OTS_AK_ENV> /m
    setx OTS_SK_ENV <OTS_SK_ENV> /m
    說明

    環境變數配置完成後,為確保新的設定被正確應用,您可能需要重啟相關的開發工具(IDE等)或服務。

  2. 使用環境變數來傳遞憑證資訊。

    # -*- coding: utf-8 -*-
    import os
    
    access_key_id = os.getenv("OTS_AK_ENV")
    access_key_secret = os.getenv("OTS_SK_ENV")

靜態憑證

您可以在代碼中使用變數來引用憑證,這些變數在運行時會被環境變數、設定檔或其他外部資料源中的實際憑證值填充。

以下操作步驟以設定檔為例。

  1. 建立設定檔config.ini

    [configName]
    OTS_AK_ENV = <OTS_AK_ENV>
    OTS_SK_ENV = <OTS_SK_ENV>
  2. 使用設定檔來傳遞憑證資訊。

    # -*- coding: utf-8 -*-
    import configparser
    
    # 讀取設定檔
    config = configparser.ConfigParser()
    # 假設config.ini位於指令碼同級目錄下
    config.read('config.ini')
    
    # 從設定檔中擷取Access Key ID和Access Key Secret
    access_key_id = config.get('configName', 'OTS_AK_ENV')
    access_key_secret = config.get('configName', 'OTS_SK_ENV')

後續步驟

初始化憑證提供者後,您需要使用憑證提供者來建立OTSClient執行個體。詳情請參見初始化OTSClient