Загрузка в красное смещение из s3 без учетных данных красного смещения - PullRequest
0 голосов
/ 04 июля 2018

Мы загружаем данные загрузки из S3 в Redshift, но проверяем имя пользователя и пароль красного смещения в командной строке.

Можем ли мы сделать это слишком на основе ролей, поскольку это приводит к жесткому кодированию пароля имени пользователя в коде, который является уязвимостью безопасности.

psql -h $redshift_jdbc_url -U $redshift_db_username -d $redshift_dbname -p $port_number -c "copy $destinationTable$columnList from '$s3fileName' credentials 'aws_iam_role=arn:aws:iam::$account_number:role/$s3role;master_symmetric_key=$master_key' region '$s3region' format as json '$jsonPathFile' timeformat 'auto' GZIP TRUNCATECOLUMNS maxerror $maxError";

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Подход 1 : Создайте временное имя пользователя / пароль, который имеет TTL как часть вашего скрипта. Используйте это временное имя пользователя / пароль для подключения к БД.

Ссылка из документации AWS

https://docs.aws.amazon.com/cli/latest/reference/redshift/get-cluster-credentials.html

Подход 2 : Используйте Служба AWS Secerets Manager

0 голосов
/ 04 июля 2018

Хотя этот вопрос не имеет никакого отношения конкретно к Redshift, может быть несколько вариантов, позволяющих избежать ввода имени пользователя / пароля, по ошибке отмеченных на code repository, таких как (cvs, git и т. Д.) Или получающих общий доступ.

Не уверен, что мы делаем (как указано ниже) лучшую практику или нет, вот как мы делаем, и я думаю, это безопасно.

Мы используем environment variable в нашем случае, и эти переменные среды находятся вне репозитория исходного кода, и код сценария оболочки обычно читает там только в конкретной среде instance.

Например, если у вас есть сценарий оболочки, который выполняет вышеупомянутую команду, загрузит переменную файла среды, как показано ниже. пример psql.sh

#!/bin/bash
echo "Loading environment variable"

. "$HOME/.env"
Your other commands

Файл env может иметь переменные, как показано ниже,

#!/bin/bash
export REDSHIFT_USER="xxxxxxxxx"
export REDSHIFT_PASSWORD="xxxxxx"

Есть и другие варианты, но не уверен, что они хорошо работают с Redshift.

Надеюсь, что ответит на ваш вопрос.

...