本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 DMS v3.5.3 开始,您可以将 Oracle 或 SQL Server 源端点配置为使用 Kerberos 身份验证连接到数据库实例。DMS 支持 AWS Directory Service 微软 Active Directory 和 Kerberos 身份验证。有关对 Microsoft AWS Active Directory 服务的托管访问权限的更多信息,请参阅什么是 AWS Directory Service? 。
AWS DMS Kerberos 身份验证架构概述
下图简要概述了 AWS DMS Kerberos 身份验证工作流程。

使用 Kerberos 身份验证的限制 AWSAWS DMS
将 Kerberos 身份验证与以下限制一起使用: AWS AWS DMS
DMS 复制实例支持一个 Kerberos
krb5.conf
文件和一个密钥缓存文件。你必须在票证到期前至少 30 分钟更新 Secrets Manager 中的 Kerberos 密钥缓存文件。
启用 Kerberos 的 DMS 终端节点仅适用于启用了 Kerberos 的 DMS 复制实例。
先决条件
要开始,您必须从现有的 Active Directory 或经过 Kerberos 身份验证的主机上完成以下先决条件:
与您的本地广告建立活动目录信任关系。有关更多信息,请参阅教程:在您的 AWS 托管 Microsoft AD 和自行管理的 Active Directory 域之间创建信任关系。
准备 Kerberos
krb5.conf
配置文件的简化版本。包括有关领域、域管理服务器的位置以及主机名到 Kerberos 领域的映射的信息。您需要验证krb5.conf
内容的格式是否为域名和域名采用了正确的混合大小写。例如:[libdefaults] dns_lookup_realm = true dns_lookup_kdc = true forwardable = true default_realm = MYDOMAIN.ORG [realms] MYDOMAIN.ORG = { kdc = mydomain.org admin_server = mydomain.org } [domain_realm] .mydomain.org = MYDOMAIN.ORG mydomain.org = MYDOMAIN.ORG
准备一个 Kerberos 密钥缓存文件。该文件包含客户端主体信息的临时 Kerberos 凭证。该文件不存储客户端的密码。您的 DMS 任务使用此缓存票证信息无需密码即可获取其他凭证。在现有的 Active Directory 或 Kerberos 认证的主机上运行以下步骤以生成密钥缓存文件。
创建一个 Kerberos 密钥表文件。你可以使用 k util 或 k tpass 实用程序生成密钥表文件。
有关微软 ktpass 实用程序的更多信息,请参阅 Windows 服务器文档中的 ktpass
。 有关 MIT kutil 实用程序的更多信息,请参阅麻省理工学院 K erber os 文档中的 kuti
l。 使用 kinit 实用程序从密钥表文件创建 Kerberos 密钥缓存文件。有关 kin it 实用程序的更多信息,请参阅麻省理工学院 Kerberos 文档中的 k in
it。
-
使用参数将 Kerberos 密钥缓存文件存储在 Secrets Manager 中。
SecretBinary
当你将密钥缓存文件上传到 Secrets Manager 时,DMS 会对其进行检索,然后大约每 30 分钟更新一次本地缓存文件。当本地密钥缓存文件超过预定义的过期时间戳时,DMS 会优雅地停止任务。为避免正在进行的复制任务期间身份验证失败,请在票证到期前至少 30 分钟更新 Secrets Manager 中的密钥缓存文件。有关更多信息,请参阅 S ecrets Manager API 参考中的 creat esec ret。以下 AWS CLI 示例显示了如何在 Secrets Manager 中以二进制格式存储密钥缓存文件:aws secretsmanager create-secret —name keycache —secret-binary fileb:
//keycachefile
向 IAM 角色授予从 Secrets Manager 获取密钥缓存文件的
DescribeSecret
权限。GetSecretValue
确保 IAM 角色包含dms-vpc-role
信任策略。有关dms-vpc-role
信任策略的更多信息,请参阅创建要与一起使用的 IAM 角色 AWS DMS。
以下示例显示了具有 Secrets Manager GetSecretValue
和DescribeSecret
权限的 IAM 角色策略。该<keycache_secretsmanager_arn>
值是你在上一步中创建的 Keycache Secrets Manager ARN。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [
<keycache_secretsmanager_arn>
] } ] }
在 AWS DMS 复制实例上启用 Kerberos 支持
Kerberos 领域与 Windows 中的域相同。为了解析主域,Kerberos 依赖于域名服务 (DNS)。当您设置dns-name-servers
参数时,您的复制实例将使用您预定义的一组自定义 DNS 服务器来解析 Kerberos 域域。解决 Kerberos 领域查询的另一种选择是在复制实例虚拟私有云 (VPC) 上配置 Amazon Route 53。有关更多信息,请参阅 Route 53。
使用在 DMS 复制实例上启用 Kerberos 支持 AWS Management Console
要使用控制台启用 Kerberos 支持,请在 “创建复制实例” 或 “修改复制实例” 页面的 Kerberos 身份验证部分输入以下信息:
您
krb5.conf
文件中的内容包含密钥缓存文件的 Secrets Manager 密钥的 ARN
有权访问密钥管理器 ARN 并有权检索密钥缓存文件的 IAM 角色的 ARN
使用在 DMS 复制实例上启用 Kerberos 支持 AWS CLI
以下 AWS CLI 示例调用创建了一个支持 Kerberos 的私有 DMS 复制实例。复制实例使用自定义 DNS 来解析 Kerberos 领域。有关更多信息,请参阅 create-replication-instance。
aws dms create-replication-instance --replication-instance-identifier my-replication-instance --replication-instance-class dms.t2.micro --allocated-storage 50 --vpc-security-group-ids sg-12345678 --engine-version 3.5.4 --no-auto-minor-version-upgrade --kerberos-authentication-settings'{"KeyCacheSecretId":<secret-id>,"KeyCacheSecretIamArn":<secret-iam-role-arn>,"Krb5FileContents":<krb5.conf file contents>}' --dns-name-servers
<custom dns server>
--no-publicly-accessible
在源端点上启用 Kerberos 支持
在 DMS Oracle 或 SQL Server 源端点上启用 Kerberos 身份验证之前,请确保您可以从客户端计算机使用 Kerberos 协议向源数据库进行身份验证。您可以使用 AWS DMS 诊断 AMI 在与复制 EC2 实例相同的 VPC 上启动 Amazon 实例,然后测试 kerberos 身份验证。有关 AMI 的更多信息,请参阅使用 AWS DMS 诊断支持 AMI。
使用 AWS DMS 控制台
在 “访问端点数据库” 下,选择 Kerberos 身份验证。
使用 AWS CLI
指定端点设置参数并将AuthenticationMethod
选项设置为 kerberos。例如:
Oracle
aws dms create-endpoint --endpoint-identifier my-endpoint --endpoint-type source --engine-name oracle --username dmsuser@MYDOMAIN.ORG --server-name
mydatabaseserver
--port 1521 --database-namemydatabase
--oracle-settings "{\"AuthenticationMethod\": \"kerberos\"}"
SQL Server
aws dms create-endpoint --endpoint-identifier my-endpoint --endpoint-type source --engine-name sqlserver --username dmsuser@MYDOMAIN.ORG --server-name
mydatabaseserver
--port 1433 --database-namemydatabase
--microsoft-sql-server-settings "{\"AuthenticationMethod\": \"kerberos\"}"
测试源端点
您必须针对启用了 Kerberos 的复制实例测试启用 Kerberos 的终端节点。如果您未正确配置复制实例或源端点进行 Kerberos 身份验证,则终端节点test-connection
操作将失败,并可能返回与 Kerberos 相关的错误。有关更多信息,请参阅测试连接