安全にリリースする

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

Rahul Singh

Technical Product Manager

このチェックリストの目的

左右2枚のカードがデプロイバー全体の上に並んでいる図。左のカードには「setting」とラベルがあり、緑のチェックが付いた3つの設定値を持ち、「one right value」とキャプションが付いている。右のカードには「question」とラベルがあり、3つのクエスチョンマークと空の破線の回答欄があり、「your answer」とキャプションが付いている。両方のカードからデプロイバーへ矢印が伸びている。

  • リリース前に問う6つの質問
  • オンにする6つの設定ではありません
開発者のための AWS セキュリティ活用

6つの質問、リクエストの順に

この順番で問いましょう

  1. 呼び出し元のトークンを検証するのは誰ですか?
  2. AWS が確認しているのはどの ID ですか?

テナントレポートサービスを縦方向の経路として描き始めた図。テナントユーザー、API Gateway、レポート関数の順に並ぶ。番号1と2のマーカーが、各質問が当てはまる2つの箇所に付いている。

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

6つの質問、リクエストの順に

この順番で問いましょう

  1. 呼び出し元のトークンを検証するのは誰ですか?
  2. AWS が確認しているのはどの ID ですか?
  3. あるテナントが他のテナントの行を読めないようにしているものは何ですか?
  4. データベースのパスワードはどこにありますか?

テナントレポートサービスを縦方向の経路として描いた図。テナントユーザー、API Gateway、レポート関数、DynamoDB の順に並び、Secrets Manager が横に分岐している。番号1から4のマーカーが、各質問が当てはまる4つの箇所に付いている。

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

6つの質問、リクエストの順に

この順番で問いましょう

  1. 呼び出し元のトークンを検証するのは誰ですか?
  2. AWS が確認しているのはどの ID ですか?
  3. あるテナントが他のテナントの行を読めないようにしているものは何ですか?
  4. データベースのパスワードはどこにありますか?
  5. 鍵を持っているのは誰で、誰がそれを使いましたか?
  6. 明日のダウンロードは記録として残りますか?

テナントレポートサービスを縦方向の経路として描いた図。テナントユーザー、API Gateway、レポート関数、DynamoDB、S3 reports の順に並び、Secrets Manager と KMS キーが横に分岐している。6つの番号マーカーが、各質問が当てはまる6つの箇所に付いている。破線の境界線がサービス全体を囲み、下にある破線の CloudTrail ボックスへとつながっている。

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

チェック済みは安全とは限らない

このサービスの3つの例

  1. キーではなくロール:すべてのオブジェクトを読み取る

レポートサービスの3つの断片に番号を付けた図。1番目は、レポート関数に緑のチェックが付いており、バケット内の3つのテナントプレフィックスすべてにオレンジの破線の輪郭が及んでいる。2番目は、関数の内側に緑のテナントフィルターがあり、関数の外側のリクエスト経路には空のオレンジのゲートがある。3番目は、バケットに緑のチェックが付いており、監査者から AWS 管理キーへのオレンジの破線経路がキーの手前で止まっている。

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

チェック済みは安全とは限らない

このサービスの3つの例

  1. キーではなくロール:すべてのオブジェクトを読み取る
  2. テナント列:フィルターはコード内にある
  3. 暗号化はオン:キーは共有できない

レポートサービスの3つの断片に番号を付けた図。1番目は、レポート関数に緑のチェックが付いており、バケット内の3つのテナントプレフィックスすべてにオレンジの破線の輪郭が及んでいる。2番目は、関数の内側に緑のテナントフィルターがあり、関数の外側のリクエスト経路には空のオレンジのゲートがある。3番目は、バケットに緑のチェックが付いており、監査者から AWS 管理キーへのオレンジの破線経路がキーの手前で止まっている。

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

設定だけではわからないギャップ

「granted」とラベルの付いた外側のボックスが、重なり合わない2つの内側のボックスを持つ図。緑の実線ボックス「used」には、ロールが呼び出した3つの IAM アクションがある。オレンジの破線ボックス「never called」には、一度も呼び出されなかった3つの IAM アクションがある。

  • 作成した当日は適切: そのときサービスが呼び出していたすべてのアクション
開発者のための AWS セキュリティ活用

設定だけではわからないギャップ

「granted」とラベルの付いた外側のボックスが、重なり合わない2つの内側のボックスを持つ図。緑の実線ボックス「used」には、ロールが呼び出した3つの IAM アクションがある。オレンジの破線ボックス「never called」には、一度も呼び出されなかった3つの IAM アクションがある。

  • 作成した当日は適切: そのときサービスが呼び出していたすべてのアクション
  • 今は広すぎる: 呼び出さなくなった半分
  • 対策: 90日間の記録で実際に使われているものだけを付与する
開発者のための AWS セキュリティ活用

設定ではなく、理由を書き残す

1つの決定を構成する2つの要素

  • コードが設定する値
  • その値を設定した理由

「リポジトリ内」とラベルの付いた設定行が、空の破線ボックス「why」の上にあり、「記録されていない」とキャプションされている図。そこから矢印が下へ伸び、「chose」「rejected」「would change if」「date」という4つのラベル付き枠を持つ緑の記録カードへとつながる。

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

設定ではなく、理由を書き残す

1つの決定を構成する2つの要素

  • コードが設定する値
  • その値を設定した理由

 

  • 書き残され承認された: 決定
  • 記録されていない: 不意打ち

「リポジトリ内」とラベルの付いた設定行が、空の破線ボックス「why」の上にあり、「記録されていない」とキャプションされている図。そこから矢印が下へ伸び、「chose」「rejected」「would change if」「date」という4つのラベル付き枠を持つ緑の記録カードへとつながる。

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

同じ質問、新しい呼び出し元

「actor」と「caller」という2つの見出しの下に3行が並ぶ図。それぞれ、動かすアクターと呼び出し元をペアにしている。ブラウザセッションを持つ人(おなじみのケースとしてミュートで表示)、パイプラインを伴うコミット、エージェントを伴うリクエスト。この3つはすべて、3つの番号マーカーを持つ単一の青いゲート(「one gate」とキャプション)に収束する。

  • ワークロード ID: 人ではない呼び出し元のための ID
開発者のための AWS セキュリティ活用

同じ質問、新しい呼び出し元

「actor」と「caller」という2つの見出しの下に3行が並ぶ図。それぞれ、動かすアクターと呼び出し元をペアにしている。ブラウザセッションを持つ人(おなじみのケースとしてミュートで表示)、パイプラインを伴うコミット、エージェントを伴うリクエスト。この3つはすべて、3つの番号マーカーを持つ単一の青いゲート(「one gate」とキャプション)に収束する。

  • ワークロード ID: 人ではない呼び出し元のための ID
  • 同じ3つの質問: AWS が確認できる ID、業務範囲を超えないスコープ、何をしたかの記録
  • 変わったもの: 呼び出し元
開発者のための AWS セキュリティ活用

この先の展開

積み重なった2つの帯の図。上の帯「the account」には、GuardDuty、Security Hub、AWS Config、Organizations という4つの等しいボックスがある。破線の区切りの下、下の帯「your service」には、この動画の前半で使われた同じ6つの番号マーカーがある。

  • あなたのサービス: 6つの質問
  • その上のアカウント: GuardDuty、Security Hub、AWS Config、Organizations
開発者のための AWS セキュリティ活用

練習しましょう!

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

Preparing Video For Download...