#amazon-web-services #firebase
#amazon-веб-сервисы #firebase
Вопрос:
Я делаю резервные копии firebase и пытаюсь найти наилучший способ сохранить данные в безопасности и зашифрованном виде.
Firebase сказал мне предоставить открытый ключ PGP, но в AWS также есть система управления ключами (KMS) для создания ключей. Я создал ключ, но не уверен, где взять его версию с открытым ключом, чтобы передать firebase?
Не уверен, что я все делаю правильно, но дайте мне знать, если у вас есть советы о том, как наилучшим образом защитить корзину и данные, которые в ней есть.
Ответ №1:
Вы можете настроить «базовый» SSE (шифрование на стороне сервера) с помощью AES256, который используется по умолчанию. С этим и политикой корзины, которая запрещает любые загрузки, у которых нет заголовка SSE, все должно быть в порядке.
Это довольно приличный уровень шифрования, поскольку каждый объект зашифрован уникальным ключом, и в качестве дополнительной защиты указанный ключ шифруется с помощью мастер-ключа, который регулярно обновляется самой AWS.
Чтобы настроить это, в основном вы применяете следующую политику корзины:
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YourBucket/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YourBucket/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": "true"
}
}
}
]
}
Будут приниматься только putObject
запросы со следующими заголовками запроса:
"x-amz-server-side-encryption":"AES256"
Вы также можете настроить свою собственную KMS (систему управления ключами), но я считаю, что это довольно дорого.
Комментарии:
1. спасибо @tom! несколько вопросов — таким образом, это шифрует объекты после их попадания в aws, правильно? разве вы не хотели бы, чтобы объекты были зашифрованы перед отправкой в aws с помощью открытого ключа?
2. Это полностью зависит от вас, хотя, если вы отправляете свои данные по протоколу HTTPS, который использует TLS (безопасность транспортного уровня) 1.2, они уже должны быть зашифрованы. Если вы хотите достичь параноидального уровня безопасности, вы можете даже зашифровать его перед отправкой по сети, что, если хотите знать мое мнение, необязательно.