全8389文字
PR

 本講座では、コーポレートサイトのシステムを題材に、セキュリティを強化する方法を解説します。

 AWSには「権限の管理」「検出制御」「データ保護」「インフラストラクチャーの保護」というセキュリティの4分野をサポートするサービス・機能が用意されています。第1回では権限の管理と検出制御を解説し、インフラストラクチャーの保護についても触れます。データ保護(暗号化)は第2回で取り上げます。

権限の管理に使用するIAM

 仮想マシンのAmazon EC2、ロードバランサーのALB、オブジェクトストレージのAmazon S3といったAWSのサービスを利用して、コーポレートサイトのシステムを構築してきました。これらAWSのリソースに対するアクセス権限についてどう考えたらよいでしょうか。

 セキュリティのベストプラクティスは、与えるアクセス権限も、ユーザーの範囲も、必要最小限に絞り込むことです。例えば、VPC(Virtual Private Cloud)の作成、EC2インスタンスやRDSインスタンスの起動・停止といった操作はインフラ管理チームのみが行えるようにし、アプリケーション開発チームが不用意にインフラの構成を変更できないようにするといった具合です。

 AWSリソースへのアクセス権限の管理に利用するサービスが「IAM(Identity and Access Management)」です。IAMによって、AWSリソースにアクセスできるユーザーであることを確認(認証)したうえで、起動、設定、管理、終了といった操作を許可(認可)します。例えば、限られたインフラ管理担当者のみに特定のEC2インスタンスの起動・停止を許可したり、あるEC2インスタンスに特定のS3バケットへの読み書きを許可したりできます。

 AWSリソースへのアクセス方法にはAWSマネジメントコンソールの操作とAPIコールがあり、異なるセキュリティ認証情報を使用します。マネジメントコンソールでは、ユーザー名とパスワードを使用してサインインします。APIコールではアクセスキーを使用します。

 IAMにはアクセス権限をリスト化した「IAMポリシー」と、それを割り当てるユーザーの範囲である「IAMユーザー」「IAMグループ」「IAMロール」という概念が存在します。IAMユーザー、IAMグループ、IAMロールは総称して「IAMエンティティ」と呼びます。一つずつ解説します。

 IAMポリシーは、1個あるいは複数個のアクセス権限をまとめたものです。JSON(JavaScript Object Notation)形式で保存されるので、GitHubのようなバージョン管理システムによって管理できます。

 IAMポリシーでは、許可しない限りは全ての操作が拒否されます。これを「暗示的な拒否」と呼びます。