• Save
S3 Client-Side Encryption by AWS SDK for Java/Ruby
Upcoming SlideShare
Loading in...5
×
 

S3 Client-Side Encryption by AWS SDK for Java/Ruby

on

  • 94 views

2014.10.3 Cloud Mix-Up vol.1で発表した、S3クライアント暗号化の話です。

2014.10.3 Cloud Mix-Up vol.1で発表した、S3クライアント暗号化の話です。

Statistics

Views

Total Views
94
Views on SlideShare
94
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

S3 Client-Side Encryption by AWS SDK for Java/Ruby S3 Client-Side Encryption by AWS SDK for Java/Ruby Presentation Transcript

  • Code the Clouds Mix-up Vol.1 S3 Client-Side Encryption for Big Data 〜コンテンツグラビティの実践〜 2014.10.3 吉田真吾 @yoshidashingo
  • 自己紹介 ☁ cloudpack エバンジェリスト ソリューションアーキテクト – コンサルティング – AWS設計・移行支援 – テクニカルマーケティング ☁ バックグラウンド – GISシステム,証券システム基盤 の開発を経て 2013.1より現職
  • 40>サービス EC2 EMR Kinesis WorkSpaces CloudWatch Direct Connect IAM Route 53 SNS SES SimpleDB CloudFront VPC Redshift ElastiCache Elastic SWF CloudFormation Transcoder CloudTrail SQS Storage Data Gateway Pipeline DynamoDB Elastic Beanstalk Glacier OpsWorks S3 Import/ Export RDS CloudSearch Mechanical Turk Management Console Amazon Web Services View slide
  • SDK & Toolkit Java Ruby .NET PHP Python (boto) JavaScript Amazon Web Services Node.js iOS Android AWS Toolkit for Visual Studio AWS Toolkit for Eclipse AWS Toolkit for Windows PowerShell AWS CLI View slide
  • Amazon S3 1B〜5TB Unlimited Fault Torelance 99.999999999 % High Availability 99.99 %
  • コンテンツグラビティ Content Gravity ☁ 「データを処理の近くに置く」 – あるいは処理をデータの近くに集める – リアルタイム(Real Time), 弾力性(Elasticity) ☁ AWSでは – Object Storage  Amazon S3 – RDBMS     Amazon RDS – NoSQL Database Amazon DynamoDB – Data Warehouse  Amazon Redshift などなどにデータを集約できる
  • あつめて Data Integration 可視化 Visualization
  • Data Integration ☁ 大量に収集する – 1日に数百GB〜数十TBとか現実ある ☁ リアルタイムに収集する – 粒度の小さい処理をたくさん実行する ☁ セキュアに収集する – ノード間のファイアウォール – 経路の暗号化 (IPSec) – ストレージの暗号化 – データの暗号化
  • Use Case: On-premise to Redshift NACLs & SG Bucket Policy PUT Server Replicator S3 (EC2) GET COPY Redshift BI Tools ☁ ノード間のファイアウォール ☁ 経路の暗号化 (IPSec) ☁ ストレージの暗号化 NACLs & SG IPsec VPN IPsec VPN
  • S3のデータを暗号化する方式 ☁ Client-Side Encryption – 独自の鍵を利用できる ☁ Server-Side Encryption – 鍵管理をAWSにまかせられる ☁ Server-Side Encryption with Customer-Provided Encryption Keys – 独自の鍵を渡して暗号化する ☁ 独自に暗号化して格納 – 暗号化制御をすべて掌握できる
  • Client-Side Encryption (CSE) ☁ AWS SDK for Java & Ruby でサポート – プライベート暗号キーを作成する(手元で管理) – エンベロープ暗号キーでファイルを暗号化 – エンベロープ暗号キーをプライベート暗号キーで暗号化 – 暗号化したファイルのメタデータに暗号化済みエンベロープキーを付 与してアップロードする – psqlでRedshiftに接続する – ファイルとプライベート暗号キーをパラメータに渡してCOPY文を発行 する
  • Java (暗号キーの生成) Create256BitAESsecret.java  ここ見てね ↓ http://yoshidashingo.hatenablog.com/entry/2014/08/10/193631 
  • Java (アップロードプロセス) UploadDirectoryUsingSymmetricKeyClientSideEncryption.java  ここ見てね ↓ http://yoshidashingo.hatenablog.com/entry/2014/08/10/193631 
  • RedshiftにCOPY mydb=# COPY test FROM 's3://<bucketname>//test.csv' CSV credentials 'aws_access_key_id=xxxxxxxxxx;aws_secret_access_key=xxxxxxxx xx;master_symmetric_key=<private_key>' delimiter ',' encrypted; 
  • AWS SDK for Ruby でも
  • Ruby (暗号キー生成&アップロード) # Usage: ruby s3clienc_write.rb bucketname filename  require 'rubygems' require 'aws-sdk' require 'openssl'  bucketname = ARGV[0] filename = ARGV[1] keyname = 'key_' + bucketname + '_' + filename data = File.open(filename)  # Creates and store a string key symmetric_key = OpenSSL::Cipher::AES256.new(:CBC).random_key  File.open(keyname, 'wb') do |file| file.write(symmetric_key) end  options = { :encryption_key => symmetric_key } s3_object = AWS.s3.buckets[bucketname].objects[filename]  s3_object.write(data, options)
  • Ruby (ダウンロード) # Usage: ruby s3clienc_read.rb bucketname filename  require 'rubygems' require 'aws-sdk' require 'openssl'  s3=AWS::S3.new bucketname = ARGV[0] filename = ARGV[1] keyname = 'key_' + bucketname + '_' + filename  symmetric_key = File.read(keyname) options = { :encryption_key => symmetric_key } s3_object = AWS.s3.buckets[bucketname].objects[filename]  File.open(filename, 'wb') do |file| s3_object.read(options) do |chunk| file.write(chunk) end end
  • AWS SDK for Ruby V2(core)の対応 ☁ 今のところ、Server-Side Encryption with Customer-Provided Encryption Keys (SSE-C)しかない – 経路上での「データの暗号化」がされない – 経路の暗号化で担保するか、納得いかなけれ ばJavaで ☁ 参考 – http://docs.aws.amazon.com/sdkforruby/ api/frames.html
  • Read Later ☁ AWS SDK for JavaでS3クライアント暗号化 をしたCSVをAmazon RedshiftにCOPY(イン ポート)する http://yoshidashingo.hatenablog.com/entry/ 2014/08/10/193631  ☁ AWS SDK for RubyでS3クライアント暗号化 を試す http://yoshidashingo.hatenablog.com/entry/ 2014/08/08/212646 
  • 最上位パートナー
  • 人材募集中 ^^v