LoginSignup
0
0

More than 1 year has passed since last update.

AWS Cloudformationファイルを元にIAM Policyを生成する

Posted at

はじめに

AWSログインユーザに払い出す権限は最小権限であるべき。
しかしながら、Cloudformationでは様々なリソースを一気に作る関係上必要最小限のIAMポリシーが分からない。
最小権限を調査する方法としてはIAM Access Analyzerを利用する。
この時、一時的にでもAdmin権限を渡してCloudTrailログを解析することになる。

本記事はセキュリティ管理者に権限を申請する際、何の権限が必要なのかを調べようとしたときそのポリシーの種類と情報量に圧倒された人向けである。

TL;DL

cfn-giamを利用する
note: 筆者作成ツールであり、2022/03/01時点でデバッグ未完了。フィードバック募集中。

  1. AWS CLI実行可能環境を用意する(CloudShellやaws configure済みのターミナル)
  2. cfn-giamをインストールする
pip3 install cfngiam
  1. Cloudformationファイルを元にIAM Policyファイルを生成する
cfn-giam -i $yourcfn -o $exportfolder

前提

以下のコマンドを実行することでリソースタイプごとの権限を取得できる

aws cloudformation describe-type --type RESOURCE --type-name AWS::EC2::VPC --query Schema --output text | jq .handlers

cfn-giamはこの機能を用いて得られた権限をIAM Policyへ変換するツール

詳細

cli options

CLI option Description Require
-i, --input-path Cloudformationファイル、フォルダ、URLを指定する。フォルダを指定した場合、そのフォルダ下にあるすべてのファイルを再帰的に探索し、すべてを変換する。 yes or -l
-l, --input-resouce-type-list AWS リソースタイプ名のカンマ区切り文字列リスト。例: "AWS::IAM::Role,AWS::VPC::EC2" yes or -i
-o, --output-folderpath IAM Policy出力フォルダを指定する。指定しない場合、実行したカレントディレクトリまたはCloudformationファイルと同じ場所に出力する。 no
-v, --version バージョンを表示する。 no
-V, --verbose 詳細ログを表示する。 no
--help ヘルプを表示する。 no

cli examples

Cloudformation file

cfn-giam -i ./CFn/example.yml

cfn-giam generates to "./CFn/example.json"

Cloudformation folder

cfn-giam -i ./CFn -o ./dist

cfn-giam generates to "./dist/CFn/example.json"
cfn-giam generates to "./dist/MasterPolicy.json"

Cloudformation url file

cfn-giam -i https://s3.ap-northeast-1.amazonaws.com/cloudformation-templates-ap-northeast-1/Windows_Single_Server_SharePoint_Foundation.template

cfn-giam generates to "./Windows_Single_Server_SharePoint_Foundation.json"

Cloudformation resouce type list

cfn-giam -l AWS::EC2::Instance,AWS::EC2::SecurityGroup,AWS::EC2::Instance

cfn-giam generates to "./Windows_Single_Server_SharePoint_Foundation.json"

そのほか

githubはgithub actionsにより特定フォルダ内を指定してIAM Policyを生成+アーティファクトとして格納するworkflowを用意している。
また、そのWorkflowは前提として任意のAWSアカウントと連携するためのODIC+Roleを生成する必要がある。
そのためのCloudformationファイルも用意しているため参考にされたい。

参考文献

0
0
1

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
0