アクセス制御
この主題を扱う記事
Viewer mTLS を採用したあとに残るのは、秘密鍵をどこで生成し、発行・配布・更新・失効を誰がどう回すかである。鍵の生成場所の選択、3つの操作が別物であること、端末への取り込みで詰まる点を整理する。
プロジェクトで使用するIAMロール・ポリシー・ユーザー・グループをTerraformで一括管理する設計パターンを解説する。マネージドポリシーとインラインポリシーの使い分け、AWSクォータを踏まえた設計判断を紹介する。
AWSにおけるアクセス制御はIAM(API操作レベル)とSecurity Group(ネットワーク通信レベル)の2レイヤーで構成される。アクセス先のサービスによってどちらが効くかが異なる。それぞれの役割の違いと、Terraformで一括管理する際の共通設計パターンを解説する。
オンプレミスでは「内側は安全、外側は危険」という境界の直感が成り立っていた。AWSではこの直感がそのまま通用しない。一般インターネット・AWSグローバルネットワーク・VPCプライベートネットワークの3つを区別し、「API認証」と「ネットワーク制限」が別のレイヤーであることを整理する。
CloudFront continuous deployment(CloudFrontの継続的デプロイ)のヘッダー振り分けを使い、AIやスクリプトに本番ドメインからStagingの公開前の版を確認させる構成を整理する。人の確認は認証付きの確認用配信に分け、ヘッダーで届く経路を秘密として扱わない前提と、返った版を突き合わせる理由、運用で注意する点を示す。
Security Groupを一括管理し、リソース間の通信許可をSecurity Group IDの参照で設計するパターンを解説する。IPアドレスに依存せず、公開する入口を必要最小限に絞るネットワークアクセス制御の実践を紹介する。
IPアドレス制限・BASIC認証・Cognito認証・クライアント証明書は、到達範囲と本人性という独立した2つの軸に分かれる。切り替えは軸を1つずつ動かす2手になり、本人性を替える手だけがSPAとAPIの改修を伴う。9通りの組み合わせごとに残る穴と、管理者が見る対象を整理する。
VPCの中にあるサーバやデータベースへ人が入る方法を、「何に接続するか」「入口の性質」「認証と絞り込み」の3つの軸で整理する。SSHか踏み台かの二択にせず、公開しなくても届く手段から検討する順序を示す。
