[玩转系统] 使用 PowerShell 创建 Azure AD 条件访问策略
作者:精品下载站 日期:2024-12-14 06:44:46 浏览:16 分类:玩电脑
使用 PowerShell 创建 Azure AD 条件访问策略
在这篇文章中,我们将了解如何使用 PowerShell 和 Azure AD PowerShell 模块在 Azure AD 中创建条件访问策略。
使用 Azure 管理门户创建条件访问策略很容易完成,但如果您希望通过自动化流程或通过多个租户快速完成此操作,那么使用笨重的 Web 门户并不理想。
PowerShell 的 AzureAD 模块的 GA 版本为我们带来了以下 cmdlet:
- New-AzureADMSConditionalAccessPolicy - 创建新的条件访问策略。
- Get-AzureADMSConditionalAccessPolicy - 检索条件访问策略列表。
- Set-AzureADMSConditionalAccessPolicy - 修改现有条件访问策略。
- Remove-AzureADMSConditionalAccessPolicy - 删除现有条件访问策略。
安装 AzureAD PowerShell 模块
要成功创建条件访问策略,您需要确保安装 AzureAD 模块。如果尚未安装 AzureAD PowerShell 模块。运行以下命令:
Install-Module AzureAD
如果您已安装 Azure AD 模块但想要升级到最新版本,请使用 -Force 开关:
Install-Module AzureAD -Force
使用 PowerShell 在 Azure Active Directory 中创建条件访问策略
在创建条件访问策略之前,我们需要了解并决定一些信息,我将使用下面的示例作为我的脚本的基础。
- 您希望保护的应用程序(例如:OWA)
- 您希望包含或排除的用户(示例:除全局管理员用户之外的所有用户)
- 应用策略的条件(示例:Windows 设备,Win 11 除外)
- 访问控制(示例:授予需要身份验证强度的权限)
- 任何会话控制(示例:每 4 小时登录一次)
以下是创建上述条件访问策略的完整脚本:
$conditions = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessConditionSet
$conditions.Applications = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessApplicationCondition
$conditions.Applications.IncludeApplications = "00000002-0000-0ff1-ce00-000000000000"
$conditions.Users = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessUserCondition
$conditions.Users.IncludeUsers = "All"
$conditions.Users.ExcludeRoles = @("62e90394-69f5-4237-9190-012177145e10")
$conditions.Platforms = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessPlatformCondition
$conditions.Platforms.IncludePlatforms = @('Windows')
$gcontrols = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessGrantControls
$gcontrols._Operator = "OR"
$gcontrols.BuiltInControls = "MFA"
$session = New-Object -TypeName Microsoft.Open.MSGraph.Model.conditionalAccessSessionControls
$sessioncontrols = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessSignInFrequency
$sessioncontrols.Type = "hours"
$sessioncontrols.Value = 4
$sessioncontrols.IsEnabled = $true
$session.SignInFrequency = $sessioncontrols
New-AzureADMSConditionalAccessPolicy -DisplayName "OWA MFA policy" -State "Disabled" -Conditions $conditions -GrantControls $gcontrols -SessionControls $session
让我们把上面的内容分解一下!
定义我们希望保护的应用程序
$conditions = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessConditionSet
$conditions.Applications = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessApplicationCondition
$conditions.Applications.IncludeApplications = "00000002-0000-0ff1-ce00-000000000000"
在第 1 行,我们创建一个“conditionalAccessConditionSet”类型的新对象,并将此信息传递到变量 $conditions 中。
在第 2 行,我们创建另一个“ConditionalAccessApplicationCondition”类型的新对象,并将其传递到变量 $conditions 内的 Applications 属性中。此时您应该知道,我们不仅仅是猜测了该对象的正确属性名称,您还可以使用以下命令列出 $condition 变量的“成员”。
$conditions | get-member
在第 3 行,我们指定了应用程序 ID 并将其传递到 IncludeApplications 参数中。我们从两个方面收集此信息,首先,我们通过此处的 Microsoft Graph Rest API 参考页面知道如何使用 IncludeApplications 参数,其次,我们从 Azure AD 管理门户的“云应用程序或操作”下的新应用程序中收集了应用程序 ID。条件访问策略。
我们还可以扩展上面的命令,以获取可用参数的列表:
$conditions.Applications | get-member
您将看到以下参数可供您使用:
- $conditions.Applications.includeApplications
- $conditions.Applications.ExcludeApplications
- $conditions.Applications.IncludeUserActions
- $conditions.Applications.IncludeProtectionLevels
以下是常见应用程序 ID 的列表:
- Dynamics 365 业务中心:996def3d-b36c-4153-8607-a6fd3c01b89f
- 微软Azure管理:797f4846-ba00-4fd7-ba43-dac1f8f63013
- 微软云应用安全:05a65629-4c1b-48c1-a78b-804c4abdd4af
- Microsoft Graph PowerShell:14d82eec-204b-4c2f-b7e8-296a70dab67e
- Microsoft 信息保护同步服务:870c4f2e-85b6-4d43-bdda-6ed9a579b725
- Microsoft Intune: 0000000a-0000-0000-c000-000000000000
- Microsoft 必应搜索:9ea1ad79-fdb6-4f9a-8bc3-2b70f96e34c7
- 我的应用程序: 2793995e-0a7d-40d7-bd35-6968ba142197
- O365 LinkedIn连接:f569b9c7-be15-4e87-86f7-87d30d02090b
- Office 365 Exchange Online:00000002-0000-0ff1-ce00-000000000000
- Office 365 SharePoint Online:00000003-0000-0ff1-ce00-000000000000
- Skype for Business Online:00000004-0000-0ff1-ce00-000000000000
Universal Store Service API 和 Web 应用程序:45a330b1-b1ec-4cc1-9161-9f03992aa49f
指定我们的条件访问策略适用于哪些用户
在接下来的 3 行中,我们将定义我们的政策适用于谁。在我们的例子中,我们已将我们的策略应用于租户的所有成员,但全局管理员角色除外。
$conditions.Users = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessUserCondition
$conditions.Users.IncludeUsers = "All"
$conditions.Users.ExcludeRoles = @("62e90394-69f5-4237-9190-012177145e10")
我们可以在上面看到这一点,因为我们已将“All”传递到 IncludeUsers 参数中,并且在 ExcludeRoles 中我们定义了全局管理员角色的模板 ID。我们通过转到 Azure Active Directory 管理中心> 角色和管理员 > 全局管理员 > 描述找到了模板 ID b>.
您还可以使用 PowerShell 通过以下任一命令获取所需目录角色或用户的 ObjectID:
# List all directory roles and their objectID
Get-AzureADDirectoryRole
# List all directory users and their objectID
Get-AzureADUser
您可以包含的其他参数包括:
- $conditions.Users.IncludeUsers
- $conditions.Users.ExcludeUsers
- $conditions.Users.IncludeRoles
- $conditions.Users.ExcludeRoles
- $conditions.Users.IncludeGroups
- $conditions.Users.ExcludeGroups
指定我们的政策适用的平台
在下面的代码行中,我们指定我们的策略仅在所使用的设备是 Windows 设备的情况下适用。
$conditions.Platforms = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessPlatformCondition
$conditions.Platforms.IncludePlatforms = @('Windows')
在第 1 行,我们再次创建“ConditionalAccessPlatformCondition”的新对象时间,然后在第 2 行,我们将字符串“Windows”传递到 IncludePlatforms 参数中。有 5 个不同的平台可供选择,其中包括:
- 安卓
- iOS系统
- Windows 手机
- 视窗
- 苹果系统
- Linux
使用命令“$conditions.Platforms | get-member”我们知道我们可以在这里使用以下参数:
- $conditions.Platforms.IncludePlatforms
- $conditions.Platforms.ExcludePlatforms
指定向受保护资源授予权限的控件
现在我们将指定在什么前提下允许我们的用户访问该资源。在我们的示例中,我们将在启用多重身份验证的前提下授予访问权限。
$gcontrols = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessGrantControls
$gcontrols._Operator = "OR"
$gcontrols.BuiltInControls = "MFA"
在第 2 行,我们选择了“OR”逻辑运算符,这意味着需要满足一个或另一个选定的控件。例如,这可能是兼容设备或启用了多重身份验证。
在第 3 行,我们选择了 MFA(或多因素身份验证)的“BuiltInControl”。该参数的其他可能值包括:
- 艺术硕士
- 堵塞
- 合规设备
- 域加入设备
- 批准的申请
- 合规应用
- 密码更改
- 未知未来价值
创建我们的登录频率会话控制
我们要定义的最后一个参数是策略的会话设置。在我们的示例中,我们指定登录频率,要求每 4 小时重新登录一次。
$session = New-Object -TypeName Microsoft.Open.MSGraph.Model.conditionalAccessSessionControls
$sessioncontrols = New-Object -TypeName Microsoft.Open.MSGraph.Model.ConditionalAccessSignInFrequency
$sessioncontrols.Type = "hours"
$sessioncontrols.Value = 4
$sessioncontrols.IsEnabled = $true
$session.SignInFrequency = $sessioncontrols
在第 1 行和第 2 行,我们创建了 2 个新对象并将它们存储在 $session 变量和 $sessioncontrols 变量中。
在第 3 行到第 5 行,我们指定登录频率对象的设置。在第 3 行,我们可以选择设置“天”或“小时”,然后在第 4 行,我们指定一个整数值,然后在第 5 行将“IsEnabled”参数指定为“True”。
最后,在第 3 行,我们使用刚刚输入到“sessioncontrols”变量中的设置来定义“SignInFrequency”参数。
创建条件访问策略
在脚本的最后一行代码中,我们显式地创建具有指定名称和状态的条件访问策略。我们还使用脚本中之前定义的变量来将所需的条件和控制实施到我们的策略中。
New-AzureADMSConditionalAccessPolicy -DisplayName "OWA MFA policy" -State "Disabled" -Conditions $conditions -GrantControls $gcontrols -SessionControls $session
运行完整脚本后,我们将得到如下输出:
ID:87dec72e-4651-460c-8a9d-9a8d07405208
显示名称:OWA MFA 策略
状态:已禁用
条件:类 ConditionalAccessConditionSet {
应用程序:类 ConditionalAccessApplicationCondition {
IncludeApplications :System.Collections.Generic.List`1[System.String]
排除应用程序:System.Collections.Generic.List`1[System.String]
IncludeUserActions:System.Collections.Generic.List`1 [System.String]
包含保护级别:
}
用户:类 ConditionalAccessUserCondition {
IncludeUsers: System.Collections.Generic.List`1[System.String]
ExcludeUsers: System.Collections.Generic.List`1[System.String]
IncludeGroups : System.Collections.Generic.List`1[System.String]
排除组:System.Collections.Generic.List`1[System.String]
包含角色:System.Collections.Generic.List`1 [System.String]
排除角色:System.Collections.Generic.List`1[System.String]
}
平台:类 ConditionalAccessPlatformCondition {
包含平台:System.Collections.Generic.List`1[Microsoft.Open.MSGraph.Model.ConditionalAccessDevicePlatforms]
排除平台:System.Collections.Generic.List`1[Microsoft.Open .MSGraph.Model.ConditionalAccessDevicePlatforms]
}
位置:
SignInRiskLevels:System.Collections.Generic.List`1[Microsoft.Open.MSGraph.Model.ConditionalAccessRiskLevel]
ClientAppTypes:System.Collections.Generic.List`1[Microsoft.Open.MSGraph. Model.ConditionalAccessClientApp]
}
GrantControls :类 ConditionalAccessGrantControls {
_Operator:或
BuiltInControls:System.Collections.Generic.List`1[Microsoft.Open.MSGraph.Model.ConditionalAccessGrantControl]
CustomAuthenticationFactors:System.Collections.Generic。 List`1[System.String]
使用条款:System.Collections.Generic.List`1[System.String]
}
SessionControls :类 ConditionalAccessSessionControls {
ApplicationEnforcedRestrictions:
CloudAppSecurity:
SignInFrequency:类 ConditionalAccessSignInFrequency {
值:4
类型:小时
IsEnabled:True}
持久浏览器:
}
您现在还将在 Azure Active Directory 管理门户中看到新策略。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag