cassandra astra安全部署到heroku

jhdbpxl9  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(426)

我正在使用python和cassandra(astra提供者)开发一个应用程序,并尝试在heroku上部署它。
问题是连接到数据库需要本地存在凭据zip文件-https://docs.datastax.com/en/astra/aws/doc/dscloud/astra/dscloudconnectpythondriver.html “/path/to/secure-connect-database_name.zip”和heroku不支持上载凭据文件。
我可以将用户名和密码配置为环境变量,但凭据zip文件不能配置为环境变量。

heroku config:set CASSANDRA_USERNAME=cassandra
heroku config:set CASSANDRA_PASSWORD=cassandra
heroku config:set CASSANDRA_KEYSPACE=mykeyspace

有没有什么方法可以让我使用zip文件作为一个环境变量,我想提取所有文件,并在heroku中配置每个文件作为一个环境变量。
但是,如果我开始使用从环境变量提取的文件,我不确定应该指定什么来代替cluster(cloud=cloud\u config,auth\u provider=auth\u provider)?
我知道我可以在我的私有git repo中签入凭证zip,这样就可以工作了,但是检查凭证似乎并不安全。
我想到的另一个想法是将其存储在s3中,并在部署期间获取文件,然后将其提取到temp目录中以供使用。
非常感谢您的指点和帮助。

2uluyalo

2uluyalo1#

如果您可以将安全包签入repo,那么应该很容易—您只需从云配置Map中指向它,并通过环境变量从配置的机密中获取用户名/密码:

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
import os

cloud_config = {
    'secure_connect_bundle': '/path/to/secure-connect-dbname.zip'
}
auth_provider = PlainTextAuthProvider(
    username=os.environ['CASSANDRA_USERNAME'], 
    password=os.environ['CASSANDRA_PASSWORD'])
cluster = Cluster(cloud=cloud_config, auth_provider=auth_provider)
session = cluster.connect()

将文件存储在s3上并下载的想法也不是很糟糕。您可以在脚本本身中实现它,以获取文件,还可以使用环境变量传递s3凭据,因此文件在存储库中不可访问,而且如果需要,交换安全捆绑包会更容易。

相关问题