microsoft.ad.service_account 模块 – 管理 Active Directory 服务帐户对象
注意
此模块是 microsoft.ad 集合(版本 1.7.1)的一部分。
如果您正在使用 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install microsoft.ad
。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。
要在 playbook 中使用它,请指定:microsoft.ad.service_account
。
microsoft.ad 1.7.0 中的新增功能
概要
管理 Active Directory 服务帐户对象及其属性。
目前,此模块仅支持组托管服务帐户 (gMSA)。
在创建 gMSA 之前,AD 环境必须创建 KDS 根密钥。有关详细信息,请参阅 KDS 密钥。为了使密钥立即生效,请将生效时间设置为 10 小时前,并且不要使用
-EffectiveImmediately
参数。有关详细信息,请参阅示例。
要求
执行此模块的主机需要以下要求。
ActiveDirectory
PowerShell 模块
参数
参数 |
注释 |
---|---|
允许检索服务帐户密码以进行添加、删除或设置的主体。 每个子键值都是一个列表,其中值的形式为 此值由 ActiveDirectory cmdlet 构建到安全描述符中,并设置在 这对应于 AD cmdlet 上的 要清除所有主体,请使用带有空列表的 set。 有关 DN 查找工作原理的更多信息,请参阅 DN 查找属性。 有关如何添加/删除/设置列表选项的更多信息,请参阅 设置列表选项值。 |
|
将指定的主体添加为允许检索服务帐户密码的主体。 除非 remove 指定或不在 set 中,否则 add 未指定的任何现有主体都将保持不变。 |
|
控制在查找失败时要执行的操作以查找 DN。
选择
|
|
删除指定为允许检索服务帐户密码的主体。 除非定义了 set,否则 remove 未指定的任何现有主体都将保持不变。 |
|
将指定的主体设置为允许检索服务帐户密码的主体。 如果此列表中未指定任何现有主体,则会将其删除。 指定一个空列表以删除所有允许委派的主体。 |
|
要在 AD 对象上添加、删除或设置的属性。 每个属性选项的值都应该是一个字典,其中键是 LDAP 属性,例如 属性值可以是原始字符串、整数或布尔值,以便在有问题的属性上添加、删除或设置。 该值也可以是一个字典,其中 type 键设置为
字符串属性值使用区分大小写的匹配来比较所管理的 AD 对象。 有关更多信息,请参阅 LDAP 属性帮助。 默认值: |
|
一个字典,包含要添加到正在管理的 AD 对象的所有属性及其值(如果它们尚未存在)。 这用于可以包含多个值的属性,如果属性只允许单个值,请改用 set。 默认值: |
|
一个字典,包含要从正在管理的 AD 对象中删除的所有属性及其值(如果它们存在)。 这用于可以包含多个值的属性,如果属性只允许单个值,请改用 set。 默认值: |
|
一个字典,包含要在正在管理的 AD 对象上设置的所有属性及其值。 如果现有值与请求的值不匹配,这将替换任何现有值。 仅检查请求的值是否是对象属性上的唯一值,而不检查属性值的顺序。 将此设置为 null 或空列表以清除该属性的任何值。 默认值: |
|
当前 AD 对象可以信任以进行委托的主体对象,以便添加、删除或设置。 这也称为基于资源的约束委派。 每个子键值都是一个值列表,格式为 这是在 这是一个高度敏感的属性,因为它允许指定的主体在以该托管帐户运行的服务进行身份验证时模拟任何帐户。 要清除所有主体,请使用带有空列表的 set。 有关 DN 查找工作原理的更多信息,请参阅 DN 查找属性。 有关如何添加/删除/设置列表选项的更多信息,请参阅 设置列表选项值。 |
|
将指定的主体添加为允许委托的主体。 除非 remove 指定或不在 set 中,否则 add 未指定的任何现有主体都将保持不变。 |
|
控制在查找失败时要执行的操作以查找 DN。
选择
|
|
删除指定为允许委托的主体的主体。 除非定义了 set,否则 remove 未指定的任何现有主体都将保持不变。 |
|
将指定的主体设置为允许委托的主体。 如果此列表中未指定任何现有主体,则会将其删除。 指定一个空列表以删除所有允许委派的主体。 |
|
要设置的 AD 对象的描述。 这是在 |
|
要设置的 AD 对象的显示名称。 这是 |
|
指定服务帐户的 DNS 名称。 这是在 当 |
|
不要自动将 这仅在显式设置 sam_account_name 时适用,并且可用于创建不带 选择
|
|
指定在使用 name 指定的服务器时应使用的凭据。 要指定默认域服务器的凭据,请使用不带 name 键的条目,或使用 domain_username 和 domain_password 选项。 可以在 剧本的模块默认值 中 有关更多信息,请参阅 模块中的 AD 身份验证。 默认值: |
|
这些凭据所适用的服务器的名称。 此值应与用于指定要使用的自定义服务器的其他选项中的值相对应,例如,引用位于不同 AD 服务器上的 AD 标识的选项。 可以在一个条目中省略此键,以指定在未指定服务器时要使用的默认凭据,而不是使用 domain_username 和 domain_password。 |
|
连接到 name 指定的服务器时要使用的密码。 |
|
连接到 name 指定的服务器时要使用的用户名。 |
|
domain_username 的密码。 不带 name 键的 domain_credentials 子条目也可用于指定默认域身份验证的凭据。 可以在 剧本的模块默认值 中 |
|
指定要连接的 Active Directory 域服务实例。 可以是 FQDN 或 NetBIOS 名称的形式。 如果未指定,则该值基于运行 PowerShell 的计算机的默认域。 自定义凭据可以在不带 name 键的 domain_credentials 条目下指定,或者通过 domain_username 和 domain_password 指定。 可以在 剧本的模块默认值 中 |
|
与 AD 交互时要使用的用户名。 如果未设置此项,则用于身份验证的用户将是连接用户。 除非身份验证是带有凭据委派的 Kerberos 或 CredSSP,或者在该任务上使用了 become,否则 Ansible 将无法使用连接用户。 不带 name 键的 domain_credentials 子条目也可用于指定默认域身份验证的凭据。 可以在 剧本的模块默认值 中 |
|
选择
|
|
用于查找要管理的 AD 对象的 AD 对象的标识。 如果未设置 name,或者尝试使用新的 name 重命名对象,或者尝试将对象移动到不同的 path 中,则必须指定此项。 标识可以是表示 如果省略,则要管理的 AD 对象将通过 当使用 microsoft.ad.computer 模块时,如果提供的值未导致匹配,并且末尾没有 |
|
指定 AD 服务帐户支持的 Kerberos 加密类型。 这是在 避免使用 要清除所有加密类型,请使用带有空列表的 set。 有关如何添加/删除/设置列表选项的更多信息,请参阅 设置列表选项值。 |
|
要添加到现有集合的加密类型。 除非由 remove 指定或不在 set 中,否则 add 未指定的任何现有加密类型都将保持不变。 选择
|
|
要从现有集合中删除的加密类型。 除非定义了 set,否则 remove 未指定的任何现有加密类型都将保持不变。 选择
|
|
设置为 AD 服务帐户允许的唯一加密类型。 如果此列表中未指定,则这将删除任何现有加密类型。 指定一个空列表以删除所有加密类型。 选择
|
|
要管理的 AD 对象的 如果指定了 identity,并且通过该标识找到的对象的名称与此值不匹配,则将重命名该对象。 如果未设置 identity,则必须指定此项。 |
|
将服务帐户标记为仅用于客户端出站身份验证。 设置后,服务帐户只能用于客户端角色。例如,它只能用于出站身份验证尝试,并且不能用作目标身份验证服务主体。 如果设置此项,则不能设置 dns_hostname。 选择
|
|
新对象应存在的 OU 或容器的路径。 如果创建新对象,则新对象将在指定的路径中创建。如果未指定路径,则域的 如果管理由 identity 找到的现有对象,则找到的对象的路径将移动到此选项指定的路径。如果未指定路径,则不会移动该对象。 模块 microsoft.ad.computer, microsoft.ad.user 和 microsoft.ad.group 都有它们自己在 Active Directory 域控制器上配置的默认路径。 这可以设置为字面值 |
|
将对象标记为防止意外删除。 这将应用拒绝访问权限以正常删除对象,并且在通过 GUI 或 Ansible 之外的任何其他工具删除对象之前,需要删除保护。 使用 *state=absent* 仍然会删除 AD 对象,即使它被标记为防止删除。 选择
|
|
为服务帐户设置的 它的最大长度为 256 个字符,为了与较旧的操作系统兼容,建议使用 15 个字符。 如果省略,则该值与创建服务帐户时的 请注意,服务帐户的 默认情况下,如果省略 |
|
指定要添加、删除或设置的帐户的服务主体名称 (SPN)。 这是在 要清除所有服务主体名称,请使用 *set* 和空列表。 有关如何添加/删除/设置列表选项的更多信息,请参阅 设置列表选项值。 |
|
要添加到 |
|
要从 |
|
要设置为 如果未在指定的列表中,这将清除任何现有的 SPN。 设置为一个空列表以清除 AD 对象上的所有 SPN。 |
|
设置为 设置为 当 *state=present* 时,必须设置选项 *name*。 使用 选择
|
|
指定帐户是否受信任进行 Kerberos 委派。 这也称为不受约束的 Kerberos 委派。 这将在 选择
|
|
配置帐户的用户主体名称 (UPN)。 格式为 这是在 |
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 完全 |
可以在 check_mode 中运行并返回更改状态预测,而无需修改目标,如果不支持,则会跳过该操作。 |
|
支持: 完全 |
当处于 diff 模式时,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息 |
|
平台: windows |
可以操作的目标操作系统/系列 |
说明
注意
此模块必须在安装了
ActiveDirectory
模块的 Windows 目标主机上运行。当使用
sAMAccountName
值通过 *identity* 进行匹配时,该值应以$
结尾。如果提供的值不以$
结尾,则该模块仍会尝试使用提供的值查找服务帐户,然后再尝试使用附加了$
的回退查找。某些 LDAP 属性只能设置一个值,而其他属性可以有多个值。某些属性也是只读的,无法更改。建议查看属性的架构元数据,其中
System-Only
是只读值,而Is-Single-Value
是只有 1 个值的属性。尝试将多个值设置为
Is-Single-Value
属性会导致未定义的行为。如果在不是域控制器的服务器上运行,则必须使用通过 CredSSP 或 Kerberos 的凭据委派(具有委派),或者必须设置 *domain_username*、*domain_password*。
另请参阅
另请参阅
- microsoft.ad.object_info
收集 Active Directory 对象的信息。
- microsoft.ad.object
管理 Active Directory 对象。
示例
# A gMSA requires a KDS root key to be created. This key must be valid for
# 10 hours before it can be used. This example creates the key and sets the
# time for 10 hours ago to let it be used immediately. If your environment
# uses multiple DCs you will still need to wait 10 hours for replication to
# occur or target the DC you created the key on. Required Domain Admin or
# Enterprise Admin privileges.
- name: Create KDS root key if not present
ansible.windows.win_powershell:
error_action: stop
script: |
$Ansible.Changed = $false
if (-not (Get-KdsRootKey)) {
Add-KdsRootKey -EffectiveTime ((Get-Date).AddHours(-10))
$Ansible.Changed = $true
}
- name: Create gMSA that allows Domain Admins to use
microsoft.ad.service_account:
identity: MyGMSA
dns_hostname: MyGMSA.my_org.local
description: GMSA for Domin Admins
state: present
allowed_to_retrieve_password:
set:
- Domain Admins
- name: create gMSA that allows the ITFarmHosts computer account to retrieve the pass
microsoft.ad.service_account:
identity: ITFarm1
dns_hostname: ITFarm1.contoso.com
allowed_to_retrieve_password:
set:
- ITFarmHosts$
kerberos_encryption_types:
set:
- aes128
- aes256
spn:
add:
- http/ITFarm1.contoso.com/contoso.com
- http/ITFarm1.contoso.com/contoso
- http/ITFarm1.contoso.com
- http/ITFarm1.contoso
- name: Remove gMSA by identity
microsoft.ad.service_account:
identity: ITFarm1$
state: absent
- name: Add SPNs to service account
microsoft.ad.service_account:
identity: MySA$
spn:
add:
- HOST/MySA
- HOST/MySA.domain.test
- HOST/MySA.domain.test:1234
- name: Remove SPNs on the service account
microsoft.ad.service_account:
identity: MySA$
spn:
remove:
- HOST/MySA
- HOST/MySA.domain.test
- HOST/MySA.domain.test:1234
- name: Add gMSA with sAMAccountName without $ suffix
microsoft.ad.service_account:
identity: MySA
dns_hostname: MySA.contoso.com
sam_account_name: MySA
do_not_append_dollar_to_sam: true