選擇如何授權使用 Azure CLI 存取 Blob 資料

Azure 儲存體 Azure CLI 的擴充功能,可指定要如何授權 Blob 資料上的作業。 您可以用下列方式授權資料作業:

  • 使用 Azure Active Directory (Azure AD) 安全性主體。 Microsoft 建議使用Azure AD認證,以獲得出色的安全性與使用便利性。
  • 使用帳戶存取金鑰或共用存取簽名 (SAS) 權杖。

指定資料作業的授權方式

用於讀取和寫入 Blob 資料的 Azure CLI 命令包含選擇性 --auth-mode 參數。 指定此參數以指示如何授權資料作業:

  • 將參數 --auth-mode 設定 login 為使用建議Azure AD (使用) 。
  • 將參數 --auth-mode 設定為舊版 key 值,以嘗試取得要用於授權的帳戶便捷鍵。 如果您省略參數,Azure CLI 也會嘗試 --auth-mode 取回便捷鍵。

若要使用 --auth-mode 參數,請確定您已安裝 Azure CLI 版本 2.0.46 或更新版本。 執行 az --version 以檢查已安裝的版本。

注意

使用 Azure Resource Manager ReadOnly鎖定儲存空間帳戶時,不允許該儲存空間帳戶執行清單鍵作業。 清單鍵 是 POST 作業,當帳戶已配置 ReadOnly 鎖定時,會防止所有 POST 作業。 因此,當帳戶使用ReadOnly鎖定鎖定時,尚未擁有帳戶金鑰的使用者必須使用Azure AD來存取 Blob 資料。

重要

如果您省略參數 --auth-mode 或將其設定為 ,Azure CLI 會嘗試使用帳戶 key 便捷鍵進行授權。 在這種情況下,Microsoft 建議您在命令或環境變數中 AZURE_STORAGE_KEY便捷鍵 。 有關環境變數的資訊,請參閱標題為設定授權參數 的環境變數一節

如果您沒有提供存取鍵,Azure CLI 會嘗試Azure 儲存體資源提供者,以針對每個作業進行取回。 執行許多需要呼叫資源提供者的資料作業可能會導致節流。 有關資源提供者限制的資訊,請參閱資源提供者的擴充Azure 儲存體目標

使用認證Azure AD授權

當您以您的認證Azure AD Azure CLI 時,會返回 OAuth 2.0 存取權杖。 Azure CLI 會自動使用該權杖,針對 Blob 或佇列儲存空間授權後續的資料作業。 針對支援的操作,您不再需要使用命令傳遞帳戶金鑰或 SAS 權杖。

您可以透過 Azure RBAC Azure AD Azure 角色型存取控制,將 blob 資料的許可權指派給 (安全主體) 。 若要進一Azure 儲存體 Azure 角色,請參閱指派 Azure 角色以存取 Blob 資料

通話資料作業的許可權

Blob 資料Azure 儲存體支援擴充功能。 您可以呼叫哪些作業,取決於您所Azure AD Azure CLI 之安全主體的許可權。 容器的許可權Azure 儲存體 Azure RBAC 指派。 例如,如果您被指派了 Blob資料儲存體角色,您可以執行指令碼命令,從容器讀取資料。 如果您被指派了 Blob資料儲存體角色,您可以執行讀取、寫入或刪除容器或其中包含資料的指令碼命令。

有關容器上每個Azure 儲存體所需的許可權的詳細資訊,請參閱使用 OAuth 權杖呼叫儲存空間作業

範例:授權作業建立具有Azure AD容器

下列範例顯示如何使用您的帳號憑證,從 Azure CLI 建立Azure AD容器。 若要建立容器,您必須登錄 Azure CLI,而且您需要資源群組和儲存帳戶。 若要瞭解如何建立這些資源,請參閱快速入門:使用 Azure CLI 建立、下載和清單Blob。

  1. 建立容器之前,請指派儲存體Blob 資料參與者角色給自己。 即使您是帳戶擁有者,您也需要明確許可權才能針對儲存空間帳戶執行資料作業。 有關指派 Azure 角色詳細資訊,請參閱指派 Azure 角色以存取 Blob 資料

    重要

    Azure 角色指派可能需要幾分鐘的時間才能傳播。

  2. 撥打az 儲存容器建立命令,其參數設定為使用您的 Azure AD login 建立容器。 請記得將角括弧中的預留位置值取代為您自己的值:

    az storage container create \
        --account-name <storage-account> \
        --name sample-container \
        --auth-mode login
    

使用帳戶存取鍵授權

如果您擁有帳戶金鑰,您可以撥打任何Azure 儲存體操作。 一般而言,使用帳戶金鑰較不安全。 如果帳戶金鑰遭到入侵,您的帳戶中所有資料可能會遭到入侵。

下列範例顯示如何使用帳戶便捷鍵建立容器。 指定帳戶金鑰,並提供 --auth-mode 參數與 key 值:

az storage container create \
    --account-name <storage-account> \
    --name sample-container \
    --account-key <key>
    --auth-mode key

重要

使用 Azure Resource Manager ReadOnly鎖定儲存空間帳戶時,不允許該儲存空間帳戶執行清單鍵作業。 清單鍵 是 POST 作業,當帳戶已配置 ReadOnly 鎖定時,會防止所有 POST 作業。 因此,當帳戶使用ReadOnly鎖定鎖定時,使用者必須使用 Azure AD存取資料。

使用 SAS 權杖授權

如果您擁有 SAS 權杖,您可以呼叫 SAS 允許的資料作業。 下列範例顯示如何使用 SAS 權杖建立容器:

az storage container create \
    --account-name <storage-account> \
    --name sample-container \
    --sas-token <token>

設定授權參數的環境變數

您可以在環境變數中指定授權參數,以避免在資料作業的每一次Azure 儲存體包含這些參數。 下表說明可用的環境變數。

環境變數 描述
AZURE_STORAGE_ACCOUNT 儲存空間帳戶名稱。 此變數應該與儲存帳戶金鑰或 SAS 權杖一起使用。 如果兩者均不存在,Azure CLI 會嘗試使用已驗證的帳戶來Azure AD存取金鑰。 如果一次執行大量命令,Azure 儲存體資源提供者節流限制。 有關資源提供者限制的資訊,請參閱資源提供者的擴充Azure 儲存體目標
AZURE_STORAGE_KEY 儲存空間帳戶金鑰。 此變數必須與儲存空間帳戶名稱一起使用。
AZURE_STORAGE_CONNECTION_STRING 包含儲存帳戶金鑰或 SAS 權杖的連接字串。 此變數必須與儲存空間帳戶名稱一起使用。
AZURE_STORAGE_SAS_TOKEN 共用存取簽名 (SAS) 權杖。 此變數必須與儲存空間帳戶名稱一起使用。
AZURE_STORAGE_AUTH_MODE 執行命令的授權模式。 允許的值會 (loginkey) 。 如果您指定 login ,Azure CLI 會使用您的Azure AD認證來授權資料作業。 如果您指定舊版模式,Azure CLI 會嘗試查詢帳戶訪問金鑰,並授權使用金鑰 key 的命令。

下一個步驟