[レポート]AWSクラウドセキュリティの基礎 #SEC205 #reinvent

本記事は、AWS re:Invent 2019 のセッション 「The fundamentals of AWS cloud security」 のレポートです。
2019.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本記事はAWS re:Invent 2019のセッション「The fundamentals of AWS cloud security」のレポートです。

概要

日本語訳

AWSを構成するサービスは多種多様ですが、データとインフラストラクチャを保護するために必要な一連の概念はシンプルで簡単です。このセッションが終了するまでに、AWSで実行するワークロードを安全に保護するために適用できる基本的なパターンがわかっています。ネットワークセキュリティの基本、アクセス管理ポリシーの読み取りと書き込みのプロセス、およびデータ暗号化について説明します。

原文

The services that make up AWS are many and varied, but the set of concepts you need to secure your data and infrastructure is simple and straightforward. By the end of this session, you know the fundamental patterns that you can apply to secure any workload you run in AWS with confidence. We cover the basics of network security, the process of reading and writing access management policies, and data encryption.

スピーカー

  • Becky Weiss - Senior Principal Engineer, Amazon Web Services

レポート

Agend

  • クラウド制御:IAM
  • データ制御:AWS KMS
  • ネットワーク制御:Amaozn VPC

クラウド制御:IAM

それは何か

  • "I"-Authentication(認証):ひととアプリケーションのIDのサポート
  • "AM"-Authorization(認可):クラウドリソースへのアクセスを制御し強力で柔軟

なぜ重要か

  • すべてのAWSサービスはIAMを使用してAPI呼び出し、認証/認可

ビルダーが知っておくべきこと

  • IAM IDからAWSへの認証済みAPI呼び出しを行う方法
  • IAMポリシー言語の基本的な流れ
  • サービス固有の認可制御の詳細の場所と理解方法

IAMポリシーの読み取りと書き込み

例:すべてのDynamoDBアクションを実行

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",  ← 許可 or 拒否
            "Action": [
              "dynamodb:*"      ← 何ができる?
            ],
            "Resource": "*"     ← 何にたいして?
        }
    ]
}

どこで許可、拒否を設定するのか、IAMポリシーの基礎の説明がありました。 これをベースに発展系がいくつか紹介されました。

AWSアカウントの境界を越えて作業する

マルチアカウントでIAM ロールを利用して他アカウントのS3にアクセスする方法です。

00

アクセス元(ここでは111122223333)のロールに権限を与えるだけでなく、アクセス先(ここでは444455556666)バケットのバケットポリシーにも設定が必要です。

111122223333 アカウント

{
  "Effect" : "Allow",
  "Action" : "s3:GetObject",
  "Resource" : "arn:aws:s3:::<バケット名>/*"
}

444455556666 アカウント

{
  "Effect" : "Allow",
  "Principal" :{
    "AWS" : "<アクセスもとAWSアカウントID>"
  }
  "Action" : "s3:GetObject",
  "Resource" : "arn:aws:s3:::<バケット名>/*"
}

AssumeRoleについての説明もありました。ここでは、他アカウントのDynamoDBへのアクセスを例にしていました。

00

DynamoDBテーブルを保持するアカウント(ここでは444455556666)のIAMロールのポリシーで、DynamoDBに対する操作権限(GetItem)を与え、そのロールの信頼関係で、ロールの使用元(ここでは111122223333)を許可しています。更に、ロールの使用元(111122223333)で、AssumeRoleを行い他アカウントへのアクセスを実現しています。

データ制御:AWS KMS

それは何か

  • AWSマネージドの暗号化/復号化サービス

なぜ重要か

  • 多くの日付処理AWSサービスは、単純なAWS KMS統合を提供
  • AWS KMSの使用方法を知っている場合は、管理オーバーヘッドなしで簡単に保存データを保護できる

ビルダーが知っておくべきこと

  • AWS KMSキーの使用方法の基本
  • 多くのAWSデータ処理サービスが提供するAWS KMS統合に精通している
  • IAMを使用してキーへのアクセスを制御する方法

AWS KMSキーの仕組み

00

KMS.Encript/Decryptで個々のデータの暗号化/復号化。エンベロープ暗号化の説明もありました。 また、S3暗号化にてデータ保護されているケースの紹介がありました。S3でKMSキーを指定して暗号化した場合は、アクセス元ロールにS3へのアクセス権限だけではなくKMS:Decryptの権限も必要になると。

00

ネットワーク制御:Amaozn VPC

VPCを作成順序やセキュリティグループの設定方法など説明がありました。

05 06

さいごに

タイトルどおり、AWSクラウドセキュリティの基礎という感じでわかりやすいセッションでした。改めて学びすにはいいかもしれません。