Django:如何在不显示源代码的情况下使用AWS访问密钥

时间:2020-11-10 16:47:28

标签: django amazon-web-services

我正在关注来自的教程 https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/hls-playback.html#how-hls-ex1

它很好用,但是访问密钥在源代码中对用户可见。我该如何使用Django对用户隐藏访问密钥?

教程使访问键在源代码中可见:

var options = {
accessKeyId: $('#accessKeyId').val(),
secretAccessKey: $('#secretAccessKey').val(),
sessionToken: $('#sessionToken').val() || undefined,
region: $('#region').val(),
endpoint: $('#endpoint').val() || undefined
}
var kinesisVideo = new AWS.KinesisVideo(options);
var kinesisVideoArchivedContent = new AWS.KinesisVideoArchivedMedia(options);

我认为我需要设置 settings.py中的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY变量,但是如何在不向用户透露它们的情况下使用它们?

2 个答案:

答案 0 :(得分:1)

您应该在后端计算视频URL,然后将其传递给模板,例如:https://aws.amazon.com/blogs/aws/amazon-kinesis-video-streams-adds-support-for-hls-output-streams/

AWS文档不建议您将密钥插入JavaScript。这对您来说是一个很好的收获,但是其他人可能并不那么明智。您应将文档报告给AWS。 (AWS文档所有页面底部的“提供反馈”链接。)

此外,为了不将您的AWS密钥/秘密检入到存储库中,请让您的设置从未检入存储库的配置文件或环境变量中加载这些内容。检出django-environ可以很好地完成此操作的库。

答案 1 :(得分:1)

很多方法-我喜欢python-decouple:

settings.py:

from decouple import config
    
AWS_SECRET_KEY = config('AWS_SECRET_KEY')
SOME_ENV_VAR = config('SOME_ENV_VAR')
...

.env:

AWS_SECRET_KEY = 'the_secret_key'
SOME_ENV_VAR = 'some_value'
...

然后确保在.env文件中包含.gitignore

相关问题