

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为 Kerberos 配置服务主体名称（SPN）
<a name="step2-configure-spn-kerberos"></a>

我们建议您在传输过程中对 Amazon FSx 使用 Kerberos-based 身份验证和加密。Kerberos 能够为访问文件系统的客户端提供最安全的身份验证。

要对使用 DNS 别名访问 Amazon FSx 的客户端启用 Kerberos 身份验证，必须在 Amazon FSx 文件系统的 Active Directory 计算机对象上添加与 DNS 别名对应的服务主体名称（SPN）。一个 SPN 一次只能与一个 Active Directory 计算机对象关联。如果为原始文件系统的 Active Directory 计算机对象配置的 DNS 名称已具有现有 SPN，则必须首先将其删除。

Kerberos 身份验证需要以下两个 SPN：

```
HOST/{{alias}}
HOST/{{alias.domain}}
```

如果别名是 `finance.domain.com`，则必须具有以下两个 SPN：

```
HOST/finance
HOST/finance.domain.com
```

**注意**  
在为 Amazon FSx 文件系统的 Active Directory（AD）计算机对象创建新的主机 SPN 之前，您需要删除所有与 Active Directory 计算机对象上的 DNS 别名对应的现有主机 SPN。如果 AD 中存在 DNS 别名的 SPN，则为 Amazon FSx 文件系统设置 SPN 的尝试将会失败。

以下过程将介绍如何进行操作：
+ 查找原始文件系统 Active Directory 计算机对象上的所有现有 DNS 别名 SPN。
+ 若查找到现有 SPN，则将其删除。
+ 为 Amazon FSx 文件系统的 Active Directory 计算机对象创建新的 DNS 别名 SPN。

**安装所需的 PowerShell 活动目录模块**

1. 登录已加入您的 Amazon FSx 文件系统所加入的 Active Directory 的 Windows 实例。

1.  PowerShell 以管理员身份打开。

1. 使用以下命令安装 Act PowerShell ive Directory 模块。

   ```
   Install-WindowsFeature RSAT-AD-PowerShell
   ```<a name="find-delete-existing-spns"></a>

**查找并删除原始文件系统 Active Directory 计算机对象上的现有 DNS 别名 SPN**

如果您为已分配给 Active Directory 中某个计算机对象上的另一个文件系统的 DNS 别名配置了 SPN，则必须先删除这些 SPN，然后再将 SPN 添加到文件系统的计算机对象。

1. 使用以下命令查找所有现有 SPN。将 `{{alias_fqdn}}` 替换为在[步骤 1](step1-assign-dns-alias.md) 中与文件系统关联的 DNS 别名。

   ```
   ## Find SPNs for original file system's AD computer object
   $ALIAS = "{{alias_fqdn}}"
   SetSPN /Q ("HOST/" + $ALIAS)
   SetSPN /Q ("HOST/" + $ALIAS.Split(".")[0])
   ```

1. 使用以下示例脚本，删除上一步中返回的现有 HOST SPN。
   + 将 `{{alias_fqdn}}` 替换为在[步骤 1](step1-assign-dns-alias.md) 中与文件系统关联的完整 DNS 别名。
   + 将 `{{file_system_DNS_name}}` 替换为原始文件系统的 DNS 名称。

   ```
   ## Delete SPNs for original file system's AD computer object
   $Alias = "{{alias_fqdn}}"
   $FileSystemDnsName = "{{file_system_dns_name}}"
   $FileSystemHost = (Resolve-DnsName ${FileSystemDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0]
   $FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost})
   
   SetSPN /D ("HOST/" + ${Alias}) ${FSxAdComputer}.Name
   SetSPN /D ("HOST/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name
   ```

1. 对在[步骤 1](step1-assign-dns-alias.md) 中与文件系统关联的每个 DNS 别名重复上述步骤。

**为 Amazon FSx 文件系统的 Active Directory 计算机对象设置 SPN**

1. 运行以下命令，为 Amazon FSx 文件系统设置新的 SPN。
   + 将 `{{file_system_DNS_name}}` 替换为 Amazon FSx 分配给文件系统的 DNS 名称。

     要在 Amazon FSx 控制台上查找文件系统的 DNS 名称，请选择**文件系统**，选择您的文件系统，然后选择文件系统详细页面上的**网络与安全**窗格。

     您还可以在 [DescribeFileSystems](https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html)API 操作的响应中获取 DNS 名称。
   + 将 `{{alias_fqdn}}` 替换为在[步骤 1](step1-assign-dns-alias.md) 中与文件系统关联的完整 DNS 别名。

   ```
   ## Set SPNs for FSx file system AD computer object
   $FSxDnsName = "{{file_system_DNS_name}}"
   $Alias = "{{alias_fqdn}}"
   $FileSystemHost = (Resolve-DnsName $FSxDnsName | Where Type -eq 'A')[0].Name.Split(".")[0]
   $FSxAdComputer = (Get-AdComputer -Identity $FileSystemHost)
   
   ##Use the following command to set both the full FQDN and Alias SPNs
   Set-AdComputer -Identity $FSxAdComputer -Add @{"msDS-AdditionalDnsHostname" = @($Alias, $Alias.Split(".")[0])}
   ```
**注意**  
如果原始文件系统的 AD 计算机对象中存在 DNS 别名的 SPN，则为 Amazon FSx 文件系统设置 SPN 将失败。有关查找并删除现有 SPN 的信息，请参阅[查找并删除原始文件系统 Active Directory 计算机对象上的现有 DNS 别名 SPN](#find-delete-existing-spns)。

1. 使用以下示例脚本验证是否为 DNS 别名配置了新 SPN。确保响应中包括两个主机 SPN `HOST/{{alias}}` 和 `HOST/{{alias_fqdn}}`，如本过程前面所述。

   将 `{{file_system_DNS_name}}` 替换为 Amazon FSx 分配给文件系统的 DNS 名称。要在 Amazon FSx 控制台上查找文件系统的 DNS 名称，请选择**文件系统**，选择您的文件系统，然后选择文件系统详细页面上的**网络与安全**窗格。

   您还可以在 [DescribeFileSystems](https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html)API 操作的响应中获取 DNS 名称。

   ```
   ## Verify SPNs on FSx file system AD computer object
   $FileSystemDnsName = "{{file_system_dns_name}}"
   $FileSystemHost = (Resolve-DnsName ${FileSystemDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0]
   $FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost})
   SetSpn /L ${FSxAdComputer}.Name
   ```

1. 对在[步骤 1](step1-assign-dns-alias.md) 中与文件系统关联的每个 DNS 别名重复上述步骤。