LoginSignup
0
1

ReadOnlyAccessは何を見るか?

Last updated at Posted at 2023-12-16

MEGAZONE 株式会社 のテック陣「MEGAZONEのゆかいな仲間たち」がおくる、Megazone Japan Advent Calendar 2023 の12日目のエントリーです。

はじめに

僕「あるAWSアカウントの環境をチェックしたいのでReadOnlyAccessのIAMユーザーを発行してください。」

管理者「必要となる権限の詳細を知りたい。対象のAWSサービスを絞れますか?」

僕 (利用中のAWSサービスは知っている...。そのAWSサービスの 〇〇ReadOnlyAccess を全部アタッチしてもらおうかな:thinking:

そんなふうに考えていた時期が私にもありました。

課題: 〇〇ReadOnlyAccessが存在しないAWSサービスもある

AWSが用意しているIAMポリシーであるAWSマネージドポリシー
の中には、「AmazonEC2ReadOnlyAccess」や「AmazonS3ReadOnlyAccess」といった特定サービス向けのIAMポリシーがあります。

例えば以下のAWSサービスに対するReadOnlyAccessが必要だった場合、

  • Amazon EC2
    →AmazonEC2ReadOnlyAccess
  • Amazon S3
    →AmazonS3ReadOnlyAccess
  • Amazon Route53
    →AmazonRoute53ReadOnlyAccess
  • AWS Key Management Service (AWS KMS)
    →???

AWS KMSにはPowerUserはあるけどReadOnlyAccessが存在しない...。
image.png

さてどうしたものか。無いなら自分で作ってしまおう!ということでIAMポリシーの自作です。

IAMポリシー作成(AWS KMS用のReadOnlyAccess)

まずどんなActionを許可すればよいか確認します。

  • 何がしたいのか?
    →AWS KMSをReadOnlyしたい。

  • 作成するIAMポリシーにはどのAction許可が必要か?
    →えーと...LISTとかDescribeの全部(でいいのかな?)

果たして、AWS KMSにはどんなActionがあるのだろうか。

■パターン1: Policy editorで許可Actionを判断する
IAM > Policies > Create policyへ移動。
Policy editor(Visual)で「KMS」と入力。
image.png


Access levelを覗いてみるとLISTの中にLIST関連が、READの中にDescribeがいる。じゃあLISTとREADのAll Actionを選択でいいかな?
・Policy editor(Visual)での表示
image.png
※ResourcesはAll(*)にしています

・Policy editor(JSON)での表示
image.png

各ActionのInfoをクリックすると説明が表示されるので、何ができるのか確認することができます。必要か不要かはこれで判断。
image.png

■パターン2: ReadOnlyAccessから許可Actionを判断する
AWS公式であるReadOnlyAccessから、AWS KMS関連の許可Actionをコピーしようという方法です。

後述のJSONをコピーして作成する方法がお勧めですが、以下の手順で許可Actionを確認することができます。
IAM > Policies > ReadOnlyAccess へ移動し、Permissionsで「KMS」を検索してクリック。

image.png

52個のActionのうち12個が許可されていますね。これ見ながらPolicy editor(Visual)でポチポチするのはちょっと嫌:sweat:
Excel等に許可Actionをまとめたい、といったケースでは役に立つかも。
image.png

・JSONをコピーする方法
ReadOnlyAccessのJSONの内容は、AWSドキュメントまたはIAMのページで確認できます。

パパッと調べたいならAWSドキュメントの方が楽ですが、更新遅れなどが不安な場合はIAMのページからでも。

IAM > Policies > ReadOnlyAccess へ移動しJSONを表示。
表示したJSONの中から「kms:」の行をコピー。
image.png
※自分のブラウザではJSON内を文字検索できなかったので、Copyをクリックしてテキストに移したほうが速いかも

[パターン1]同様にPolicy editorで「KMS」を選択し、JSONのActionパラーメータをコピーした内容に書き換えます。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "VisualEditor0",
			"Effect": "Allow",
			"Action": [
				"kms:Describe*",
				"kms:Get*",
				"kms:List*"
			],
			"Resource": "*"
		}
	]
}

※Action最後の「,」の位置に注意です

・Policy editor(Visual)での表示
image.png

[パターン1]と同様にAccess levelのListとReadが全て許可されています。

■[パターン1],[パターン2]どちらも結果は同じ?
今回のAWS KMSではどちらの方法でも許可Actionは同じでしたが、他のAWSサービスでは一致しないことがあります。(主にGet関連)
とくに細かな要件がなければ、[パターン2]のほうが無難ですかね。AWS公式のReadOnlyAccessから抜粋しましたと言えますので。

おわりに

ReadOnlyAccessならもらえるだろうと思っていたらもらえなかった話でした。ポリシー作成手順よりも、何をもって正しいと判断するかの基準が大切だと感じました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1