我正在尝试使用 Azure CLI 在我的 Azure AD 应用程序中添加一个密钥。但是通过 Azure CLI API 看起来似乎没有这样的命令。
例如:
我正在尝试通过 Azure CLI 从以下链接自动执行任务: http ://blog.davidebbo.com/2014/12/azure-service-principal.html
我可以创建 AD 应用程序、服务主体,但我找不到为新创建的 AD 应用程序添加密钥的方法。
我会很感激任何想法和方向:)
提前致谢 !
我正在尝试使用 Azure CLI 在我的 Azure AD 应用程序中添加一个密钥。但是通过 Azure CLI API 看起来似乎没有这样的命令。
例如:
我正在尝试通过 Azure CLI 从以下链接自动执行任务: http ://blog.davidebbo.com/2014/12/azure-service-principal.html
我可以创建 AD 应用程序、服务主体,但我找不到为新创建的 AD 应用程序添加密钥的方法。
我会很感激任何想法和方向:)
提前致谢 !
对于新的 AD 应用程序,您可以-p
在创建时指定一个键。例如,
azure ad app create -n <your application name> --home-page <the homepage of you application> -i <the identifier URI of you application> -p <your key>
对于现有的 AD 应用程序,Graph API 肯定能够更新 AD 应用程序凭据。阅读此 API 参考,您可以看到密码凭证可以使用“POST、GET、PATCH”。但是,使用 Graph API 太复杂了。我检查了 Azure CLI。该功能尚未实现,源代码对我来说是不可读的。然后看了一下Azure SDK for Python,因为我对python比较熟悉,发现他们已经在2.0.0rc2中实现了。请参阅GitHub 存储库
我写了一个python脚本。但是,为了使用我的脚本,您不仅需要安装 azure2.0.0rc2,还需要安装 msrest 和 msrestazure。
from azure.common.credentials import UserPassCredentials
from azure.graphrbac import GraphRbacManagementClient, GraphRbacManagementClientConfiguration
from azure.graphrbac.models import ApplicationCreateParameters, PasswordCredential
credentials = UserPassCredentials("<your Azure Account>", "<your password>")
subscription_id = "<your subscription id>"
tenant_id = "<your tenant id>"
graphrbac_client = GraphRbacManagementClient(
GraphRbacManagementClientConfiguration(
credentials,
subscription_id,
tenant_id
)
)
application = graphrbac_client.application.get('<your application object id>')
passwordCredential = PasswordCredential(start_date="2016-04-13T06:08:04.0863895Z",
end_date="2018-04-13T06:08:04.0863895Z",
value="<your new key>")
parameters = ApplicationCreateParameters(application.available_to_other_tenants,
application.display_name,
"<the homepage of your AD application>",
application.identifier_uris,
reply_urls=application.reply_urls,
password_credentials = [passwordCredential])
application = graphrbac_client.application.update('<your application object id>', parameters)
此脚本的唯一问题是您只能覆盖 AD 应用程序的所有现有键。您无法附加新密钥。这是 Graph API 的问题。Graph API 不允许用户读取现有密钥。一种可能的解决方案是将现有的密钥存储在其他地方。但是,这会带来额外的安全风险。
我没有任何自动添加密钥的经验,我什至不确定是否有可能说实话。但是,请查看 Graph API 中的ApplicationEntity文档,可能会使用对 Web 服务的 POST 请求。