[JAWS-UG CLI] IAM:#21 Kinesis 管理者グループの作成


AWS CLIを利用して、Kinesisへのフルアクセスが可能なIAMグループを作成してみます。

前提条件
=======

IAMへの権限
-----------

- IAMに対してフル権限があること。

AWS CLIのバージョン
------------------

- 以下のバージョンで動作確認済
	- AWS CLI 1.7.24

```bash:コマンド
aws --version
```
```bash:結果(例)
	aws-cli/1.7.25 Python/2.7.6 Darwin/14.3.0
```
      
0. 準備
==========
	
変数の確認
------------------

プロファイルが想定のものになっていることを確認します。

```bash:変数の確認
aws configure list
```

```bash:結果(例)
            Name                    Value             Type    Location
            ----                    -----             ----    --------
         profile       iamFull-prjZ-mbp13              env    AWS_DEFAULT_PROFILE
      access_key     ****************LOAQ shared-credentials-file
      secret_key     ****************I1O1 shared-credentials-file
          region                us-west-2      config-file    ~/.aws/config
```

1. 事前作業
==========

1.1. IAMグループ名の決定
------------------

```bash:コマンド
IAM_GROUP_NAME="KinesisFull"
```

同じ名前のIAMグループが存在しないことを確認します。

```bash:コマンド
aws iam get-group --group-name ${IAM_GROUP_NAME}
```

```bash:結果(例)
A client error (NoSuchEntity) occurred when calling the GetGroup operation: The group with name KinesisFull cannot be found.
```
      
1.2. IAMポリシーの決定
------------------

存在するユーザ管理ポリシーを確認します。

```bash:コマンド
aws iam list-policies \
        --scope AWS \
        --max-items 1000 \
        --query 'Policies[].PolicyName'
```


利用するIAMポリシーを決めます。

```bash:コマンド
IAM_POLICY_NAME='AmazonKinesisFullAccess'
```

1.3. IAMポリシーの確認
------------------

ARNを取得します。

```bash:コマンド
IAM_POLICY_ARN=`aws iam list-policies --max-items 1000 |  jq -r --arg name ${IAM_POLICY_NAME} '.Policies[] | select( .PolicyName == $name ) | .Arn'` \
        && echo ${IAM_POLICY_ARN}
```

```bash:結果(例)
	arn:aws:iam::aws:policy/AmazonKinesisFullAccess
```

ポリシのバージョンを取得します。

```bash:コマンド
IAM_POLICY_VERSION=`aws iam list-policies --max-items 1000 |  jq -r --arg name ${IAM_POLICY_NAME} '.Policies[] | select( .PolicyName == $name ) | .DefaultVersionId'` \
        && echo ${IAM_POLICY_VERSION}
```

```bash:結果(例)
      v1
```

ポリシの内容を見てみましょう。

```bash:コマンド
aws iam get-policy-version \
        --policy-arn ${IAM_POLICY_ARN} \
        --version-id ${IAM_POLICY_VERSION}
```

```JSON:結果(例)
{
    "PolicyVersion": {
        "CreateDate": "2015-02-06T18:40:29Z", 
        "VersionId": "v1", 
        "Document": {
            "Version": "2012-10-17", 
            "Statement": [
                {
                    "Action": "kinesis:*", 
                    "Resource": "*", 
                    "Effect": "Allow"
                }
            ]
        }, 
        "IsDefaultVersion": true
    }
}
```

2. グループの作成
==========


2.1. IAMグループの作成
------------------

IAMグループを作成します。

```bash:変数の確認
cat << ETX

        IAM_GROUP_NAME: ${IAM_GROUP_NAME}

ETX
```

```bash:コマンド
aws iam create-group --group-name ${IAM_GROUP_NAME}
```

```bash:結果(例)
{
    "Group": {
        "Path": "/", 
        "CreateDate": "2015-05-04T03:29:26.952Z", 
        "GroupId": "AGPAIXXXXXXXXXXXXXXXX", 
        "Arn": "arn:aws:iam::XXXXXXXXXXXX:group/KinesisFull", 
        "GroupName": "KinesisFull"
    }
}
```

      
2.2. IAMグループの確認
------------------

```bash:コマンド
aws iam get-group --group-name ${IAM_GROUP_NAME}
```

```bash:結果(例)
{
    "Group": {
        "Path": "/", 
        "CreateDate": "2015-05-04T03:29:26Z", 
        "GroupId": "AGPAIXXXXXXXXXXXXXXXX", 
        "Arn": "arn:aws:iam::XXXXXXXXXXXX:group/KinesisFull", 
        "GroupName": "KinesisFull"
    }, 
    "Users": []
}
```

3. グループポリシーの適用
==========

3.1. IAMグループポリシーの確認
------------------

IAMグループのグループポリシーを確認します。

```bash:コマンド
aws iam list-attached-group-policies \
        --group-name ${IAM_GROUP_NAME}
```

```bash:結果(例)
{
    "AttachedPolicies": [], 
    "IsTruncated": false
}
```
      
3.2. IAMグループポリシーの適用
------------------

マネージドポリシーをIAMグループに適用します。

```bash:変数の確認
cat << ETX

	IAM_GROUP_NAME:   ${IAM_GROUP_NAME}
	IAM_GPOLICY_NAME: ${IAM_POLICY_ARN}

ETX
```


```bash:コマンド
aws iam attach-group-policy \
        --group-name ${IAM_GROUP_NAME} \
        --policy-arn ${IAM_POLICY_ARN}
```

```bash:結果(例)
      (戻り値なし)
```
      
4. IAMグループポリシーの確認
==========

IAMグループのグループポリシーを確認します。

```bash:コマンド
aws iam list-attached-group-policies \
        --group-name ${IAM_GROUP_NAME}
```

```bash:結果(例)
{
    "AttachedPolicies": [
        {
            "PolicyName": "AmazonKinesisFullAccess", 
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonKinesisFullAccess"
        }
    ], 
    "IsTruncated": false
}
```

完了
==========

グループを作成したら、ユーザを作成しましょう。