AWS セキュリティ入門

開発者のための AWS セキュリティ活用

Rahul Singh

Technical Product Manager

コースの前提条件

 

  • AWS セキュリティの基礎知識
  • クラウドコンピューティングの概念の理解
  • AWS Security and Cost Management Concepts

 

 

AWS Security and Cost Management Concepts のコースタイトルカード

開発者のための AWS セキュリティ活用

コースの目標

 

  1. アイデンティティ: 誰が呼び出しているか
  2. 認可: アクセスできる範囲
  3. シークレットと暗号化: データの保護
  4. 証跡: 事後に何が起きたか

コースが扱う4つの領域を示す、背骨状に積み重なった4本の帯です。帯1はアイデンティティで第1章を示します。帯2は認可で第2章を示します。帯3はシークレットと暗号化で第2章と第3章を示します。帯4は証跡で第3章を示します。左側のオレンジ色の矢印には「この動画」とラベルがあり、帯1を指しています。

開発者のための AWS セキュリティ活用

コードはパイプラインを通じてデプロイされます

左から右へ進むフロー図です。ステップ1は「Your pipeline」というボックスで、Build、Test、Deployの3段階が順に含まれています。ステップ2は「You」というボックスから「git push」というラベルの矢印がパイプラインへ伸びています。ステップ3はパイプラインの下にオレンジ色のバッジがあり、「自身のアイデンティティ」というラベルが付いています。矢印はさらにパイプラインから「AWS」というボックスへと続きます。

まず、用語を1つ確認しましょう

  • パイプラインとは、コードのビルド・テスト・デプロイを自動化する仕組みです
  • push をトリガーに実行され、人の操作は介在しません
開発者のための AWS セキュリティ活用

誤った理由で失敗するデプロイ

コードを変更すると、実際にはどの権限がチェックされるのでしょうか?
  1. 変更を push します

縦方向のフロー図のステップ1です。「You」というボックスがコードの変更を push しています。

開発者のための AWS セキュリティ活用

誤った理由で失敗するデプロイ

コードを変更すると、実際にはどの権限がチェックされるのでしょうか?
  1. 変更を push します

  2. パイプラインが実行されます

縦方向のフロー図です。ステップ1は「You」がコードの変更を push します。矢印はステップ2へと続き、パイプラインがデプロイを実行します。

開発者のための AWS セキュリティ活用

誤った理由で失敗するデプロイ

コードを変更すると、実際にはどの権限がチェックされるのでしょうか?
  1. 変更を push します

  2. パイプラインが実行されます

  3. デプロイが停止: AccessDenied

最初に思うこと:「自分の権限を確認しよう」

縦方向のフロー図です。ステップ1は「You」がコードの変更を push します。ステップ2はパイプラインがデプロイを実行します。ステップ3はAWSがリクエストを評価し、AccessDeniedを返します。

開発者のための AWS セキュリティ活用

実際に起きたこと

左から右へのフロー図のステップ1です。「You」というボックスで、関与はここで終わります。

  1. push したら、あなたの関与はここで終わります
開発者のための AWS セキュリティ活用

実際に起きたこと

左から右へのフロー図です。「You」というボックスから「Your pipeline」というボックスへ矢印が伸びています。パイプラインの下には「deploy-role」とラベル付けされたバッジがあります。

  1. push したら、あなたの関与はここで終わります
  2. パイプラインがデプロイを実行し、チームが作成したロールとして動作します
開発者のための AWS セキュリティ活用

実際に起きたこと

「You」から「Your pipeline」、そして「AWS」へと続く左から右へのフロー図です。パイプラインの下には「deploy-role」とラベル付けされたバッジがあり、「checks」とラベル付けされた点線の矢印がAWSからそのバッジへと戻っています(「You」へは戻りません)。

  1. push したら、あなたの関与はここで終わります
  2. パイプラインがデプロイを実行し、チームが作成したロールとして動作します
  3. AWSがそのロールを評価します
開発者のための AWS セキュリティ活用

アクターとプリンシパル

アクター

作業を始動させた人のことです。

ここでは: あなたです。

作業を始動させるアクターを表す人物アイコンです。

開発者のための AWS セキュリティ活用

アクターとプリンシパル

アクター

作業を始動させた人のことです。

ここでは: あなたです。

プリンシパル

リクエスト到着時にAWSが評価する識別情報です。

ここでは: パイプラインのロールです。

作業を始動させるアクターを表す人物アイコンです。

プリンシパルを表すアイコンです。

開発者のための AWS セキュリティ活用

アクターとプリンシパル

アクター

作業を始動させた人のことです。

ここでは: あなたです。

プリンシパル

リクエスト到着時にAWSが評価する識別情報です。

ここでは: パイプラインのロールです。

  • Lambdaでは実行ロール、ECSではタスクロールと呼ばれますが、名前が違うだけで同じプリンシパルです
  • 例外として、ターミナルで長期間有効なキーを使う場合はIAMユーザーがプリンシパルになります

作業を始動させるアクターを表す人物アイコンです。

AWSがアクターではなくプリンシパルを確認する様子を示すアイコンです。

開発者のための AWS セキュリティ活用

同じデプロイ、2つのロール

ロール A(AdministratorAccess の形)

  • すべてのバケットを読み取り
  • すべてのキーを使用
  • すべての関数を更新

ロール B

  • 1つのバケットを読み取り
  • 1つのキーを使用
  • 1つの関数を更新

Prefix(プレフィックス): バケット内のフォルダのようなパス

6つの異なるポリシーへのアクセス権を持つ、オールアクセスロールを示す画像です。

1つのポリシーのみへのアクセス権を持つ、限定的なアクセスロールを示す画像です。

開発者のための AWS セキュリティ活用

被害範囲

広範なロール

侵害された場合: アカウント内のすべてのバケット、プレフィックス、オブジェクトに到達します。

限定的なロール

侵害された場合: 1つのバケット内の1つのプレフィックスにしか到達しません。それ以上はありません。

アカウント全体のあらゆる部分に到達する、広範なロールを示す同心円の図です。

限定的なロールが最も内側のオブジェクトとプレフィックスのリングにしか到達せず、他の部分には影響しないことを示す同心円の図です。

開発者のための AWS セキュリティ活用

最小権限の原則を実践する

ロールは、業務に必要なことだけを行うべきであり、それ以上の権限は持つべきではありません。

  • AWS管理ポリシー(AmazonS3ReadOnlyAccess など): すべてのバケットが対象。カスタマー管理ポリシー: 自分のものに限定し、1つのプレフィックスまで絞り込み可能
  • アクセス範囲と有効期間を絞る: 長期間有効なキーより、短期間の認証情報を使用
  • インフラストラクチャの保護はAWSが担当
  • ロールの権限範囲をどこまで広げるかはあなた次第であり、それはリポジトリの中に存在します

例: reports-bucket 読み取りロール Allow は2つのみ。それ以外の権限は一切付与しません。

  • IAM(誰が何をできるかを決定するサービス)への権限は一切なし

ロールの権限リストで、不要な3つの権限が赤線で取り消され、必要な2つの権限が緑色で残されています。

開発者のための AWS セキュリティ活用

練習しましょう!

開発者のための AWS セキュリティ活用

Preparing Video For Download...