Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何最好地为上传到aws的文件设置加密?_Amazon Web Services_Firebase - Fatal编程技术网

Amazon web services 如何最好地为上传到aws的文件设置加密?

Amazon web services 如何最好地为上传到aws的文件设置加密?,amazon-web-services,firebase,Amazon Web Services,Firebase,我正在做firebase备份,并试图找出保持数据安全和加密的最佳方法 firebase告诉我提供一个公共PGP密钥,但AWS也有一个密钥管理系统(KMS)来创建密钥。我创建了一个密钥,但不确定从何处获取该密钥的公钥版本以提供给firebase 不确定我是否做得对,但请告诉我您是否有关于如何最好地保护存储桶及其数据的建议 您可以使用默认的AES256设置“基本”SSE(服务器端加密)。有了这个,再加上一个拒绝任何没有SSE头的上传的bucket策略,你应该可以了 这是一个相当不错的加密级别,因为每

我正在做firebase备份,并试图找出保持数据安全和加密的最佳方法

firebase告诉我提供一个公共PGP密钥,但AWS也有一个密钥管理系统(KMS)来创建密钥。我创建了一个密钥,但不确定从何处获取该密钥的公钥版本以提供给firebase

不确定我是否做得对,但请告诉我您是否有关于如何最好地保护存储桶及其数据的建议

您可以使用默认的AES256设置“基本”SSE(服务器端加密)。有了这个,再加上一个拒绝任何没有SSE头的上传的bucket策略,你应该可以了

这是一个相当不错的加密级别,因为每个对象都使用一个唯一的密钥进行加密,并且作为额外的保护措施,它使用AWS自身定期旋转的主密钥对所述密钥进行加密

要进行设置,基本上您可以应用以下bucket策略:

{
  "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(密钥管理系统),但我认为这相当昂贵。

谢谢@tom!几个问题-所以这会在对象击中aws后加密对象,对吗?您不希望在使用公钥将对象发送到aws之前对其进行加密吗?这完全取决于您自己,但如果您通过使用TLS(传输层安全)1.2的HTTPS发送数据,则应该已经对其进行加密。如果你想达到一个偏执的安全级别,你甚至可以在通过电线发送之前对它进行加密,如果你问我的话,这是没有必要的。