2 ポイント 投稿者 GN⁺ 2024-06-02 | 1件のコメント | WhatsAppで共有

AWS S3バケットの暗号化は思っているほど単純ではない

S3の暗号化オプション

  • サーバー側暗号化 (SSE-S3): AWSが管理するキーを使用してデータを暗号化する。
  • サーバー側暗号化 (SSE-KMS): AWS Key Management Service (KMS) を使用してデータを暗号化する。
  • サーバー側暗号化 (SSE-C): ユーザーが提供したキーを使用してデータを暗号化する。
  • クライアント側暗号化: ユーザーがデータをアップロードする前に自分で暗号化する。

暗号化とアクセス制御の違い

  • 暗号化: データを保護するためにデータを変換するプロセス。
  • アクセス制御: 誰がデータにアクセスできるかを決定するポリシー。
  • S3の暗号化は実際にはアクセス制御により近く、データ保護そのものよりもアクセス権限の管理に重点を置いている。

なぜ重要なのか

  • セキュリティ: 暗号化により、データ漏えい時でもデータを保護できる。
  • コンプライアンス: 特定の業界規制や法的要件を満たすために暗号化が必要になる場合がある。
  • データ完全性: 暗号化はデータが改ざんされていないことを保証する。

GN⁺の見解

  • 暗号化とアクセス制御の混同: 多くの人が暗号化とアクセス制御を混同している。この記事はその違いを明確に説明している。
  • 実際のセキュリティ水準: S3の暗号化オプションが実際にどの程度安全なのかについて、批判的な視点が必要だ。
  • 代替技術: S3以外にも、Google Cloud Storage や Azure Blob Storage のような他のクラウドストレージサービスも検討に値する。
  • ユーザー教育: 初級エンジニアに暗号化とアクセス制御の違いを明確に理解させることが重要だ。
  • 技術導入時の考慮事項: 暗号化技術を導入する際には、性能低下やコスト増加などの要素を考慮する必要がある。

1件のコメント

 
GN⁺ 2024-06-02
Hacker Newsの意見
  • ファイルシステムが大文字と小文字を区別することへの不満には同意しない。これは当然のことであり、macOSがこれをサポートしていないのは不便だ。
  • S3のパスは実際のディレクトリではなく、シミュレーションにすぎない。たとえば、/builds/1/installer.exe は実際には名前に / を含むファイルである。
  • S3や他のAWSサービスの利用は複雑で、ドキュメントも膨大なため、誤ってデータを公開してしまう可能性がある。Hetzner Storage BoxesやDigitalOcean Spacesのようなシンプルなサービスのほうが好ましい。
  • 数十億個のオブジェクトを削除するのは高コストになりうる。ただし、ワイルドカードやバケット全体のオブジェクト有効期限を設定すれば、無料ですぐにストレージ料金の発生を止められる。
  • 失敗したマルチパートアップロードが見えないまま残り、ストレージ料金が発生することがある。S3の「Simple」という名前が形無しだ。
  • マルチパートアップロードは複数のマシンで実行できず、LISTリクエストは遅く高コストである。バケット作成は一貫性がない場合がある。
  • S3は大文字と小文字を区別するため、ファイルシステム構造に変換する際に問題になることがある。
  • ほとんどのS3設定はGETリクエストを許可していても、HEADリクエストは許可していない。そのため、キャッシュを活用するフローが動作しない可能性がある。
  • 事前署名付きURLを多用する場合、URL生成速度を10倍から40倍まで向上させられる。
  • 完了していないマルチパートアップロードについてもストレージ料金を支払う必要がある。自動削除設定を有効にすべきだ。
  • 大文字小文字の区別に関する議論は、英語中心すぎる。
  • S3は単一のTCP接続が100件のHTTPリクエストを送信した後、以降のすべてのリクエストを黙って無視する。
  • 誤って設定されたWebサイトが、ユーザーコンテンツをAmazon Glacierにアップロードし、後で配信してしまうことがある。
  • S3はレイテンシが高いため、Web配信には向いていない。小さなオブジェクトでも一貫したレイテンシは100〜200ミリ秒である。