「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS IAM」の「Permissions Boundary」を利用したアクセス境界の設定について。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。
利用者によるAWSリソースに対するアクセスと認証を管理する「AWS Identity and Access Management」(IAM)は、AWSを使うなら最初に学習、利用するサービスの一つといっていいほど基本的なサービスです。
多くの人にとっては「IAMユーザー」「IAMグループ」「IAMロール」「IAMポリシー」といった基本的な機能の使い方を押さえておけば事足りてしまいますが、IAMをより一歩踏み込んで利用する機能を何回かに分けて紹介します。
今回の記事では、「Permissions Boundary」を利用したアクセス許可の境界を設定する方法を見ていきましょう。
Permissions Boundaryは、IAMユーザーやIAMロールを発行する際に、そのIAMユーザーやIAMロールが利用できる操作の範囲を制限する機能です。
この説明だけではイメージを持ちづらいと思いますので、具体的な利用シーンを想像してみましょう。
例えば、開発者が「AWS Lambda」を実行するIAMロールを必要としている場合を考えてみてください。あなたがAWS環境の管理者だったとして、開発者に自分で必要なIAMロールを自由に発行できる権限を付与するでしょうか?
IAMロールの作成を許可してしまうと、開発者に付与している権限を超えたIAMロールを作成してそれを利用できるようになってしまいます。IAMロールにアタッチ可能なポリシーを詳細に設定することも可能ですが、そのポリシーを管理、メンテナンスするのは簡単ではありません。
かといって、新しいIAMロールが必要になるたびに発行を依頼したら、管理者としても毎回対応コストがかかってしまう上に、開発者の開発スピードも落ちてしまいます。このような問題を解決する機能がPermissions Boundaryです。
AWSには、道の外に飛び出してしまわないための“ガードレール”を設置することで開発者の自由を損なわずに統制するといった考え方がありますが、Permissions Boundaryを利用することで、このガードレールを設置できます。
IAMユーザーやIAMロール(IAMエンティティ)に付与する通常のIAMポリシー(Permissions Policy)に加えてPermissions Boundaryを設定することで、対象のIAMエンティティが利用可能な範囲を制限することができます。
Permissions Boundaryが付与されたIAMエンティティができるのは、図1のように「IAMポリシー(Permissions Policy)で権限が付与されている」かつ「Permission Boundaryで利用可能な範囲として定義されている権限」になります。
それでは、Permissions Boundaryを利用する手順を見てみましょう。今回は以下の手順で作業します。
Permissions Boundaryで制限する対象のIAMユーザーを作成します。今回は「sample-user」という名前で作成したIAMユーザーに全てのAWSリソースの情報を閲覧できる「ReadOnlyPolicy」を割り当てています。
ユーザーを発行した状態ではPermissions Boundaryは設定されていないので、「境界の設定」をクリックします(図2)。
Permissions Boundaryの設定画面では、IAMユーザーやIAMロールの設定時と同じような方法でPermissions Boundaryポリシーを選択します(図3)。
今回は「Amazon EC2」に関する全ての操作ができないポリシーとして下記のような「EC2DenyPolicy」を設定します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "ec2:*", "Resource": "*" } ] }
適用したポリシーはIAMユーザーの概要画面で確認できます(図4)。
最後にPermissions Boundaryによって制限されていることを確認するために、「sample-user」を利用して「AWSマネジメントコンソール」にログインします。
「EC2ダッシュボード」に遷移すると、リソースに関する情報を取得できず、Permissions Boundaryによって制限されていることを確認できます(図5)。
今回はIAMのPermissions Boundaryを利用してIAMユーザーやIAMロールのアクセス権限を制限する方法を紹介しました。
Permissions Boundaryを利用することで開発者はよりスムーズに開発でき、管理者もユーザーやロールの発行にかかる手間を減らせるので、プロジェクトでこういった問題に直面したときはぜひ利用を検討してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.