SAS トークンを使用してプライベート ARM テンプレートをデプロイする方法

Azure Resource Manager テンプレート (ARM テンプレート) がストレージ アカウントに配置されている場合、それが公開されないようにテンプレートへのアクセスを制限できます。 セキュリティで保護されたテンプレートにアクセスするには、そのテンプレート用に SAS (Shared Access Signature) トークンを作成し、デプロイ時にそのトークンを提供します。 この記事では、Azure PowerShell または Azure CLI を使用して SAS トークンで ARM テンプレートを安全にデプロイする方法について説明します。

プライベート ARM テンプレートへのアクセスを保護および管理する方法について、以下を行う方法が記載されています。

  • セキュリティで保護されたコンテナーでのストレージ アカウントの作成
  • ストレージ アカウントへのテンプレートのアップロード
  • デプロイ時に SAS トークンを指定する

重要

SAS トークンを使用してプライベート テンプレートをセキュリティで保護する代わりに、テンプレート スペックを使用することを検討してください。 テンプレート スペックを使用すると、組織内の他のユーザーとテンプレートを共有し、Azure RBAC 経由でテンプレートへのアクセスを管理できます。

セキュリティで保護されたコンテナーでのストレージ アカウントの作成

次のスクリプトでは、テンプレートのセキュリティを確保するためにパブリック アクセスがオフになっているストレージ アカウントとコンテナーを作成できます。

New-AzResourceGroup `
  -Name ExampleGroup `
  -Location "Central US"
New-AzStorageAccount `
  -ResourceGroupName ExampleGroup `
  -Name {your-unique-name} `
  -Type Standard_LRS `
  -Location "Central US"
Set-AzCurrentStorageAccount `
  -ResourceGroupName ExampleGroup `
  -Name {your-unique-name}
New-AzStorageContainer `
  -Name templates `
  -Permission Off

ストレージ アカウントにプライベートのテンプレートをアップロードする

これで、お使いのテンプレートをストレージ アカウントにアップロードする準備ができました。 使用するテンプレートへのパスを指定します。

Set-AzStorageBlobContent `
  -Container templates `
  -File c:\Templates\azuredeploy.json

デプロイ時に SAS トークンを指定する

ストレージ アカウントにプライベートのテンプレートをデプロイするため、SAS トークンを生成してテンプレートの URI に含めます。 デプロイの完了に必要な時間を確保できるように有効期限を設定します。

重要

プライベート テンプレートを含む BLOB は、アカウント オーナーのみがアクセスできます。 ただし、BLOB の SAS トークンを作成すると、その URI を持つ誰もが BLOB にアクセスできるようになります。 もし別のユーザーが URI を傍受した場合、そのユーザーは、テンプレートにアクセスできます。 SAS トークンはお使いのテンプレートへのアクセスを制限する有効な方法ですが、パスワードのような機密データをテンプレートに直接含めないでください。

# get the URI with the SAS token
$templateuri = New-AzStorageBlobSASToken `
  -Container templates `
  -Blob azuredeploy.json `
  -Permission r `
  -ExpiryTime (Get-Date).AddHours(2.0) -FullUri

# provide URI with SAS token during deployment
New-AzResourceGroupDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateUri $templateuri

リンクされたテンプレートでの SAS トークン使用例については、「 Azure Resource Manager でのリンクされたテンプレートの使用」を参照してください。

次のステップ