AWS Sagemakerでセキュリティに強い機械学習環境を構築する ②

## はじめに / 本稿のゴール
強固なセキュリティに守られた機械学習環境を、クラウド上に構築するまでをハンズオンで行う本連載。[前回](https://qiita.com/Catetin0310/items/7b6806e7e2b839e74664)は、第一回として下記を行いました。

- **[AWS S3](https://aws.amazon.com/jp/s3/)**バケットを作成
- **[AWS SageMaker](https://aws.amazon.com/jp/sagemaker/)**を立ち上げ
- **[AWS Trusted Advisor](https://aws.amazon.com/jp/premiumsupport/trustedadvisor/)** を開く


今回は二回目として、Trusted Advisorで指摘された内容を確認、下記を行います。

- セキュリティグループ設定
- ルートアカウントのMFA設定
- IAMに関して - 最小権限の原則の把握



## 手順
前回、コンソール画面の表示までを行いました。チェックアイコンは危機レベル。各項目をクリックするとアドバイスの詳細を表示できます。ひとつづつ見ていきます。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/3a62cc62-e661-bbb0-b609-8f60cd58f038.png)

### セキュリティグループ設定  
1. 必要とするIPアドレスだけにアクセス許可をするように、とあります。今回はマイIPだけに許可を与え、現環境からのアクセスだけを通す形に設定します。チェックが入っているセキュリティーグループIDをクリック。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/492c1f1f-6064-4d0a-7a62-1f99b8991df1.png)

2. インバウンドのタブを選択、編集をクリック。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/10bbf73e-d1ee-f490-952c-a4f2ace5bf0a.png)

3. 不要なルールを削除後、ソースをマイIPに設定、ルールを保存。
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/7787a7eb-73fe-8d7b-0a5d-bd4df146ade7.png)

4. 同様の処理を他のセキュリティーグループで行って、作業完了。

### ルートアカウントのMFA設定
Multi-Factor Authentication = 多段階認証。ルートアカウントが乗っ取られてしまった場合、AWSのすべての権限が第三者の手に渡ってしまいます。これはものすごくリスキーだから、せめてルートアカウントのMFAを有効にしてね、ということです。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/7a444aae-b7b9-07e3-4a37-ca55c6ac24ba.png)

1. コンソールからIAMに飛び、ルートアカウントのMFAを有効化、を選択してMFAの管理をクリック。
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/e8d45587-c8b0-96f7-9b0f-05ad1bf466d1.png)

2. 多要素認証(MFA)を選択、MFAの有効化をクリック。
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/0ce39af4-80a0-7c69-e938-f189e55db74d.png)

3. 今回は手早く導入できる仮想MFAデバイスを選択。
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/d06da246-d66c-cc66-45ca-6ed463f3f389.png)

4. 仮想MFAのデバイスはアプリやプログラムとして各種用意されています。何を使えば良いかわからない方は、下記リストから選択し、手元の端末にインストールします。私はiphoneアプリを入れました。めんどくさそうと思いきや、意外とサクッとできます。
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/c5dfc198-f673-217d-30d6-0ccad52e8a27.png)

5. QRコードの表示をクリックして、端末で読み取り。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/2f7e7e4b-09b2-38d9-d4b1-bdd7f3a46c14.png)

6. 仮想MFAデバイスに表示された数字を入力、MFAの割り当てをクリック。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/5df920a2-4907-ed77-0710-48c1d8050458.png)

7. この画面になれば成功。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/64cac371-58d2-8b77-73f8-d7dbceb4afb1.png)


### IAMに関して - 最小権限の原則の把握
1. 最後の項目を見てみます。IAMユーザーを作りましょう、とあります。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/859f11d2-ff17-121a-373a-b1cb2b83ee1a.png)

2. コンソールからIAMのダッシュボードを表示。3項目に指摘。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/47749e64-629e-fec0-01ef-ecf4ab7f94aa.png)

3. ここで目的を明確にするために、**最小権限の原則**に触れます。下記図の右上の項目を充足するための原則です。
<img width="1024" alt="15.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/6902d376-df10-f83d-cb56-219dc88a8766.jpeg">

IAMの要素を入れてざっくり図示します。
![16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363781/3adc2bb0-91de-2b8d-b138-a64bcd9e3637.jpeg)


全権限をもってるルートアカウントでサービスを使ってしまったら、原則に則ったアーキテクチャ設計が出来ません。だからIAMユーザーを作ってください、と推奨されています。


## まとめ
次回はIAMまわりの設定を見直します。お楽しみに！

## 参考リンク
こちらの記事を参考にさせていただきました。

[初心者がAWSでミスって不正利用されて$6,000請求、泣きそうになったお話。](https://qiita.com/mochizukikotaro/items/a0e98ff0063a77e7b694)
[AWSアカウントを取得したら速攻でやっておくべき初期設定まとめ](https://qiita.com/tmknom/items/303db2d1d928db720888)