本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 DMS v3.5.3 开始,您可以将 Oracle 或SQL服务器源端点配置为使用 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 密钥缓存文件存储在 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>
值是ARN您在上一步中创建的 Keycache Secrets Manager。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [
<keycache_secretsmanager_arn>
] } ] }
在复制实例上启用 Kerberos 支持 AWS DMS
Kerberos 领域与 Windows 中的域相同。为了解析主域,Kerberos 依赖于域名服务 () DNS。当您设置dns-name-servers
参数时,您的复制实例将使用您预定义的自定义DNS服务器集来解析 Kerberos 域域。解决 Kerberos 领域查询的另一种选择是在复制实例虚拟私有云上配置 Amazon Route 53()VPC。有关更多信息,请参阅 Route 53。
使用在DMS复制实例上启用 Kerberos 支持 AWS Management Console
要使用控制台启用 Kerberos 支持,请在 “创建复制实例” 或 “修改复制实例” 页面的 Kerberos 身份验证部分输入以下信息:
您
krb5.conf
文件中的内容包含密钥缓存文件的 Secrets Manager 密钥 ARN
有权访问密钥管理器ARN并有权检索 keycache 文件的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服务器源端点上启用 Kerberos 身份验证之前,请确保您可以从客户机使用 Kerberos 协议向源数据库进行身份验证。您可以使用 AWS DMS 诊断AMI功能启动与复制EC2实例相同的 Amazon 实例,然后测试 kerberos VPC 身份验证。有关 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服务器
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 相关的错误。有关更多信息,请参阅测试连接