Upgrade to Pro — share decks privately, control downloads, hide ads and more …

明日からドヤれる!超マニアックなAWSセキュリティTips10連発 / 10 Ultra-Ni...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

明日からドヤれる!超マニアックなAWSセキュリティTips10連発 / 10 Ultra-Niche AWS Security Tips

「JAWS-UG横浜 #100 祝・第100回スペシャル」で発表した資料
https://jawsug-yokohama.connpass.com/event/386995/

Avatar for Yuji Oshima

Yuji Oshima

April 18, 2026

More Decks by Yuji Oshima

Other Decks in Technology

Transcript

  1. 1 大島 悠司 (Yuji Oshima) シニアセキュリティアーキテクト 株式会社野村総合研究所 / NRIセキュアテクノロジーズ株式会社 セキュリティアナリストやサービス開発運用などを経て、

    現在はクラウドセキュリティ製品のプリセールスに従事 100以上の資格を取得し、情報発信やコミュニティ運営にも力を入れている yuj1osm
  2. 10 Tips 1. Administrator 権限すら拒否する KMS キーポリシー 2. 信頼ポリシーの Principal:

    * は全世界への開放 3. パブリックIPアドレス間通信はインターネットを経由しない 4. セキュリティグループの自己参照の罠 5. Lambda /tmp ディレクトリのデータ残留 6. S3 Object Lock Compliance モードの破壊力 7. CloudWatch Logs は暗号化しても中身が見える 8. CloudTrail データイベントの未設定による見逃し 9. AWS WAFのリクエストボディは 8KB の壁がある 10.Amazon Inspector のスキャン対象外 2 アイデンティティ ネットワーク データ ロギング モニタリング
  3. 1. Administrator 権限すら拒否する KMS キーポリシー ルートユーザーや管理者権限を持っていても、KMS の「キーポリシー」で明示的に 許可されていなければ、その鍵を使った復号も削除も一切できない リスク 鍵の管理者が不在になり、誰もデータにアクセスできなくなる

    対策 キーポリシーは必ず明示的に許可する 3 AWS KMS key Role (Dev) IAMポリシー キーポリシー Decrypt { "Effect": "Allow", "Action": "kms:*", "Resource":{ “arn:aws:kms:*:{AWS AccountID}:key/{KeyName}” } } { "Effect": "Allow", "Action": "kms:Decrypt", "Principal": { "AWS": "arn:aws:iam::{AWS AccountID}:Prod" }, "Resource": "*“ } アイデンティティ
  4. 2. 信頼ポリシーの Principal: * は全世界への開放 ロールの信頼ポリシーで Principal: * を指定し、Condition を書き忘れると、

    世界中の全AWSアカウントから AssumeRole 可能に リスク 外部からバックドアとして悪用される 対策 特別な理由がない限り、aws:PrincipalOrgID や aws:SourceAccount による条件指定を必須にする 4 AWS Cloud Role 信頼ポリシー { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": “*" }, "Resource": "*“ } AWS Cloud IAMポリシー User AssumeRole アイデンティティ
  5. 3. パブリックIPアドレス間通信はインターネットを経由しない AWS 環境では、パブリック IP アドレス間の通信はインターネット(外部ネットワーク)を経由しない 技術的実態 パケットは AWS のバックボーンネットワーク(物理インフラ)内でルーティングされる

    IGW(インターネットゲートウェイ)を通ったとしても、それは論理的なゲートウェイであり、 通信自体は AWS の閉域網内で完結する 5 AWS Cloud VPC Public subnet Internet gateway Instance Public subnet Instance ここは何? Amazon VPC のよくある質問 https://aws.amazon.com/jp/vpc/faqs/ AWS 公式ドキュメントに記載あり ネットワーク
  6. 4. セキュリティグループの自己参照の罠 同じセキュリティグループを付けた EC2 インスタンス同士が、互いに全通信可能となり、 分散処理システムで活用できる リスク 1台の侵害が、同一セキュリティグループを持つ全サーバーへの横展開(ラテラルムーブメント)が容易 対策 用途ごとに最小限のセキュリティグループを使い、自己参照のセキュリティグループを使い回さない

    6 Instance ec2-sg alb-sg インバウンドルール Protocol Port Source TCP 80 0.0.0.0/0 Application Load Balancer インバウンドルール Protocol Port Source TCP 80 alb-sg Instance self-sg インバウンドルール Protocol Port Source TCP 80 0.0.0.0/0 self-sg Application Load Balancer 通常 自己参照 これも 0.0.0.0/0 で 許可される ネットワーク
  7. 5. Lambda /tmp ディレクトリのデータ残留 Lambda は、 一時的に利用可能な /tmp ディレクトリが提供される リスク

    実行環境の再利用により、前の処理の一時ファイルが残存・漏洩する可能性がある 対策 処理の最後に必ず /tmp 下のファイルを削除する 7 Lambda マネージドインスタンスのランタイム - AWS https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/ lambda-managed-instances-runtimes.html データ AWS 公式ドキュメントに記載あり
  8. 6. S3 Object Lock Compliance モードの破壊力 8 S3 の Object

    Lock を Compliance で有効にすると、オブジェクトの削除や上書きを防止できる リスク オブジェクトの削除・上書ができず、「削除不能データ」が蓄積するとこで永続的な課金が発生する 対策 テスト段階では必ず Governance モードで挙動を確認する データ
  9. 7. CloudWatch Logs は暗号化しても中身が見える KMS でロググループを暗号化しても、CloudWatch の閲覧権限と KMS の復号権限を 持っていれば、中身は読めてしまう

    リスク 機密情報が漏えいする可能性がある 対策 ロググループの「データ保護」を使用し、個人情報(PII)を自動的にマスキングする設定を入れる 9 データ保護により、機密情報をマスクできる ロギング
  10. 8. CloudTrail データイベントの未設定による見逃し 標準の CloudTrail は、リソースの作成や削除といった「管理イベント」しか記録ない リスク 管理イベントだけだと、誰がどんなデータにアクセスしたかは分からず、不正アクセスの見逃しにつながる 対策 重要な機密データを持つ

    S3 バケットは、データイベントのログ記録を有効化する 10 CloudTrail S3データイベント 観点 CloudTrail S3 データイベント 主用途 いつ、誰が、どのAPIを実行 したのか管理操作の監査 S3オブジェクトへの操作の監査 対象 AWS API S3オブジェクトの読み書き 例 CreateBucke PutBucketPolicy StopInstances GetObject PutObject DeleteObject コスト 低(1つ目は無料) 高 監査適性 高 非常に高 ロギング
  11. 9. AWS WAF のリクエストボディは 8KB の壁がある AWS WAF でリクエストの中身をログ出力する場合、 記録されるのはリクエストボディの最初の

    8KB(設定により変更可能だが上限あり)まで リスク 攻撃者が巨大な JSON の末尾に攻撃コードを仕込んだ場合、WAF のログには「正常な前半部分」しか残らず、 なぜ攻撃が成立したのか後から解析できない可能性がある 対策 Oversize handling で大きなリクエストを遮断(誤遮断に注意)したり、 アプリログの取得やパケット全体をキャプチャできる VPC Traffic Mirroring を配置する 11 POST / HTTP/1.1 Host: localhost:8080 Connection: keep-alive User-Agent: Mozilla/5.0 … Accept: */* Accept-Encoding: gzip, deflate Accept-Language: ja,en-US;q=0.9,en;q=0.8 Payload=********************************* ******************** ここに攻撃コードがあっても気付けない 最初の8KB モニタリング
  12. 10. Amazon Inspector のスキャン対象外 Inspector はパッケージマネージャー(yum や apt)で入れたソフトの脆弱性は検知できるが、 手動でソースからビルドしたバイナリや、は見落とすことがある リスク

    手動インストールしたライブラリに致命的な脆弱性が潜んでいる可能性がある 対策 SCA(ソフトウェア組成分析)ツールの併用や、CI/CD パイプラインでのビルド時スキャンを徹底し、 OS 層だけでなくアプリケーション層の脆弱性を担保する 12 Lambda関数内のパッケージの条件 Inspectorの検知結果 バージョンが古いレイヤーを追加する METADATAで検知 pipコマンドで取得 METADATAで検知 pipコマンドで取得 & METADATAファイル名を変更 検知無し pipコマンドで取得 & METADATAファイルパスを変更 検知無し pipコマンドで取得 & METADATAファイルを削除 検知無し pipコマンドで取得 & METADATAファイルを書き換える METADATAで書き換えた バージョンとして検知 WindowsでWebサイトから取得 検知無し モニタリング
  13. まとめ(再掲) 1. Administrator 権限すら拒否する KMS キーポリシー 2. 信頼ポリシーの Principal: *

    は全世界への開放 3. パブリックIPアドレス間通信はインターネットを経由しない 4. セキュリティグループの自己参照の罠 5. Lambda /tmp ディレクトリのデータ残留 6. S3 Object Lock Compliance モードの破壊力 7. CloudWatch Logs は暗号化しても中身が見える 8. CloudTrail データイベントの未設定による見逃し 9. AWS WAFのリクエストボディは 8KB の壁がある 10.Amazon Inspector のスキャン対象外 13 アイデンティティ ネットワーク データ ロギング モニタリング