我正在尝试使用Azure cli编写环境脚本.我创建了一些功能应用程序,并希望添加主机密钥或至少检索自动创建的默认密钥.天蓝色的cli对此毫无支持. 似乎有一个api(文档似乎很稀疏)在函数本
似乎有一个api(文档似乎很稀疏)在函数本身允许我获取键,但是你需要一个键来使用它所以..没有帮助那里.
https://github.com/Azure/azure-webjobs-sdk-script/wiki/Key-management-API
例如:https://example-functions.azurewebsites.net/admin/host/keys?code=somecodeyoualreadyknow
我已经看到一些使用webapps scm api下载包含密钥的json文件的其他示例但是我不确定如何使用此API进行身份验证.我有一个服务主体(userid,密码,tenantid),我希望不必在我的脚本中添加另一个身份验证方案.
这是步骤.>假设您已经拥有Kudu部署凭据. (听起来你已经知道如何做到这一点了.你可以通过ARM服务原则等来获得它)
>从kudu部署信用卡中,您可以获得一个允许您调用Functions键API的JWT.
>从Functions API,您可以获得所有密钥(包括您的密钥).
这是一个powershell脚本,演示了从Kudu部署信用卡到功能主密钥的确切调用:
# You need to start with these: $site = "YourSiteName" $username='YourDeploymentUserName' $password='YourDeploymentPassword' # Now... $apiBaseUrl = "https://$($site).scm.azurewebsites.net/api" $siteBaseUrl = "https://$($site).azurewebsites.net" # For authenticating to Kudu $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password))) # Call Kudu /api/functions/admin/token to get a JWT that can be used with the Functions Key API $jwt = Invoke-RestMethod -Uri "$apiBaseUrl/functions/admin/token" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET # Call Functions Key API to get the master key $x = Invoke-RestMethod -Uri "$siteBaseUrl/admin/host/systemkeys/_master" -Headers @{Authorization=("Bearer {0}" -f $jwt)} -Method GET $masterKey = $x.value