Ruby/Ruby on Rails를 사용하여 DynamoDB의 암호화를 설정할 수 있습니까?AWS DynamoDB 암호화 - Ruby
aws-sdk에서 제공하나요?
나 혼자서해야합니까?
아니면 불가능합니까?
참고 : 동일한 Rails 응용 프로그램이 병렬로 실행되며 동일한 DynamoDB에 연결되는 경우는 거의 없습니다.
Ruby/Ruby on Rails를 사용하여 DynamoDB의 암호화를 설정할 수 있습니까?AWS DynamoDB 암호화 - Ruby
aws-sdk에서 제공하나요?
나 혼자서해야합니까?
아니면 불가능합니까?
참고 : 동일한 Rails 응용 프로그램이 병렬로 실행되며 동일한 DynamoDB에 연결되는 경우는 거의 없습니다.
DynamoDB는 데이터를 암호화하지 않습니다. DynamoDB 클라이언트 코드에서 암호화 및 암호 해독을 처리해야합니다. 이 문제를 처리하기 위해 Java library이 있지만 Ruby에 대해서는 표시되지 않습니다.
DynamoDB는 암호화 한 필드에 대해 의미있는 쿼리를 수행 할 수 없습니다.
AWS KMS 서비스를 사용하여 응용 프로그램이 DynamoDB에 데이터를 삽입하기 전에 데이터를 암호화하는 데 사용하는 암호화 키를 관리하는 것이 좋습니다.
AWS로 중요한 필드 암호화 KMS는 잘 작동합니다 - 편리한 모듈에 포장하는 방법의 예가 여기에 있습니다.
은 보석 'AWS-SDK', 아래의 대답은 '~> 2.0'설정/초기화/aws_kms.rb
# Helper for AWS KMS encryption/decryption:
#
# Example:
#
# cipherdata = Aws::KMS.encrypt('boring plain text')
#
# => "AQICAkSXnpkzAJrrzNcjlMxRK78jbKHnkPohQdSZ445Xv29z6C2ty433pG2rcs96IujEj4IXAa1rmSzJXfiQqw4LaFcluh3CYsFQOlOfhgh0LhPdiQhnIP7d0BzlIu3uRFzHLrhIpg2JssVsjnCLZstNkzerfiwYtGSNTpltVjaqJblz3kktSFNxnMoVOcJSlvTbuMdiD9yplGMDD3LC0YKjUZtEZIqEjt=="
#
# Aws::KMS.decrypt(cipherdata)
#
# => "boring plain text"
#
#
# Protects from AWS KMS calls if we are in TEST environment
#
module Aws::KMS
def self.encrypt(plaintext)
if Rails.env.test? || Rails.env.development?
['not_encrypted_in_test', plaintext].join('|') # faking encryption so we can test this without AWS
else
cipherdata = client.encrypt({
key_id: ENV['KMS_ARN'],
plaintext: plaintext,
}).ciphertext_blob
Base64.strict_encode64(cipherdata)
end
end
def self.decrypt(ciphertext)
if Rails.env.test? || Rails.env.development?
ciphertext.split('|').second # faking decryption so we can test this without AWS
else
cipherdata = Base64.strict_decode64(ciphertext)
client.decrypt({
ciphertext_blob: cipherdata
}).plaintext
end
end
# this helper method can be called to check if the ENV variables are configured correctly:
def self.setup_correct?
plaintext = 'Hey, it works!'
cipherdata = Aws::KMS.encrypt(plaintext)
Aws::KMS.decrypt(cipherdata) == plaintext
end
def self.client
Aws::KMS::Client.new
end
end
체크 아웃이 필요 – Tilo