[個人メモ]IAMの情報をAWS CLIで確認する


# はじめに
AWS CLIでIAMを操作する場合、コマンドがいろいろあって混乱するので、個人的によく使うものを用途に応じてまとめてみました。

# ユーザ関連
## 一覧取得

```bash:command
aws iam list-users \
--query 'Users[].UserName' 
```

```bash:result
[
    "user1",
    "user2",
    "user3"
]
```

## 所属グループ取得

```bash:command
aws iam list-groups-for-user \
--user-name USERNAME \
--query 'Groups[].GroupName' 
```

```bash:result
[
    "group1",
    "group2",
    "group3"
]
```


# グループ関連
## 一覧取得

```bash:command
aws iam list-groups \
--query 'Groups[].GroupName' 
```
```bash:result
[
    "group1",
    "group2",
    "group3"
]
```

# ポリシー関連

## 管理ポリシー

### AWS管理ポリシー一覧

```bash:command
aws iam list-policies --scope AWS
```
```bash:result
{
    "Policies": [
        {
            "PolicyName": "AWSDirectConnectReadOnlyAccess",
            "CreateDate": "2015-02-06T18:40:08Z",
            "AttachmentCount": 0,
            "IsAttachable": true,
            "PolicyId": "ANPAI23HZ27SI6FQMGNQ2",
            "DefaultVersionId": "v1",
            "Path": "/",
            "Arn": "arn:aws:iam::aws:policy/AWSDirectConnectReadOnlyAccess",
            "UpdateDate": "2015-02-06T18:40:08Z"
        },
        {
            "PolicyName": "AmazonGlacierReadOnlyAccess",
            "CreateDate": "2015-02-06T18:40:27Z",
            "AttachmentCount": 0,
            "IsAttachable": true,
            "PolicyId": "ANPAI2D5NJKMU274MET4E",
            "DefaultVersionId": "v2",
            "Path": "/",
            "Arn": "arn:aws:iam::aws:policy/AmazonGlacierReadOnlyAccess",
            "UpdateDate": "2016-05-05T18:46:10Z"
        },

...snip...
```

### カスタマー管理ポリシー一覧

```bash:command
aws iam list-policies --scope Local
```
```bash:result
{
    "Policies": [
        {
            "PolicyName": "CUSTOMER_POLICY",
            "CreateDate": "2016-02-22T08:32:23Z",
            "AttachmentCount": 1,
            "IsAttachable": true,
            "PolicyId": "XXXXXXXXXXXX",
            "DefaultVersionId": "v1",
            "Path": "/",
            "Arn": "arn:aws:iam::XXXXXXXXXXXX:policy/CUSTOMER_POLICY",
            "UpdateDate": "2016-02-22T08:32:23Z"
        }
    ]
}
```

### なんらかのリソースにアタッチされている管理ポリシー

```bash:command
aws iam list-policies --only-attached
```

```bash:result
{
    "Policies": [
        {
            "PolicyName": "AmazonRDSFullAccess",
            "CreateDate": "2015-02-06T18:40:52Z",
            "AttachmentCount": 1,
            "IsAttachable": true,
            "PolicyId": "ANPAI3R4QMOG6Q5A4VWVG",
            "DefaultVersionId": "v2",
            "Path": "/",
            "Arn": "arn:aws:iam::aws:policy/AmazonRDSFullAccess",
            "UpdateDate": "2015-12-16T21:02:23Z"
        },
        {
            "PolicyName": "AmazonS3FullAccess",
            "CreateDate": "2015-02-06T18:40:58Z",
            "AttachmentCount": 1,
            "IsAttachable": true,
            "PolicyId": "ANPAIFIR6V6BVTRAHWINE",
            "DefaultVersionId": "v1",
            "Path": "/",
            "Arn": "arn:aws:iam::aws:policy/AmazonS3FullAccess",
            "UpdateDate": "2015-02-06T18:40:58Z"
        },
    ]
}
```

### ユーザにアタッチされている管理ポリシー

```bash:command
aws iam list-attached-user-policies \
--user-name USERNAME \
--query 'AttachedPolicies[].PolicyArn'
```
```bash:result
[
    "arn:aws:iam::aws:policy/AdministratorAccess"
]
```
### グループにアタッチされている管理ポリシー

```bash:command
aws iam list-attached-group-policies \
--group-name GROUPNAME \
--query 'AttachedPolicies[].PolicyArn'
```
```bash:result
[
    "arn:aws:iam::aws:policy/AdministratorAccess"
]
```

### 管理ポリシードキュメント

```bash:command
aws iam get-policy-version \
--version-id v1 \  #管理ポリシーのバージョン
--policy-arn POLICYARN \
--query 'PolicyVersion.Document'
```
```bash:result
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

## インラインポリシー
### ユーザにアタッチされているインラインポリシー

```bash:command
aws iam list-user-policies \
--user-name USERNAME
```
```bash:result
{
    "PolicyNames": [
        "INLINE_POLICY"
    ]
}
```
### ユーザにアタッチされているインラインポリシードキュメント

```bash:command
aws iam get-user-policy \
--user-name USERNAME \
--policy-name INLINE_POLICY \
--query 'PolicyDocument'
```
```bash:result
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

### グループにアタッチされているインラインポリシー
```bash:command
aws iam list-group-policies \
--group-name GROUPNAME
```
```bash:result
{
    "PolicyNames": [
        "INLINE_POLICY"
    ]
}
```
### グループにアタッチされているインラインポリシードキュメント

```bash:command
aws iam get-group-policy \
--group-name GROUPNAME \
--policy-name INLINE_POLICY \
--query 'PolicyDocument'
```
```bash:result
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```