本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Cassandra Node.js 客户端驱动程序以编程方式访问亚马逊密钥空间
本节向您展示如何使用 Node.js 客户端驱动程序连接到 Amazon Keyspaces。要为用户和应用程序提供凭证,以通过编程方式访问 Amazon Keyspaces 资源,您可以执行以下任一操作:
-
创建与特定 AWS Identity and Access Management (IAM) 用户关联的服务特定凭证。
-
为了增强安全性,我们建议为用于所有 AWS 服务的 IAM 用户或角色创建 IAM 访问密钥。借助适用于 Cassandra 客户端驱动程序的 Amazon Keyspaces SigV4 身份验证插件,您可以使用 IAM 访问密钥而不是用户名和密码来验证对 Amazon Keyspaces 的调用。有关更多信息,请参阅 为 Amazon Keyspaces 创建和配置 AWS 证书。
主题
开始前的准备工作
在开始之前,您需要完成以下任务。
Amazon Keyspaces 要求使用传输层安全性协议 (TLS) 来帮助保护与客户端的连接。要使用 TLS 连接到 Amazon Keyspaces,您需要下载 Amazon 数字证书,并将 Python 驱动程序配置为使用 TLS。
下载以下数字证书并将文件保存在本地或您的主目录中。
AmazonRootCA1
AmazonRootCA2
AmazonRootCA3
AmazonRootCA4
Starfield Class 2 根目录(可选 — 用于向后兼容)
要下载证书,可以使用以下命令。
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
注意
Amazon Keyspaces 此前使用的是锚定于 Starfield 2 类 CA 的 TLS 证书。 AWS 正在全部迁移 AWS 区域 到根据亚马逊信任服务颁发的证书(亚马逊根 CA 1—4)。在此过渡期间,将客户端配置为信任 Amazon Root CA 1—4 和 Starfield 根,以确保所有区域的兼容性。
将所有下载的证书合并到一个pem文件keyspaces-bundle.pem中,其名称如我们的示例所示。您可以使用以下 命令进行这项操作:记下文件路径,稍后需要这个。
cat AmazonRootCA1.pem \ AmazonRootCA2.pem \ AmazonRootCA3.pem \ AmazonRootCA4.pem \ sf-class2-root.crt \ >keyspaces-bundle.pem
使用适用于 Apache Cassandra 的 Node.js DataStax 驱动程序和特定服务凭证连接到亚马逊密钥空间
将您的驱动程序配置keyspaces-bundle.pem为使用组合证书文件进行 TLS,并使用特定服务的凭据进行身份验证。例如:
const cassandra = require('cassandra-driver'); const fs = require('fs'); const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword'); const sslOptions1 = { ca: [ fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')], host: 'cassandra.us-west-2.amazonaws.com', rejectUnauthorized: true }; const client = new cassandra.Client({ contactPoints: ['cassandra.us-west-2.amazonaws.com'], localDataCenter: 'us-west-2', authProvider: auth, sslOptions: sslOptions1, protocolOptions: { port: 9142 } }); const query = 'SELECT * FROM system_schema.keyspaces'; client.execute(query) .then( result => console.log('Row from Keyspaces %s', result.rows[0])) .catch( e=> console.log(`${e}`));
使用说明:
"替换为第一步中保存的组合证书文件的路径。path_to_file/keyspaces-bundle.pem"按照以下步骤确保
ServiceUserName和ServicePassword与您在生成服务特定凭证时获得的用户名和密码相匹配。创建用于通过编程方式访问 Amazon Keyspaces 的服务特定凭证。有关可用端点的列表,请参阅Amazon Keyspaces 的服务端点。
使用适用于 Apache Cassandra 的 DataStax Node.js 驱动程序和 SigV4 身份验证插件连接到亚马逊 Keyspaces
以下部分介绍如何使用Apache Cassandra开源 DataStax Node.js 驱动程序的SigV4身份验证插件来访问亚马逊密钥空间(适用于Apache Cassandra)。
请按照为 Amazon Keyspaces 创建和配置 AWS 证书中的步骤为 IAM 用户或角色创建凭证(如果您尚未创建)。
将 Node.js SigV4 身份验证插件从存储库添加到您的应用程序中。 GitHub AWSCredentialsProvider 获取凭证。
$ npm install aws-sigv4-auth-cassandra-plugin --save
此代码示例说明如何将的 Region-specific 实例设置SigV4AuthProvider为身份验证提供商。
const cassandra = require('cassandra-driver'); const fs = require('fs'); const sigV4 = require('aws-sigv4-auth-cassandra-plugin'); const auth = new sigV4.SigV4AuthProvider({ region: 'us-west-2', accessKeyId:'AKIAIOSFODNN7EXAMPLE', secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'}); const sslOptions1 = { ca: [ fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')], host: 'cassandra.us-west-2.amazonaws.com', rejectUnauthorized: true }; const client = new cassandra.Client({ contactPoints: ['cassandra.us-west-2.amazonaws.com'], localDataCenter: 'us-west-2', authProvider: auth, sslOptions: sslOptions1, protocolOptions: { port: 9142 } }); const query = 'SELECT * FROM system_schema.keyspaces'; client.execute(query).then( result => console.log('Row from Keyspaces %s', result.rows[0])) .catch( e=> console.log(`${e}`));
使用说明:
将
"替换为第一步中保存的证书的路径。path_to_file/keyspaces-bundle.pem"确保
accessKeyId和secretAccessKey与您使用获得的访问密钥和私有访问密钥相匹配AWSCredentialsProvider。有关更多信息,请参阅中的在 AWS SDK Node.js 中设置证书 Node.js。 JavaScript要在代码之外存储访问密钥,请参阅存储用于通过编程方式进行访问的访问密钥中的最佳实践。
有关可用端点的列表,请参阅Amazon Keyspaces 的服务端点。