LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-06-05

はじめに

本連載の最終回として、特にセキュリティと運用上の信頼性に留意し、構成を再考、IAM設定を見直すことでセキュリティに強い機械学習環境の作成まで行います。

ゴール

前回、最小権限の原則に触れました。

16.jpg

Notebook上の操作でうっかりローデータを消してしまっては大変なので、推論結果の保存先とローデータの保存先を分けます。それらに紐づける形で、Notebookインスタンス、IAMエンティティを作成します。

この際、セキュリティ担保のために最低限必要な項目である、MFA認証についてもポリシーで固めておきます。

このような条件を満たす環境の構築をゴールとします。

手順

1. IAMポリシー

  • 管理者 Notebook
  • 機械学習技術者 Notebook
  • 管理者 グループ
  • 機械学習技術者 グループ

これら4つの要素にアクセス権限を付与するため、
以下の3点を明示したポリシーを作成します。

  • S3バケットに対するアクセス
  • インスタンスに対するアクセス
  • 各ユーザーのMFA認証必須

内容は下記の通り。

管理者Notebook用ポリシー
// for_notebook-for-administrator
{
    "Version": "2012-10-17",
    "Statement": {
        "Sid": "RawDataAccessAll",
        "Effect": "Allow",
        "Action": "*",
        "Resource": "arn:aws:s3:::sagemaker-rawdata/*"
    }
}
機械学習技術者Notebook用ポリシー
// for_notebook-for-engineer
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RawDataAccessGetList",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
                ],
            "Resource": "arn:aws:s3:::sagemaker-rawdata/*"
        },
        {
            "Sid": "SageMakerResultAllAccess",
            "Effect": "Allow",
            "Action": "*",
            "Resource": "arn:aws:s3:::sagemaker-result/*"
        }
    ]
}
管理者グループ用ポリシー
// for_SageMakerAdministrator_Group
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "MFA",
            "Effect": "Deny",
            "Action": "*",
            "Resource":"*",
            "Condition": {
                "Null": {"aws:MultiFactorAuthAge": true }
            }
        },
        {
            "Sid": "AdministratorAccess",
            "Effect": "Allow",
            "Action": "*",
            "Resource":"arn:aws:sagemaker:::notebook-instance/notebook-for-administrator/*"
        }
    ]
}
機械学習技術者グループ用ポリシー
// for_SageMakerEngineer_Group
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "MFA",
            "Effect": "Deny",
            "Action": "*",
            "Resource":"*",
            "Condition": {
                "Null": { "aws:MultiFactorAuthAge": true }
            }
        },
        {
            "Sid": "EngineerAccess",
            "Effect": "Allow",
            "Action": "*",
            "Resource":"arn:aws:sagemaker:::notebook-instance/notebook-for-engineer/*"            
        }
    ]
}

2. IAMロール

先ほどのIAMポリシーをNotebookインスタンスに紐づけるためのIAMロールを作成します。

コンソールからIAMを選択。ロールを選択し、ロールの作成をクリック
02.png
AWSサービスのS3を選択。ユースケースの選択でS3を選択、次のステップに進みます。
03.png
先ほど作成したポリシーを選択し、
04.png
タグの選択をクリック
05.png
付与したポリシーが分かるように、ロールの名称をいれ、作成まで進みます。
06.png

3. S3バケット

コンソールでS3を選択、バケットを作成するをクリック
07.png

バケット名を入力し、左下の作成をクリック
08.png

4. Notebookインスタンス

コンソールからノートブックインスタンスを選択
09.png

新しいNotebookインスタンスを作成
10.png

名称を入れ、先ほど作成したIAMロールのARNを入力します。
11.png

ARNはIAMロールのコンソールから確認できます。あとはチェックを飛ばし、作成してOK。
2019-06-05_15h45_26.png

5. IAMグループ/ユーザー

またまたIAMのコンソールで、グループを選び、新しいグループを作成。
2019-06-05_15h49_28.png

グループ名を入力。
2019-06-05_15h50_08.png

作成したポリシーをアタッチ。そのまま進み、作成をクリック。
2019-06-05_15h51_52.png

ユーザーに移り、追加をクリック。
2019-06-05_15h52_25.png

これらの箇所にチェックを入れて
2019-06-05_15h53_01.png

グループに所属。そのまま進み作成をクリック。
2019-06-05_15h53_40.png

Trusted Advisor 再確認

Trusted Advisorを見てみましょう。確認できる範囲ではオールグリーンになってますね。
2019-06-05_16h03_59.png

まとめ

このように必要なセキュリティ要件や課題点からシステムを設計し、IAMロールで設定した後に各要素を追加していくと手戻りが少ないです(自戒)。さくっと環境構築をすまして、じっくり分析して、おもしろい結果を出しましょう。

参考リンク (AWSオフィシャル)

Identity and Access Management
バケットポリシーの例

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0