来聊下最近收到的一个需求,很多时候我们需要创建service principal来完成一些azure服务间的交互,或者自动化的任务,而service principal需要使用证书或者密码来完成身份验证,我们这个需求要求service principal的密码最长不能超过90天,这个需求可以通过应用程序管理策略来实现
以下是官方网站里的一些文字描述
应用程序管理策略允许 IT 管理员强制实施有关如何配置其组织中的应用的最佳做法。 例如,管理员可以配置策略来阻止使用或限制密码机密的生存期,并使用对象的创建日期来强制实施策略。
有两种类型的策略控制:
· 适用于所有应用程序或服务主体的租户默认策略。
· 应用 (应用程序或服务主体) 管理策略,这些策略允许从租户默认策略中包括或排除单个应用程序。
租户默认应用管理策略
租户默认策略是始终存在的单个对象,默认情况下处于禁用状态。 它由 tenantAppManagementPolicy 资源定义,对应用程序与服务主体对象强制实施限制。
应用程序和服务主体的应用管理策略
应用管理策略在 appManagementPolicy 资源中定义,其中包含一组策略,这些策略具有与租户默认策略中定义的不同限制或不同的实施日期。 可将其中一个策略分配给应用程序或服务主体,以替代租户默认策略。
简单来说,可以通过租户默认应用管理策略来设置默认策略,如果需要针对单独应用设置特殊策略的话,可以通过应用程序和服务主体的应用管理策略实现,当租户默认策略和应用管理策略定义相同的限制时,应用管理策略优先。
具体的策略配置方法不算复杂,首先到Graph explorer中https://developer.microsoft.com/en-us/graph/graph-explorer,可以尝试先Get下现有的策略,URL为https://graph.microsoft.com/beta/policies/defaultAppManagementPolicy
这里需要同意下授权,否则会提示没有权限

可以看到目前是没有设置默认policy的

接下来尝试更新policy,来实现设置service principal密码最长时间的效果,具体可以设置的参数可以参考下边的文档
具体的配置参考下边的内容
{
"isEnabled": true,
"applicationRestrictions": {
"passwordCredentials": [
{
"restrictionType": "passwordLifetime",
"restrictForAppsCreatedAfterDateTime":
"2017-01-01T10:37:00Z",
"maxLifetime": "P90D"
}
]
}
}
还是一样需要授权,这里需要注意,因为是修改,所以需要write权限,并且把HTTP方法改成PATCH

PATCH完成之后,返回状态码200,证明已经成功了

接下来给service principal设置密码的时候可以发现,最长只能选择90天了

最后需要注意的一点,这个策略只会影响未来创建的secret,不会影响已经存在的secret
















