共用方式為


使用 AzCopy 和 Microsoft Entra ID 授與 Blob 和檔案的存取權

您可以使用 Microsoft Entra ID 為 AzCopy 提供授權認證。 如此一來,您不需要將共用存取簽章 (SAS) 權杖附加到每個命令。

首先,請驗證您的角色指派。 接著,選擇您想要授權的「安全性主體」類型。 使用者身分識別受控識別服務主體都是安全性主體的類型。

若要授與存取權,您需要設定記憶體內的環境變數。 接著執行任何 AzCopy 命令。 AzCopy 將擷取完成作業所需的驗證權杖。 作業完成之後,該權杖就會從記憶體中消失。

AzCopy 會使用您提供的認證來擷取 OAuth 權杖。 或者,AzCopy 可以使用作用中 Azure CLI 或 Azure PowerShell 工作階段的 OAuth 權杖。

如需 AzCopy 的詳細資訊,請參閱開始使用 AzCopy

驗證角色指派

您需要的授權層級取決於您打算上傳檔案或只要下載檔案。

如果您只想下載檔案,請確認已將儲存體 Blob 資料讀者角色 (Azure Blob 儲存體) 或儲存體檔案資料特殊權限讀者角色 (Azure 檔案儲存體) 指派給您的使用者身分識別、受控識別或服務主體。

如果您想要將檔案上傳至 Azure Blob 儲存體,則請確認已將下列其中一個角色指派給您的安全性主體。

如果您想要將檔案上傳至 Azure 檔案共用,請確認已將儲存體檔案資料特殊權限讀者指派給您的安全性主體。

這些角色可以指派給下列任一個範圍中的安全性主體:

  • 容器(檔案系統) 或檔案共用
  • 儲存體帳戶
  • 資源群組
  • 訂用帳戶

若要了解如何驗證和指派角色,請參閱指派 Azure 角色以存取 Blob 資料 (Blob 儲存體),或選擇如何在 Azure 入口網站授權存取檔案資料 (Azure 檔案儲存體)。

注意

請記住,Azure 角色指派最多可能需要五分鐘的時間來傳播。

如果您的安全性主體已新增至目標容器或目錄的存取控制清單 (ACL) 中,就不需要將這其中一個角色指派給安全性主體。 在 ACL 中,您的安全性主體需要目標目錄的寫入權限,以及容器和每個父目錄的執行權限。

若要深入了解,請參閱 Azure Data Lake Storage 中的存取控制模型

使用 AzCopy 授權

AzCopy 會使用您提供的認證來授權安全性主體。

授權使用者身分識別

當您驗證使用者身分識別已獲得必要的授權層級之後,請輸入下列命令,然後按 ENTER 鍵。

export AZCOPY_AUTO_LOGIN_TYPE=DEVICE

接著,執行任何 azcopy 命令 (例如:azcopy list https://contoso.blob.core.windows.net)。

此命令傳回驗證碼和網站的 URL。 開啟網站,提供程式碼,然後選擇 [下一步] 按鈕。

建立容器

隨即會出現登入視窗。 在該視窗中,使用您的 Azure 帳戶認證登入 Azure 帳戶。 當您成功登入之後,就可完成此作業。

授權受控識別

如果您打算在不需使用者互動的情況下執行的指令碼內使用 AzCopy,且指令碼會從 Azure 虛擬機器 (VM) 執行,則這是絕佳選項。 使用此選項時,您不需要在 VM 上儲存任何認證。

您可以使用已在 VM 上啟用的全系統受控識別,或使用已指派給您 VM 之使用者指派的受控識別的用戶端識別碼、物件識別碼或資源識別碼,來登入您的帳戶。

若要深入了解如何啟用全系統受控識別,或建立使用者指派的受控識別,請參閱使用 Azure 入口網站在 VM 上設定 Azure 資源受控識別

使用全系統受控識別進行授權

首先,請確定您已在 VM 上啟用全系統受控識別。 請參閱系統指派的受控識別

輸入下列命令,然後按 ENTER 鍵。

export AZCOPY_AUTO_LOGIN_TYPE=MSI

接著,執行任何 azcopy 命令 (例如:azcopy list https://contoso.blob.core.windows.net)。

使用使用者指派的受控識別進行授權

首先,請確定您已在 VM 上啟用使用者指派的受控識別。 請參閱使用者指派的受控識別

輸入下列命令,然後按 ENTER 鍵。

export AZCOPY_AUTO_LOGIN_TYPE=MSI

接著,輸入下列任一個命令,然後按 ENTER 鍵。

export AZCOPY_MSI_CLIENT_ID=<client-id>

<client-id> 預留位置取代為使用者指派的受控識別的用戶端識別碼。

export AZCOPY_MSI_OBJECT_ID=<object-id>

<object-id> 預留位置取代為使用者指派的受控識別的物件識別碼。

export AZCOPY_MSI_RESOURCE_STRING=<resource-id>

<resource-id> 預留位置取代為使用者指派的受控識別的資源識別碼。

設定這些變數之後,您可以執行任何 azcopy 命令 (例如:azcopy list https://contoso.blob.core.windows.net)。

授權服務主體

如果您打算在不需使用者互動的情況下執行的指令碼內使用 AzCopy,特別是在內部部署執行時,這是絕佳選項。 如果您打算在 Azure 中執行的 VM 上執行 AzCopy,則受控服務識別更容易管理。 若要深入了解,請參閱此文章的授權受控識別一節。

您可以使用用戶端密碼或使用與您服務主體應用程式註冊相關聯之憑證的密碼,來登入您的帳戶。

若要深入了解如何建立服務主體,請參閱操作說明:使用入口網站來建立可存取資源的 Microsoft Entra 應用程式和服務主體

若要深入了解服務主體的一般資訊,請參閱 Microsoft Entra ID 中的應用程式和服務主體物件

使用用戶端密碼來授權服務主體

輸入下列命令,然後按 ENTER 鍵。

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CLIENT_SECRET=<client-secret>
export AZCOPY_TENANT_ID=<tenant-id>

<application-id> 預留位置取代為您服務主體應用程式註冊的應用程式識別碼。 將 <client-secret> 預留位置取代為用戶端密碼。 將 <tenant-id> 預留位置取代為儲存體帳戶所屬組織的租用戶識別碼。 若要尋找租使用者標識碼,請在 Azure 入口網站 中選取 [租用戶屬性>租用戶標識符]。

注意

請考慮使用提示來收集使用者的密碼。 如此一來,您的密碼就不會出現在命令歷程記錄中。

接著,執行任何 azcopy 命令 (例如:azcopy list https://contoso.blob.core.windows.net)。

使用憑證來授權服務主體

如果您習慣使用自己的認證進行授權,您可以將憑證上傳至您的應用程式註冊,然後使用該憑證來登入。

除了將憑證上傳至您的應用程式註冊之外,您還需要將憑證複本儲存至將執行 AzCopy 的機器或 VM。 此憑證複本應該是 .PFX 或 .PEM 格式,而且必須包括私密金鑰。 私密金鑰應受密碼保護。 如果您使用 Windows,而且您的憑證只存在於憑證存放區中,請務必將該憑證匯出至 PFX 檔案 (包括私密金鑰)。 如需指導方針,請參閱 Export-PfxCertificate

輸入下列命令,然後按 ENTER 鍵。

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CERT_PATH=<path-to-certificate-file>
export AZCOPY_SPA_CERT_PASSWORD=<certificate-password>
export AZCOPY_TENANT_ID=<tenant-id>

<application-id> 預留位置取代為您服務主體應用程式註冊的應用程式識別碼。 將 <path-to-certificate-file> 預留位置取代為憑證檔案的相對或絕對路徑。 AzCopy 會儲存此憑證的路徑,但不會儲存憑證的複本,因此,請務必將該憑證保留在原處。 將 <certificate-password> 預留位置取代為憑證的密碼。 將 <tenant-id> 預留位置取代為儲存體帳戶所屬組織的租用戶識別碼。 若要尋找租使用者標識碼,請在 Azure 入口網站 中選取 [租用戶屬性>租用戶標識符]。

注意

請考慮使用提示來收集使用者的密碼。 如此一來,您的密碼就不會出現在命令歷程記錄中。

接著,執行任何 azcopy 命令 (例如:azcopy list https://contoso.blob.core.windows.net)。

使用 AzCopy 登入命令進行授權

除了使用記憶體內變數,您也可以使用 azcopy login 命令來授與存取權。

azcopy login 命令會擷取 OAuth 權杖,然後將該權杖放入您系統上的祕密存放區。 如果您的作業系統沒有任何祕密存放區 (例如 Linux keyring),azcopy login 命令將無法運作,因為沒有地方可放置權杖。

授權使用者身分識別 (azcopy login 命令)

當您驗證使用者身分識別已獲得必要的授權層級之後,請開啟命令提示字元、輸入下列命令,然後按 ENTER 鍵。

azcopy login

如果您收到錯誤,請嘗試包括儲存體帳戶所屬組織的租用戶識別碼。

azcopy login --tenant-id=<tenant-id>

<tenant-id> 預留位置取代為儲存體帳戶所屬組織的租用戶識別碼。 若要尋找租使用者標識碼,請在 Azure 入口網站 中選取 [租用戶屬性>租用戶標識符]。

此命令傳回驗證碼和網站的 URL。 開啟網站,提供程式碼,然後選擇 [下一步] 按鈕。

建立容器

隨即會出現登入視窗。 在該視窗中,使用您的 Azure 帳戶認證登入 Azure 帳戶。 順利登入之後,您可以關閉瀏覽器視窗,然後開始使用 AzCopy。

使用全系統受控識別進行授權 (azcopy login 命令)

首先,請確定您已在 VM 上啟用全系統受控識別。 請參閱系統指派的受控識別

然後,在命令主控台中輸入下列命令,然後按 ENTER 鍵。

azcopy login --identity

使用使用者指派的受控識別進行授權 (azcopy login 命令)

首先,請確定您已在 VM 上啟用使用者指派的受控識別。 請參閱使用者指派的受控識別

然後,在命令主控台中輸入下列任一命令,然後按 ENTER 鍵。

azcopy login --identity --identity-client-id "<client-id>"

<client-id> 預留位置取代為使用者指派的受控識別的用戶端識別碼。

azcopy login --identity --identity-object-id "<object-id>"

<object-id> 預留位置取代為使用者指派的受控識別的物件識別碼。

azcopy login --identity --identity-resource-id "<resource-id>"

<resource-id> 預留位置取代為使用者指派的受控識別的資源識別碼。

授權服務主體 (azcopy login 命令)

執行指令碼之前,您至少必須以互動方式登入一次,才能為 AzCopy 提供服務主體的認證。 那些認證會儲存於安全且加密的檔案中,因此您的指令碼不需提供該敏感性資訊。

您可以使用用戶端密碼或使用與您服務主體應用程式註冊相關聯之憑證的密碼,來登入您的帳戶。

若要深入了解如何建立服務主體,請參閱操作說明:使用入口網站來建立可存取資源的 Microsoft Entra 應用程式和服務主體

使用用戶端密碼授權服務主體 (azcopy login 命令)

首先,請將 AZCOPY_SPA_CLIENT_SECRET 環境變數設定為您服務主體應用程式註冊的用戶端密碼。

注意

務必從命令提示字元中設定此值,而不是在作業系統的環境變數設定中設定。 如此一來,此值就只適用於目前的工作階段。

此範例示範如何在 PowerShell 中進行此作業。

$env:AZCOPY_SPA_CLIENT_SECRET="$(Read-Host -prompt "Enter key")"

注意

請考慮使用如此範例所示的提示。 如此一來,您的密碼就不會出現在主控台的命令歷程記錄中。

接下來,輸入下列命令,然後按 ENTER 鍵。

azcopy login --service-principal  --application-id application-id --tenant-id=tenant-id

<application-id> 預留位置取代為您服務主體應用程式註冊的應用程式識別碼。 將 <tenant-id> 預留位置取代為儲存體帳戶所屬組織的租用戶識別碼。 若要尋找租使用者標識碼,請在 Azure 入口網站 中選取 [租用戶屬性>租用戶標識符]。

使用憑證授權服務主體 (azcopy login 命令)

如果您習慣使用自己的認證進行授權,您可以將憑證上傳至您的應用程式註冊,然後使用該憑證來登入。

除了將憑證上傳至您的應用程式註冊之外,您還需要將憑證複本儲存至將執行 AzCopy 的機器或 VM。 此憑證複本應該是 .PFX 或 .PEM 格式,而且必須包括私密金鑰。 私密金鑰應受密碼保護。 如果您使用 Windows,而且您的憑證只存在於憑證存放區中,請務必將該憑證匯出至 PFX 檔案 (包括私密金鑰)。 如需指導方針,請參閱 Export-PfxCertificate

接下來,將 AZCOPY_SPA_CERT_PASSWORD 環境變數設定為憑證密碼。

注意

務必從命令提示字元中設定此值,而不是在作業系統的環境變數設定中設定。 如此一來,此值就只適用於目前的工作階段。

此範例示範如何在 PowerShell 中進行此工作。

$env:AZCOPY_SPA_CERT_PASSWORD="$(Read-Host -prompt "Enter key")"

接下來,輸入下列命令,然後按 ENTER 鍵。

azcopy login --service-principal --application-id application-id --certificate-path <path-to-certificate-file> --tenant-id=<tenant-id>

<application-id> 預留位置取代為您服務主體應用程式註冊的應用程式識別碼。 將 <path-to-certificate-file> 預留位置取代為憑證檔案的相對或絕對路徑。 AzCopy 會儲存此憑證的路徑,但不會儲存憑證的複本,因此,請務必將該憑證保留在原處。 將 <tenant-id> 預留位置取代為儲存體帳戶所屬組織的租用戶識別碼。 若要尋找租使用者標識碼,請在 Azure 入口網站 中選取 [租用戶屬性>租用戶標識符]。

注意

請考慮使用如此範例所示的提示。 如此一來,您的密碼就不會出現在主控台的命令歷程記錄中。

使用 Azure CLI 授權

如果您使用 Azure CLI 登入,則 Azure CLI 會取得 AzCopy 可用來授權作業的 OAuth 權杖。

若要讓 AzCopy 使用該權杖,請輸入下列命令,然後按 ENTER 鍵。

export AZCOPY_AUTO_LOGIN_TYPE=AZCLI

如需使用 Azure CLI 登入的詳細資訊,請參閱使用 Azure CLI 登入

使用 Azure PowerShell 授權

如果您使用 Azure PowerShell 登入,則 Azure PowerShell 會取得 AzCopy 可用來授權作業的 OAuth 權杖。

若要讓 AzCopy 使用該權杖,請輸入下列命令,然後按 ENTER 鍵。

$Env:AZCOPY_AUTO_LOGIN_TYPE="PSCRED"

如需關於使用 Azure PowerShell 登入的詳細資訊,請參閱使用 Azure PowerShell 登入

下一步

  • 如需 AzCopy 的詳細資訊,請參閱開始使用 AzCopy

  • 如果您有疑問、問題或一般意見反應,請在 GitHub (英文) 頁面上加以提交。