AWS CLIの振り返り ~IAM基礎編~

#本記事の目的
JAWS-UG CLI オンラインハンズオンの復習として、ハンズオンで取り上げられたAWSサービスに関する用語と、使用したAWS CLI コマンドを箇条書きでまとめる。
今回はIAM基礎編を取り上げる。

#主なAWSサービス用語
####ポリシードキュメント
IAMポリシーにおける、アクセスの許可と拒否の条件を記載したJSON形式のファイル。

####(AWS CLI)認証情報ファイル
特定のIAMユーザで、AWS CLIからAWSリソースにアクセスする際に必要な認証ファイル。通常`~/.aws/credentials`ファイル、及び`~/.aws/config`ファイルを指す。

####インラインポリシー
AWSリソースに対する操作権限の一種。単一のユーザーやグループ、ロールに対してのみ付与できる。


####多要素認証(MFA)
特定のWebサービスにログインする際に、2つ以上の要素によって本人確認を行なう認証。特定のIAMユーザでAWSコンソールにログインする場合、MFAデバイスを設定する事でQRコードを用いたMFAを設定する事ができる。

####インスタンスプロファイル
特定のIAMロール情報をEC2インスタンス起動時に使用可能にするオブジェクト。



#主なAWS CLI コマンド一覧
####管理ポリシーバージョンの作成
```
$ aws iam create-policy-version --policy-arn <IAMポリシーのARN> --policy-document file://<IAMポリシードキュメントのパス>
```

####管理ポリシーバージョンの一覧表示
```
$ aws iam list-policy-versions --policy-arn <IAMポリシーのARN>
```

####管理ポリシーデフォルトバージョンの設定
```
$ aws iam set-default-policy-version --policy-arn IAMポリシーのARN> --version-id <IAMポリシーバージョンのID>
```

####管理ポリシーバージョンの削除
```
$ aws iam delete-policy-version --policy-arn <IAMポリシーのARN> --version-id <IAMポリシーバージョンのID>
```

####グループに対するインラインポリシーの作成
```
$ aws iam put-group-policy --group-name <IAMグループ名> --policy-name <IAMポリシー名> --policy-document file://<IAMポリシードキュメントパス>
```

####グループに対するインラインポリシーの一覧表示
```
$ aws iam list-group-policies --group-name <IAMグループ名>
```

####グループに対するインラインポリシーの削除
```
$ aws iam delete-group-policy --group-name <IAMグループ名> --policy-name <IAMポリシー名>
```

####仮想MFAデバイスの作成
```
$ aws iam create-virtual-mfa-device --virtual-mfa-device-name <仮想MFAデバイス名> --outfile <MFAブートストラップ出力ファイル用ディレクトリ> --bootstrap-method <MFAブートストラップメソッド名> 
```
※`--bootstrap-method`オプションの引数に`QRCodePNG`を指定し、`--outfile`オプションの引数にディレクトリを指定する事で、読み取る事で仮想MFAデバイスを登録できるQRコード画像が特定のディレクトリに出力される。

####仮想MFAデバイスの有効化
```
$ aws iam enable-mfa-device --user-name <IAMユーザー名> --serial-number <仮想MFAデバイスのシリアル番号> --authentication-code1 <連続した認証コード一回目> --authentication-code2 <連続した認証コード2回目>
```

####仮想MFAデバイスの一覧表示
```
$ aws iam list-virtual-mfa-devices
```
※仮想MFAデバイスのシリアル番号を表示できる。

####仮想MFAデバイスの無効化
```
$ aws iam deactivate-mfa-device --user-name <IAMユーザー名> --serial-number <仮想MFAデバイスのシリアル番号>
```

####仮想MFAデバイスの削除
```
$ aws iam delete-virtual-mfa-device --serial-number <仮想MFAデバイスのシリアル番号>
```

####ロールに対するインラインポリシーの作成
```
$ aws iam put-role-policy --role-name <IAMロール名> --policy-name <IAMポリシー名> --policy-document file://<IAMポリシードキュメントパス>
```

####ロールに対するインラインポリシーの一覧表示
```
$ aws iam list-role-policies --group-name <IAMロール名>
```

####ロールに対するインラインポリシーの削除
```
$ aws iam delete-role-policy --group-name <IAMロール名> --policy-name <IAMポリシー名>
```

####インスタンスプロファイルの作成
```
$ aws iam create-instance-profile --instance-profile-name <インスタンスプロファイル名> --path "<インスタンスプロファイルパス>"
```

####インスタンスプロファイルの一覧表示
```
$ aws iam list-instance-profiles
```

####インスタンスプロファイルの削除
```
aws iam delete-instance-profile --instance-profile-name <インスタンスプロファイル名>
```

####インスタンスプロファイルのアタッチ
```
$ aws iam add-role-to-instance-profile --instance-profile-name <インスタンスプロファイル名> --role-name <IAMロール名>
```

####インスタンスプロファイルの詳細表示
```
$ aws iam get-instance-profile --instance-profile-name <インスタンスプロファイル名>
```

####インスタンスプロファイルのデタッチ
```
$ aws iam remove-role-from-instance-profile --instance-profile-name <インスタンスプロファイル名> --role-name <IAMロール名>
```


#参考文献
- AWSCLIコマンドリファレンス:[IAM](https://docs.aws.amazon.com/cli/latest/reference/iam/)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): IAM基礎(ポリシー)](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-iam_policy/index.html)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): IAM基礎(グループ)](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-iam_group/iam-group-update-expand-policy-attach-inline-basic.html)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): IAM基礎(ユーザー)](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-iam_user/index.html)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): IAM基礎(ロール)](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-iam_role/index.html)
- JAWS-UG CLI専門支部：[ハンズオン(簡易版): IAM基礎(インスタンスプロファイル)](http://prototype-handson-cli.s3-website-ap-northeast-1.amazonaws.com/handson_light-aws_service/handson_light-aws_service-iam_instance_profile/)