byClassmethod検索AWSAlexaモバイルビッグデータサーバーレスTableauAlteryxイベントPowerUserでIAMUserを発行できるようになりたかっただけなのに~権限の複雑さを味わってみた~AWS特集IAM2019年11月30日Shirota(29)6最近、「色々な意味で強くなりたいなぁ」と思う事が度々ありました。身体も心もひしゃげやすい心身共にストロングになる為の筋トレに日々勤しむ、AWS事業本部のShirotaです。ちなみに、体幹は結構しっかりしているそうです。何をやっているお陰なんでしょうかね今日は、AWSに強くなる為にガッツリIAMUserのカスタムポリシーについて考えた時の事をまとめたいなと思います。IAM周りの権限がほぼ絞られているPowerUserAWSには「PowerUserAccess」というポリシーがあります。これはAWSの公式ガイドによると「開発者パワーユーザー」と名付けられ、以下のようなユーザーが利用するポリシーだと言われています。対応アプリケーションの開発をサポートするリソースとサービスを作成および設定できます。すべてのアクションを許可します。アクセス許可を付与します。アクセスしなければならないサービスに必要です。アクセス許可を付与します。管理ポリシーこのように、PowerUserAccessにはアカウント周りのサービスへの権限は絞りつつ、それ以外は割とやりたい事がやれるような権限が与えられています。IAMUserの発行だけはできるようになりたい、そう思っていた今回、そんなPowerUserでありながらもIAMUserの発行だけは実行できるようなポリシーが必要とされるケースがあった為、ポリシーをカスタマイズして検証してみました。想像以上に大変な事になってしまいました。実際にやってみた検証を追いかけながら、お話ししていきたいと思います。最終的に作ったポリシーまず、最終的に作ったポリシーを載せようと思います。任意のポリシーをアタッチしたIAMUserの発行ができるCLIで利用できるように、IAMUserにアクセスキーを作れるようにする作成後、IAMUserについての以下のものは確認・追加ができるポリシーアクセスキーIAMUser発行時に設定したものは削除できないと言った権限を与えたポリシーになります。PowerUserの権限に、いくつか権限を追加してカスタムしています。このポリシーで落ち着くまでの試行錯誤を辿りながら、今回追加した権限について解説していきたいと思います。目的達成までの軌跡まずは、IAM周りの権限を追加しようと思いました。今回の目的に合わせたポリシーと言えば真っ先に思い浮かぶものがあります。」CreateUserを追加して、完璧だと思っていたPowerUserのポリシーをコピーして、カスタムポリシーの土台にしました。「iam:CreateUser」を"Action"に追加しました。できたてのポリシーをIAMUserにアタッチして、ポリシーを試してみる事にしました。その結果がこちらです。アクセスキー無ェおらこんな虚無いやだ。確かにIAMUserが発行できるようなポリシーが欲しいとは言いましたが、虚無はあんまりです。やりたい事の為に足りていないポリシーについて、エラー画面が懇切丁寧に教えてくれるのでそれを確認しながらポリシーを追加していきます。エラーからポリシーを読み取ると手っ取り早いListPoliciesが足りない虚無が生まれた原因その1です。ポリシー一覧が見られなかった結果、IAMUser作成画面でポリシーがつけられませんでした。「iam:ListPolicies」を"Action"に追加しました。AttachUserPolicyが足りない虚無が生まれた原因その2です。ポリシー一覧が見られても、ポリシーをアタッチできない状態です。「iam:AttachUserPolicy」を"Action"に追加しました。CreateAccessKeyが足りない虚無が生まれた原因その3です。このポリシーが無いと、アクセスキーが作れません。「iam:CreateAccessKey」を"Action"に追加しました。ListUsersが足りない上記までで、IAMUser発行時にエラーや注意のポップアップが出なくなりました。心と目に優しい緑色ですが、このままだと折角発行したIAMUser自身を見る事ができません。IAMUserの名前を忘れたとしても、その確認すらできません。「iam:ListUsers」を"Action"に追加しました。ListUsersだと足りない権限を補うListUsersだけだとIAMUserの一覧を表示できるようになりますが、IAMUser発行時にアタッチしたポリシーや作成したアクセスキーが確認できなくなります。以下のポリシーを"Action"に追加しました。iam:ListAccessKeysiam:ListAttachedUserPoliciesiam:GetUseriam:GetPolicyVersioniam:ListUserPoliciesiam:ListGroupsForUserその結果、以下のようにポリシーやアクセスキーが確認できるようになりました。CLIが叩けるかの確認もしました。アタッチした、特定のS3バケットのReadのみ許可するカスタムポリシーが機能していました。今回作成したポリシーで起こる事やりたい事が達成できるポリシーをカスタムしたのですが、このポリシーでは以下のような状態が発生します。ポリシーを追加して、削除しようとしたIAMUser発行後に追加するポリシー・アクセスキーの削除はできません。IAMUserの削除もできない為、間違ったポリシーをアタッチしたIAMUserを発行した場合には作り直さないといけません。今回はIAMUserを発行し、最低限必要な情報を相手に伝えられる(作成したIAMUser名、アタッチしたポリシー、利用するアクセスキー)ようにだけしたかったのでポリシーはこのようにしてみました。ここまでポリシーの追加が必要だと、IAMへの権限が与えられているポリシー(それこそAdministratorAccess)を使った方が早いのではないかと思います。いう時こそ思い出して欲しい事があります。今回、アタッチしたポリシーは以下のようになります。何だかんだで14/141蓋を開けてみると、今回アタッチしたポリシーはIAMに存在しているポリシーの1/10程度でしかないのです。時と場合によりますが、やりたい事に対して色々なポリシーをアタッチしたように思えて、まだまだ多数のポリシーが後ろに存在している可能性があります。「最小権限を付与する」事を意識して、カスタムポリシーを作成するか既存のAdministratorAccessのようなポリシーをアタッチするかを考える事をオススメします。295,431「体型膨張理論」の観測をやっています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。濱田孝治70re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。PolicyのConditionにaws:CalledViaというキーが追加されました。いったキーなのかご説明します。夏目祐樹403こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介256SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健233こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。