
IAMをコード管理するMiamを使ってみた
2017.01.14
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Miamとは?
Miamとは、AWSアカウントのIAM情報をコード管理出来るツールです。
使い勝手はRoute53とほぼ同様なので、AWS環境をコード管理していると重宝出来ると思います。
GitHub
使い方
Miamをインストール
% gem build miam.gemspec % gem install miam-0.2.4.beta8.gem % gem list miam *** LOCAL GEMS *** miam (0.2.4.beta8)
※本記事執筆時、gem install miamでインストールを行った所少し古いバージョンがインストールされ、
そのバージョンで作業を実施すると、パスワードポリシーのエラーが表示されました。
そのため、今回は0.2.4 beta8を使用しております。
Miamオプション
Usage: miam [options]
    -p, --profile PROFILE_NAME
        --credentials-path PATH
    -k, --access-key ACCESS_KEY
    -s, --secret-key SECRET_KEY
    -r, --region REGION
    -a, --apply
    -f, --file FILE
        --dry-run
        --account-output FILE
    -e, --export
    -o, --output FILE
        --split
        --split-more
        --format=FORMAT
        --export-concurrency N
        --target REGEXP
        --ignore-login-profile
        --no-color
        --no-progress
        --debug
IAM情報をエクスポート
IAM情報を一つのDSL or JSONファイルでエクスポートします。
DSL
% miam -e -o <エクスポートファイル名> Export IAM to `miam-export`
% tree . └── miam-export
JSON
% miam -e -o <エクスポートファイル名>
% miam -e --format=json -o <エクスポートファイル名> Export IAM to `miam-export.json`
各IAM情報をエクスポート
IAMユーザー、グループ、ロール、ポリシーレベルで情報を取得します。
DSL
% miam -e --split
. ├── IAMfile ├── groups.iam ├── policies.iam ├── roles.iam └── users.iam
JSON
% miam -e --split --format=json
. ├── groups.iam.json ├── instance_profiles.iam.json ├── policies.iam.json ├── roles.iam.json └── users.iam.json
詳細な各IAM要素で情報をエクスポート
IAMユーザー、グループ、ロール、ポリシーレベルの各項目レベルで情報を取得します。
DSL
% miam -e --split-more
.
├── IAMfile
├── groups
│   └── xxxxxxxx.iam
├── policies
│   ├── xxxxxxxx.iam
│   ├── xxxxxxxx.iam
│   └── xxxxxxxx.iam
├── roles
│   ├── xxxxxxxx.iam
│   ├── xxxxxxxx.iam
│   ├── xxxxxxxx.iam
│   └── xxxxxxxx.iam
└── users
    ├── xxxxxxxx.iam
    ├── xxxxxxxx.iam
    └── xxxxxxxx.iam
JSON
% miam -e --split-more --format=json
.
├── groups
│   └── xxxxxxxx.iam.json
├── policies
│   ├── xxxxxxxx.iam.json
│   ├── xxxxxxxx.iam.json
│   └── xxxxxxxx.iam.json
├── roles
│   ├── xxxxxxxx.iam.json
│   ├── xxxxxxxx.iam.json
│   ├── xxxxxxxx.iam.json
│   └── xxxxxxxx.iam.json
└── users
    ├── xxxxxxxx.iam.json
    ├── xxxxxxxx.iam.json
    └── xxxxxxxx.iam.json
IAM変更
DSL or JSONファイルをテスト実行する(dry-run)
% miam --dry-run -a -f <DSLファイル or JSONファイル>
DSL or JSONファイルを実行する
% miam -a -f <DSLファイル or JSONファイル>
最後に
使い方を記載していきましたが、多くのIAMユーザーやロールが作成されている環境で
アタッチ済みポリシーの確認などの情報整理には大きく貢献してくれるツールと思いました。











