使用 SAS 令牌和 Azure CLI 部署专用 Resource Manager 模板

如果模板驻留在存储帐户中,你可以限制对该模板的访问,并在部署过程中提供共享访问签名 (SAS) 令牌。 本主题介绍如何将 Azure PowerShell 与 Resource Manager 模板配合使用在部署过程中提供 SAS 令牌。

将专用模板添加到存储帐户

可以将模板添加到存储帐户,并在部署过程中使用 SAS 令牌链接到这些模板。

Important

通过执行以下步骤,只有帐户所有者可以访问包含模板的 blob。 但是,如果为 blob 创建 SAS 令牌,则拥有该 URI 的任何人都可以访问 blob。 如果其他用户截获了该 URI,则此用户可以访问该模板。 使用 SAS 令牌是限制对模板的访问的好方法,但不应直接在模板中包括密码等敏感数据。

以下示例设置专用存储帐户容器并上传模板:

az group create --name "ManageGroup" --location "China East"
az storage account create \
    --resource-group ManageGroup \
    --location "China East" \
    --sku Standard_LRS \
    --kind Storage \
    --name {your-unique-name}
connection=$(az storage account show-connection-string \
    --resource-group ManageGroup \
    --name {your-unique-name} \
    --query connectionString)
az storage container create \
    --name templates \
    --public-access Off \
    --connection-string $connection
az storage blob upload \
    --container-name templates \
    --file vmlinux.json \
    --name vmlinux.json \
    --connection-string $connection

在部署期间提供 SAS 令牌

若要在存储帐户中部署专用模板,请生成 SAS 令牌,并将其包括在模板的 URI 中。 设置到期时间以允许足够的时间来完成部署。

expiretime=$(date -u -d '30 minutes' +%Y-%m-%dT%H:%MZ)
connection=$(az storage account show-connection-string \
    --resource-group ManageGroup \
    --name {your-unique-name} \
    --query connectionString)
token=$(az storage blob generate-sas \
    --container-name templates \
    --name vmlinux.json \
    --expiry $expiretime \
    --permissions r \
    --output tsv \
    --connection-string $connection)
url=$(az storage blob url \
    --container-name templates \
    --name vmlinux.json \
    --output tsv \
    --connection-string $connection)
az group deployment create --resource-group ExampleGroup --template-uri $url?$token

有关将 SAS 令牌与链接模板配合使用的示例,请参阅将已链接的模版与 Azure Resource Manager 配合使用

后续步骤