[JAWS-UG CLI] AWSアカウント(root)作業 #2 IAM関連の設定

AWSアカウントを作成したらやっておきたいことのうち、IAM関連の設定をマネジメントコンソールから実施します。
(credentialsファイルの変換はCLIで実施します。)

IAMマネジメントコンソールのチェック項目が全部グリーンになるように進めていきます。

# 前提条件

- AWSアカウント(root)が必要です。


# 1. GUIログインの強度を上げる (Web)

## 1.1. AWSアカウント(root)へのMFA設定

### 1. IAMマネジメントコンソールにアクセス

- IAMのマネジメントコンソールに https://console.aws.amazon.com/iam/home#home にアクセスします。

### 2. MFA設定画面へのアクセス

- "Activate MFA on your root account"タブをクリックして展開します。
- "Manage MFA"ボタンをクリックします。


### 3. MFAの設定

■仮想MFAデバイスの場合

MFAデバイスの管理 画面 (その1)

    “仮想MFAデバイス”(ラジオボタン)を選択します。
    “次のステップ”ボタンをクリックします。

MFAデバイスの管理 画面 (その2)

    “次のステップ”ボタンをクリックします。

MFAデバイスの管理 画面 (その3)

    QRコードをMFAソフトウェアに読み込ませます。

注釈:
    QRコードを画像で保存しておくことで、MFAソフトウェアが利用できなくなった場合でも復旧させることが可能です。ただし保存した画像は安全なところで厳重に保管してください。

    MFAソフトウェアに表示された6桁の数字を以下を入力します。(1回目)
    Authentication Code 1:
     	

    MFAソフトウェアに表示された6桁の数字を以下を入力します。(2回目)
    Authentication Code 2:
     	

    “仮想MFAの有効化”ボタンをクリックします。

MFAデバイスの管理 画面 (その4)

    “MFA デバイスは正常に関連付けられました。”と表示されたことを確認します。

    “完了”ボタンをクリックします。



■ハードウェアMFAデバイスの場合

- "A hardware MFA device"(ラジオボタン)を選択します。
- "Next Step"ボタンをクリックします。

- 以下を入力します。
  - :Serial Number:	デバイスに記載されたシリアルナンバー
  - :Authentication Code 1: 最初に表示された6桁の数字
  - :Authentication Code 2: 液晶消灯直後にスイッチをONにすると表示される6桁の数字

- "Next Step"ボタンをクリックします。

- “Finish”ボタンをクリックします。


### 4. MFAの設定確認

- IAMマネジメントコンソールのダッシュボード画面をリロードします。

- "Activate MFA on your root account"のチェックがグリーンになっていることを確認します。

### 5. ログイン確認 (別のブラウザ)

現在作業に利用しているものとは別のブラウザソフトでログインできることを確認しましょう。

(例) 現在Google Chromeで作業しているのであれば、Firefoxでログイン確認します。

- ログイン
  - ログイン画面へのアクセス http://aws.amazon.com/jp/ にアクセスします。
  - "サインアップ"ボタンをクリックします。
  - "My e-mail address is"欄に (メールアドレス)を入力します。
  - ラジオボタン "I am a returning user and my password is:" を選択します。
  - パスワードを入力します。
  - "Sign in Using our secure server"ボタンをクリックします。

- MFA画面
  - MFAに表示されている6桁の数値を入力します。

- マネジメントコンソール画面
  - マネジメントコンソールにログインできたことを確認します。

- 確認できたら、そのブラウザではサインアウトしておきましょう。
    - 右上のユーザ名 > SIgn Out


## 1.2. パスワードポリシーの設定

### 1. パスワードポリシ設定画面へのアクセス

- ダッシュボードで、"IAM パスワードポリシーの適用"タブをクリックして展開します。

- "パスワードポリシーの管理"ボタンをクリックします。


### 2. パスワードポリシの設定

- パスワードの最小長:の値を "10" にします。

- 以下のチェックボックスをOnにします。
  - 少なくとも 1 つの大文字が必要
  - 少なくとも 1 つの小文字が必要
  - 少なくとも 1 つの数字が必要
  - 少なくとも 1 つの英数字以外の文字が必要
  - (期限系の制限はお好みでONにしてください。)

- "パスワードポリシーの適用"ボタンをクリックします。


### 3. 設定確認

- "ダッシュボード"リンクをクリックして、IAMマネジメントコンソールのダッシュボードに移動します。

- "IAM パスワードポリシーの適用"のチェックがグリーンになっていることを確認します。


# 2. IAMグループ/ユーザの作成 (Web)

## 2.1. IAMグループの作成 (IAMフルアクセス)

IAMにフルアクセスできるグループを作成します。

### 1. グループ設定画面へのアクセス

- "グループを使用してアクセス許可を割り当て"タブをクリックして展開します。
- "グループの管理"ボタンをクリックします。

### 2. Groupの作成

- "新しいグループの作成"ボタンをクリックします。
- Group Name:欄に "iadm" と入力します。
  - "次のステップ"ボタンをクリックします。
- "IAM Full Access"のチェックボックスをオンにします。
  - "次のステップ"ボタンをクリックします。
- "グループの作成"ボタンをクリックします。


### 3. 設定確認

- "ダッシュボード"リンクをクリックして、IAMマネジメントコンソールのダッシュボードに移動します。

- "グループを使用してアクセス許可を割り当て"のチェックがグリーンになっていることを確認します。


## 2.2. 最初のIAMユーザ作成

IAMユーザを作成します。

### 1. IAMユーザ設定画面へのアクセス

- "個々の IAM ユーザーの作成"タブをクリックして展開します。
- "ユーザの管理"ボタンをクリックします。

### 2. Userの設定

- "ユーザを作成"ボタンをクリックします。
- 作成する管理者ユーザの名前を入力します。
  - プログラムによるアクセス(チェックボックス)をオンにします。
- "次のステップ：アクセス権限"ボタンをクリックします。
- "ユーザをグループに追加"をクリックします。
- "iadm"のチェックボックスをオンにします。
- "次のステップ：確認"ボタンをクリックします。
- "ユーザの作成"ボタンをクリックします。
- ".csvのダウンロード"ボタンをクリックします。
- credentials.csvという名前のファイルの保存先を指定して保存してください。

credentials.csvは再度ダウンロードできないので注意してください。 (credential情報の再生成が必要になります。)

- "閉じる"リンクをクリックします。


### 3. 設定画面

- "ダッシュボード"リンクをクリックして、IAMマネジメントコンソールのダッシュボードに移動します。
- "個々の IAM ユーザーの作成"のチェックがグリーンになっていることを確認します。

# 3. APIへのアクセス環境作成 (CLI)

IAMユーザのアクセスキーを取得したら、早速利用できるようにしましょう。

## 3.0. 個別ファイル用ディレクトリの作成

```bash:コマンド:
mkdir -p ~/.aws/source
```

## 3.1. IAMユーザ毎のデータの作成

ダウンロードした認証情報ファイルを指定します。

```bash:コマンド(OSXの例):
FILE_AWS_CRED="${HOME}/Downloads/credentials.csv"
```

## 3.2. シェルスクリプト用認証ファイルの作成

まず最初に、シェルスクリプトから読み込める形式のファイルを作成します。


```bash:コマンド:
AWS_USER_NAME=$(
  cat ${FILE_AWS_CRED} |\
  grep -v ^User |\
  awk 'BEGIN{FS=","}{print $1}' |\
  sed 's/\"//g' \
) \
  && echo "username: ${AWS_USER_NAME}"
```

```bash:コマンド:
cat ${FILE_AWS_CRED} |\
  grep -v ^User |\
  awk 'BEGIN{FS=","}{print "aws_access_key_id=" $3 "\naws_secret_access_key=" $4}' |\
  tr -d '\r' \
  > ~/.aws/source/${AWS_USER_NAME}.rc \
  && cat ~/.aws/source/${AWS_USER_NAME}.rc
```

```bash:結果:
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```

## 3.3. 設定ファイルの作成

続いてAWS CLI用の設定ファイルを作成します。


```bash:コマンド(例):
REGION_AWS_CONFIG='us-west-2'
```

```bash:コマンド:
FILE_USER_CONFIG="${HOME}/.aws/source/${AWS_USER_NAME}.config"

echo "[profile ${AWS_USER_NAME}]" > ${FILE_USER_CONFIG} \
  && echo "region=${REGION_AWS_CONFIG}" >> ${FILE_USER_CONFIG} \
  && echo "" >> ${FILE_USER_CONFIG} \
  && cat ${FILE_USER_CONFIG}
```

```bash:結果:
[profile user-project-sample]
region=us-west-2
```

## 3.4. AWS CLI用の認証ファイルの作成

続いてAWS CLI用の認証ファイルを作成します。

### credentialsファイル

```bash:コマンド:
file="${HOME}/.aws/credentials"
if [ -e ${file} ]; then mv ${file} ${file}.bak; fi
for i in $(ls ${HOME}/.aws/source/*.rc); do \
  name=$(echo $i | sed 's/^.*\///' | sed 's/\.rc$//') \
  && echo "[$name]" >> ${file} \
  && cat $i >> ${file} \
  && echo "" >> ${file} ;done \
  && cat ${file}
```

```bash:結果:
[user-project-sample]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```

### configファイル

```bash:コマンド:
cat ${HOME}/.aws/source/*.config > ${HOME}/.aws/config \
  && cat ${HOME}/.aws/config
```

```bash:結果:
[profile user-project-sample]
region=us-west-2
```

## 3.5. 確認

これでAWS CLIを使ってAWS APIにアクセスする準備が整いました。

試しにIAMにアクセスしてみましょう。


```bash:コマンド:
export AWS_DEFAULT_PROFILE=${AWS_USER_NAME}; aws iam list-users
```

数秒程度で以下のように、作成したIAMユーザが表示されればOKです。

```json:結果:
{
    "Users": [
        {
            "UserName": "user-project-sample", 
            "Path": "/", 
            "CreateDate": "2015-01-29T08:12:20Z", 
            "UserId": "AIDAJXXXXXXXXXXXXXXXX", 
            "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/user-project-sample"
        }
    ]
}
```

## 3.6. credentialsファイルの削除

ダウンロードした認証情報ファイルは削除しておきましょう。


```bash:コマンド:
rm ${FILE_AWS_CRED}
```


# 4. AWSアカウントIDの確認 (CLI)

AWSアカウントIDを確認しておきましょう。
何かと使う機会があるので、きちんと管理しておくことをオススメします。

```bash:コマンド:
AWS_ID=$( \
  aws iam get-user \
    --query 'User.Arn' \
    --output text \
  | sed 's/^.*:://' | sed 's/:.*$//' \
) \
  && echo ${AWS_ID}
```

```text:結果:
XXXXXXXXXXXX
```

# 完了

次に、ハンズオン用アカウントを作成します

- 方法1: Administratorユーザの作成 (やや非推奨):
- 方法2: ReadOnly IAMユーザ + AssumeRoleの活用 (推奨): http://qiita.com/tcsh/items/a4a081208e7e273c93a6