Azure Resource Manager テンプレート (ARM テンプレート) がストレージ アカウントにある場合は、テンプレートへのアクセスを制限して、一般に公開されないようにすることができます。 セキュリティで保護されたテンプレートにアクセスするには、テンプレートの Shared Access Signature (SAS) トークンを作成し、デプロイ時にそのトークンを指定します。 この記事では、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 でのリンクされたテンプレートの使用」を参照してください。
次のステップ
- テンプレートのデプロイの概要については、 ARM テンプレートと Azure PowerShell を使用したリソースのデプロイに関するページを参照してください。
- テンプレートでパラメーターを定義するには、「 テンプレートの作成」を参照してください。