IAMをコード管理するMiamを使ってみた

2017.01.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Miamとは?

Miamとは、AWSアカウントのIAM情報をコード管理出来るツールです。
使い勝手はRoute53とほぼ同様なので、AWS環境をコード管理していると重宝出来ると思います。

GitHub

Maim

使い方

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ユーザーやロールが作成されている環境で
アタッチ済みポリシーの確認などの情報整理には大きく貢献してくれるツールと思いました。