为 Active Directory 用户配置验证和授权

设置 Oracle Cloud Infrastructure Identity and Access Management、配置 Active Directory (AD) 验证和授权、配置 NFS 导出以及设置 Unix 权限。

设置 Oracle Cloud Infrastructure Identity and Access Management 策略

Oracle Cloud Infrastructure (OCI) 身份和访问管理中创建动态组,并添加策略以允许挂载目标访问 LDAP 和 Kerberos 密钥。这对于 Kerberos 和 LDAP 配置都是必需的。

  1. 登录到 OCI。
  2. 打开导航菜单,然后单击身份和安全性
  3. 单击动态组
  4. 单击创建动态组,然后输入名称说明
    名称在您的租户中的所有组(动态组和用户组)中必须唯一。无法稍后更改名称。请避免输入机密信息。
    此示例将组 ad-kerberos-mt-group 用于 ad-kerberos 区间中的所有挂载目标。
  5. 输入匹配规则以定义组的成员。
    例如:
    ALL { resource.type='mounttarget', resource.compartment.id = '<mount_target_compartment_ocid>' }
  6. 单击创建
  7. 打开导航菜单,然后单击身份和安全性。在身份下,单击策略
  8. 单击创建策略
  9. 输入新策略的名称、说明和区间。
    名称在您的租户中的所有策略中必须唯一。您不能稍后更改。请避免输入机密信息。
  10. 使用策略构建器创建策略,以允许挂载目标访问区间中的密钥。
    此示例将组 ad-kerberos-mt-group 用于 ad-kerberos 区间中的所有挂载目标。
    allow dynamic-group ad-kerberos-mt-group to read secret-family in compartment ad-kerberos
  11. 单击创建

使用 Kerberos 配置 Active Directory 验证

配置 Oracle Cloud Infrastructure Identity and Access Management 后,您将配置 Active Directory。配置 Kerberos 涉及两个步骤:将挂载目标连接到 Microsoft 的 Active Directory ,然后使用 Kerberos 配置更新挂载目标设置。

将挂载目标加入 Active Directory

Active Directory 用户需要验证时,请完成此任务。这是 Oracle Cloud Infrastructure File Storage 服务外部执行的手动过程。将挂载目标加入 Microsoft 的 Active Directory 涉及将计算机帐户添加到 Active Directory 、设置正确的密码、提取密钥表以及将挂载目标添加到 DNS。

  1. Active Directory 中为挂载目标 (mount target,MT) 创建计算机帐户。
    可以从命令行创建帐户,也可以使用 Active Directory Users and Computers 快照创建新的计算机帐户。
    Command-Line
    C:\Users\administrator>djoin /provision /domain fss-ad.com /machine fss-mt-ad-1 /savefile offlinedomainjoin.txt
    Provisioning the computer...
    Successfully provisioned [fss-mt-ad-1] in the domain [fss-ad.com].
    …
    The operation completed successfully.
    Active Directory Users and Computers
    1. 转到 Active Directory Users and Computers 目录,展开 fs-ad.com,然后选择计算机
    2. 单击新建,然后单击计算机
    3. 添加 fss-mt-ad-1

      完成此操作后,FSS-MT-AD-1 将显示在 Active Directory Users and Computers 快照中的 Computers 树下。

  2. 使用 ktpass.exe 创建密钥表。

    注意:

    必须以管理员身份打开命令提示符以运行 ktpass.exe。否则将失败。AES256-SHA1aes256-cts-hmac-sha1-96
    C:\>ktpass -princ nfs/fss-mt-ad-1.fss-ad.com@FSS-AD.COM -mapuser FSS-AD\fss-mt-ad-1 -crypto AES256-SHA1 +rndpass -ptype KRB5_NT_SRV_HST  -out fss-mt-ad-1.keytab
    Targeting domain controller: ad-server.fss-ad.com
    Successfully mapped nfs/fss-mt-ad-1.fss-ad.com to FSS-MT-AD-1$.
    WARNING: Account FSS-MT-AD-1$ is not a user account (uacflags=0x1001).
    WARNING: Resetting FSS-MT-AD-1$'s password may cause authentication problems if FSS-MT-AD-1$ is being used as a server.
    
    Reset AD-FSS-MT-2$'s password [y/n]?  y
    Password successfully set!
    Key created.
    Output keytab to fss-mt-ad-1.keytab:
    Keytab version: 0x502
    keysize 88 nfs/fss-mt-ad-1.fss-ad.com@FSS-AD.COM ptype 3 (KRB5_NT_SRV_HST) vno 2 etype 0x12 (AES256-SHA1) keylength 32
    
  3. 在挂载目标上配置 Kerberos 时,将密钥表转换为 base64 以与密钥表一起使用。
    C:\>certutil.exe -encode fss-mt-ad-1.keytab keytab.txt
    Input Length = 94
    Output Length = 188
    CertUtil: -encode command completed successfully.
    
    C:\>notepad keytab.txt
    1. 在记事本中打开 keytab.txt 文件。
    2. 删除 BEGINEND CERTIFICATE 行。
    3. 将 base64 文本复制到单行中无空格的一个连续长行。
      以后为 Kerberos 配置挂载目标的密钥时,需要 base64 文本。
  4. 修改 Active Directory 中的挂载目标 (mount target,MT) 属性以使用更安全的密码。找到 MT 帐户,并将 aes256-cts-hmac-sha1-96msDS-SupportedEncryptionTypes 属性值更改为 24。
    默认情况下,Active Directory 提供带有 RC4 密码的票证。如果 msDS-SupportedEncryptionTypes 属性不存在,则创建一个属性并设置值。
  5. 打开 DNS Manager 并展开 DNS 服务器树。
  6. 为装载目标添加正向查找区域。输入 IP 地址,选择创建关联的指针 (PTR) 记录,然后单击添加主机

Kerberos 配置挂载目标

为密钥表创建密钥。密钥内容是使用 Active Directory 加入挂载目标时复制的 base64 编码密钥表。

以下是为 Kerberos 配置挂载目标所需的基本步骤:

  • 将挂载目标联接到 Active Directory(上一步)。
  • 配置密钥表 Vault 密钥。
  • 在挂载目标上配置 Kerberos。
  1. 转到 Oracle Cloud Infrastructure (OCI) 控制台,然后打开导航菜单。
  2. 单击 Identity & Security ,然后单击 Vault
  3. 列表范围下,选择要在其中创建密钥的区间。
    此示例使用区间 ad-kerberos
  4. 资源下,单击安全,然后单击创建密钥
  5. 创建密钥面板中输入以下信息:
    避免输入任何机密信息。
    1. 名称:输入用于标识密钥的名称。例如,fss-mt-ad-1-keytab-secret
    2. 说明:输入密钥的简要说明以帮助标识该密钥。例如,fss-mt-ad-1 的 Keytab。
    3. 加密密钥:选择要在将密钥导入到 Vault 时用于加密密钥内容的主加密密钥。例如,mount-target-secrets
      密钥必须属于同一 Vault。密钥也必须是对称密钥。无法使用非对称密钥加密 Vault 密钥。
    4. 秘密类型模板Base64
    5. 秘密内容:输入密钥的内容。
      这是您在将密钥表转换为 base64 时之前保存的 base64 编码密钥表,作为将挂载目标加入 Active Directory 的一部分。
  6. 单击创建密钥
  7. 转到挂载目标的 NFS 选项卡。
    1. 单击导航菜单中的 Storage
    2. 在“文件存储”下,单击挂载目标
    3. 在“List scope(列表范围)”部分的“Compartment(区间)”下,选择一个区间。
      例如,ad-kerberos
    4. 找到挂载目标,然后单击 NFS 选项卡。
  8. NFS 选项卡中单击 Kerberos 旁边的 Manage
  9. 选择密钥表密钥和版本,然后单击验证密钥表,查看结果并保存。选择 Enable Kerberos
    在此示例中, ad-kerberos 区间中的密钥表密钥fss-mt-ad-1-keytab-secret当前密钥表密钥版本为 1。

使用 Kerberos 挂载 NFS 导出

Kerberos NFS 支持以下三种安全机制。

  • krb5:Kerberos 仅用于验证。
  • krb5i:经过验证,并在每个事务处理中使用加密散列以确保完整性。仍可以拦截和检查流量,但无法修改流量。
  • krb5p:验证并加密客户机与服务器之间的所有通信。无法检查流量,无法修改。
C:\Users\fss-user-1>mount -o sec=krb5 fss-mt-ad-1.fss-ad.com:/krb-fs-1 T:
T: is now successfully connected to fss-mt-ad-1.fss-ad.com:/krb-fs-1

The command completed successfully.
如果在挂载期间未提供安全风味(syskrb5krb5ikrb5p),则 Windows 将选择在导出上设置的卓越安全风味。使用 mount 命令验证挂载驱动器时所选的风格 Windows。
C:\Users\fss-user-1>mount

Local    Remote                                 Properties
-------------------------------------------------------------------------------
T:       \\fss-mt-ad-1.fss-ad.com\krb-fs-1      UID=0, GID=0
                                                rsize=1048576, wsize=1048576
                                                mount=soft, timeout=0.8
                                                retry=1, locking=yes
                                                fileaccess=755, lang=ANSI
                                                casesensitive=no
                                                sec=krb5


C:\Users\fss-user-1>whoami
fss-ad\fss-user-1

现在可以从 Windows 资源管理器访问驱动器。请注意,驱动器映射按用户执行,访问 OCI 文件存储共享的每个用户都应将共享资源映射到相应的驱动器盘符。

为 LDAP 配置 Active Directory 授权

当 Active Directory 用户需要 LDAP 授权时,请完成此任务。收集 Active Directory 所需的信息,为所有访问文件存储的用户和组设置 RFC2307 属性,然后在挂载目标上配置 LDAP。

以下是配置 LDAP 的 Active Directory 授权所需的基本步骤:

  • 从 Active Directory 获取 LDAP 配置详细信息。
  • 配置 LDAP 绑定用户密钥。
  • 创建出站连接器。
  • 在挂载目标上配置 LDAP。

注意:

挂载目标不能使用自签名 LDAP 证书。
  1. 从 DNS 获取承载 LDAP 的系统,然后将其保存以供后续步骤使用。
    在此示例中,系统为 fss-ad.com
    C:\Users\administrator>nslookup -type=srv _ldap._tcp.fss-ad.com
    Server:  localhost
    Address:  ::1
    _ldap._tcp.fss-ad.com   SRV service location:
              priority       = 0
              weight         = 100
              port           = 389
              svr hostname   = ad-server.fss-ad.com
        ad-server.fss-ad.com    internet address = 10.9.1.194
  2. 在 Active Directory 中,找到用户和组的 distinguishedName (DN) 属性搜索基础。
    1. 转到 Active Directory Users and Computers 目录,展开 fs-ad.com
    2. 单击用户
  3. 获取 LDAP 绑定用户 DN。

    注意:

    此用户可以是具有目录搜索功能的最小特权用户。以后还需要此用户的密码才能配置出站连接器。
    1. 选择 ldap-user
    2. 单击 Attribute Editor(属性编辑器)选项卡。
    3. 选择 distinguishedName 属性。
    4. 复制值并将其保存以供后续步骤使用。
  4. 验证访问 OCI 文件存储的所有用户和组的 RFC2307 属性。
    有关说明和 RFC2307 属性表,请参见“在 Active Directory 中配置 RFC2307 属性”。
  5. 为上面步骤 3 中搜索到的 LDAP 绑定用户创建一个密钥。
    该密钥包含 LDAP 用户要绑定的密码。格式必须是纯文本。
  6. 配置出站连接器。“其他资源”下的“文件存储”页面中提供了出站连接器。在与挂载目标相同的 AD 中创建出站。
    1. 输入 DNS 名称。
      例如, ad-server.fss.ad.com
    2. 输入 LDAP 服务的 DSAPS 端口。
      例如: 636
    3. 输入绑定标识名。
      这是用于登录 LDAP 服务器的 LDAP 用户。例如, CN=ldap-user,CN=Users,DC=fss-ad,DC=com
    4. 选择存储密钥的区间中的 Vault。
      例如,ad-kerberos 区间中的 krb-vault
    5. 选择区间中的密钥。
      例如,ad-kerberos 区间中的 fss-mt-ad-1-ldap-password
    6. 选择密钥版本。
      例如: 1
    7. 单击创建
  7. 为挂载目标配置 LDAP。
    您将使用上一步中的出站连接器。
    1. 单击导航菜单中的 Storage 。在“文件存储”下,单击挂载目标
    2. 选择区间。
      例如,ad-kerberos
    3. 查找挂载目标,单击 NFS 选项卡,然后单击 Manage LDAP
    4. 用户搜索基础组搜索基础字段中输入搜索基础。

      注意:

      用户和组的搜索基础是从 Active Directory 用户和组容器获取的 DN。

      例如,搜索用户群CN=Users,DC=fss-ad,DC=com搜索组群CN=Users,DC=fss-ad,DC=com
    5. 输入高速缓存间隔,然后选择在出站连接器 1 字段中创建的出站连接器。
      在此示例中,高速缓存刷新间隔高速缓存生命周期负高速缓存生命周期是每 300 秒一次。Outbound Connector 1 中的 LDAP 帐户为 fss-ad-ob-1
    6. 保存设置。

配置 NFS 导出

根据授权要求配置导出设置。

  • 如果不需要 LDAP 授权,并且要将所有已验证的用户映射到单个 uid/gid,请配置以下设置以压缩所有用户。使用 NFS 客户端导出选项控制客户端访问文件系统的方式。编辑以下设置以压缩所有用户。
    1. 匿名访问权限:选择不允许
    2. Squash :选择 Yes(是)
    3. Squash UID :输入 99
    4. Squash GID :输入 99
    使用这些设置,所有已验证用户都将获得用户 ID 99 和组 ID 99。不执行 LDAP 查找。
  • 要使用 LDAP 授权用户,请使用 NFS 导出选项将 Kerberos 主体映射到 Unix 用户。
    1. 匿名访问:选择允许
    2. 压缩:选择
    3. Squash UID :输入 199
    4. Squash GID :输入 199
    通过这些设置,所有 Kerberos 用户都将映射到 LDAP 中的 Unix 用户 ID、组 ID 和组成员。如果 LDAP 中不存在用户,则使用匿名映射,并将用户映射到 Unix 用户 ID 199 和组 ID 199。如果禁用匿名访问,并且 LDAP 中不存在 Kerberos 用户,则会向访问该共享的用户提供访问被拒绝的错误。

Windows 中的 Unix 权限

使用 NFSv3 协议访问 Oracle Cloud Infrastructure File Storage 。授权使用 Unix 权限执行。

可以使用 ldp.exe 工具查询用户和组的 RFC2307 属性以查看 uid、gid 和组成员资格。根据存储在 LDAP 中的 uid、gid 和组成员资格检查 Unix 权限。
Tool: ldp.exe
Search Base: CN=Users,DC=fss-ad,DC=com 
Filter: (&(objectClass=posixAccount)(uid=fss-user-1))
Attributes: uidNumber;gidNumber

使用 Windows 资源管理器可以查看哪些所有者和组拥有该文件或文件夹,以及对文件或文件夹设置哪些权限。可以从文件或文件夹的属性访问 NFS 属性(Unix 属性)。

虽然 fss-user-1 用户的主组为 500,但 OCI 文件存储将考虑用户是权限检查成员的所有组。使用以下查询查找 fss-user-1 用户的组成员资格。
Tool: ldp.exe
Search Base: CN=Users,DC=fss-ad,DC=com 
Filter: (&(objectClass=posixGroup)(memberUid=fss-user-1))' gidNumber
Attributes: gidNumber

创建初始文件夹权限

实施时,请考虑文件夹权限。

OCI 文件存储根目录归 uid 0 和 755(rwx 表示 root,r-x 表示 root,r-x 表示其他用户)权限所有。需要 root 访问权限才能为用户创建其他文件夹或更改权限。这是用于创建和设置满足要求的初始权限的管理员任务。

可以使用以下方法之一获取对文件系统的管理访问权限:

  • 除非映射到 uidNumber 0 并且不压缩 root 用户,否则所有用户都是普通用户。在用户的 LDAP 属性中将管理员用户映射到 uidNumber 0。
  • 使用 SYS 验证将文件系统导出到安全的 Linux 工作站。使用 root 用户创建和管理权限。