
マネジメントコンソールで参照可能なサービスを制限する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、坂巻です。
今回は、特定のIAMユーザに対して、
マネジメントコンソールから参照できるサービスを制限してみたいと思います。
目次
- カスタマー管理ポリシーの作成
- ポリシーの内容
- ポリシーの作成
- ポリシーの適用
- 動作確認
- マネジメントコンソール
- AWS CLI
- 最後に
カスタマー管理ポリシーの作成
本エントリでは、マネジメントコンソールよりカスタマー管理ポリシーを作成します。
インラインポリシーを利用して同様の制限を行う事もできますが、
インラインポリシーの場合、プリンシパルエンティティ(ユーザー、グループ、ロール)と1対1の関係になり、
再利用を行う事ができません。
ポリシーの分類についての詳細は、以下のエントリをご確認ください。
ポリシーの内容
ここでは、EC2の一覧表示のみ可能なポリシーを作成します。
ポリシーの内容は以下となります。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeInstances"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Versionエレメント
新規ポリシーを作成するときは、現時点の最新バージョンである2012-10-17を指定します。
Versionエレメントが未指定の場合、旧バージョンの2008-10-17が指定されます。
Statementエレメント
複数のエレメントを含むことができる、必須のエレメントです。
上記ポリシーではAction、Resource、Effectエレメントを使用しています。
Actionエレメント
許可または拒否される特定のアクション(iam、ec2 sqs、sns、s3等)を指定します。
上記で指定しているec2:DescribeInstancesは、EC2インスタンスを一覧で表示するActionとなります。
AWS CLIでもec2:DescribeInstancesのみ実行可能となります。
その他、利用可能なActionについては、以下をご確認ください。
IAM ポリシーで使用できる AWS サービスアクションと条件コンテキストキー
Resourceエレメント
EC2等の各サービスには、リソースが複数ある場合があり、Statementで取り扱うリソースを指定します。
特定のリソースを指定することも可能ですが、
上記ではワイルドカード(*)を指定して、サービス内のすべてのリソースに適用しています。
Effectエレメント
必須のエレメントでありStatementの結果に対し、許可または明示的な拒否のどちらにするかを指定します。
上記では許可を指定しています。
ポリシーの作成
マネジメントコンソールの「IAM」より、「ポリシー」をクリックします。

「ポリシーの作成」をクリックします。

「JSON」をクリックします。

上記ポリシーをエディタに貼り付け、「Review policy」をクリックします。

「名前」、「説明」を入力し、「Create policy」クリックします。

ポリシーが作成されたことを確認します。

ポリシーの適用
作成したポリシーをプリンシパルエンティティのいずれかに適用します。
ここでは作成したポリシーを、IAMユーザに適用します。
マネジメントコンソールの「IAM」より、 「ユーザ」をクリックし、対象ユーザを選択します。

「アクセス権限の追加」をクリックします。

「既存のポリシーを直接アタッチ」をクリックします。

作成したポリシー名を検索し、検索結果のポリシーにチェックを付与し、「確認」をクリックします。

「アクセス権限の追加」をクリックします。

対象ユーザにアクセス権限が追加されたことを確認します。

動作確認
マネジメントコンソール
それでは、マネジメントコンソールを確認してみたいと思います。
作成したポリシーを適用したユーザで、マネジメントコンソールにログインします。
EC2のインスタンスを確認すると、正常に参照できます。

なお、インスタンスの開始を実行すると、エラーとなります。

他のリソース(ここではセキュリティグループ)にアクセスしても、参照権限がないため表示されることはありません。

AWS CLI
AWS CLIからも参照可能サービスが制限されているか確認してみたいと思います。
まずは、describe-instancesコマンドを利用して、EC2の情報を出力します。
$ aws ec2 describe-instances| jq -r '.Reservations[].Instances[].InstanceId' i-0ac29a4905e455162 i-0fd3a1d12412a75b7 i-02a6159a685e6c99e
EC2のインスタンスIDが出力され、EC2の情報が出力されます。
EC2の情報が多く出力されるため、ここではjqコマンドを利用してパースしています。
次は、describe-security-groupsコマンドにてセキュリティグループの情報を確認します。
$ aws ec2 describe-security-groups An error occurred (UnauthorizedOperation) when calling the DescribeSecurityGroups operation: You are not authorized to perform this operation.
参照権限がないため、エラーとなりセキュリティグループの情報は表示されません。
最後に
本ポリシーでは、明示的な拒否を行っていないため、
制限を行う対象ユーザに明示的な許可をもったポリシーが適用されている場合は、上記と異なる動作となります。
ポリシーの評価論理については、以下をご確認ください。
ポリシー作成した場合、意図した制限となっているか必ず確認するようにお願いします。
次回は制限のバリエーションを増やして紹介したいと思います。






