

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# MLflow の IAM アクセス許可を設定する
<a name="mlflow-create-tracking-server-iam"></a>

まず、Amazon SageMaker AI で MLflow を使用するために必要な IAM サービスロールを設定する必要があります。

Studio で実験にアクセスするための新しい Amazon SageMaker AI ドメインを作成する場合は、ドメインの設定中に必要な IAM アクセス許可を設定できます。詳細については、「[新しいドメインの作成時に MLflow IAM アクセス許可を設定する](#mlflow-create-tracking-server-iam-role-manager)」を参照してください。

IAM コンソールを使用してアクセス許可を設定するには、「[IAM コンソールで必要な IAM サービスロールを作成する](#mlflow-create-tracking-server-iam-service-roles)」を参照してください。

`sagemaker-mlflow` アクションに対する認証コントロールを設定する必要があります。必要に応じて、さらに詳細な認証コントロールを定義して、アクションごとの MLflow アクセス許可を制御できます。詳細については、「[アクションごとの認証コントロールを作成する](#mlflow-create-tracking-server-update-iam-actions)」を参照してください。

## 新しいドメインの作成時に MLflow IAM アクセス許可を設定する
<a name="mlflow-create-tracking-server-iam-role-manager"></a>

組織の新しい Amazon SageMaker AI ドメインを設定するときは、**[ユーザーと ML アクティビティ]** 設定を通じて、ドメインサービスロールの IAM アクセス許可を設定できます。

**新しいドメインの設定時に SageMaker AI で MLflow を使用するための IAM アクセス許可を設定するには**

1. SageMaker AI コンソールを使用して新しいドメインを設定します。**[SageMaker AI Domain をセットアップ]** ページで、**[組織向けの設定]** を選択します。詳細については、「[コンソールを使用したカスタムセットアップ](onboard-custom.md#onboard-custom-instructions-console)」を参照してください。

1. **ユーザーと ML アクティビティ**を設定するときは、MLflow の次の ML アクティビティから選択します。**MLflow の使用**、**MLflow 追跡サーバーの管理**、**MLflow AWS のサービスに必要なアクセス**。これらのアクティビティの詳細については、この手順の後の説明を参照してください。

1. 新しいドメインの設定と作成を完了します。

Amazon SageMaker Role Manager では、次の MLflow ML アクティビティを使用できます。
+ **MLflow を使用**: この ML アクティビティは、MLflow で実験、実行、モデルを管理するために、MLflow REST API を呼び出すアクセス許可をドメインサービスロールに付与します。
+ **MLflow 追跡サーバーを管理**: この ML アクティビティは、追跡サーバーを作成、更新、起動、停止、削除するアクセス許可をドメインサービスロールに付与します。
+ **MLflow AWS のサービスに必要なアクセス**: この ML アクティビティは、Amazon S3 と SageMaker AI Model Registry にアクセスするために必要なドメインサービスロールのアクセス許可を提供します。これにより、ドメインサービスロールを追跡サーバーサービスロールとして使用できるようになります。

Role Manager の ML アクティビティの詳細については、「[ML アクティビティリファレンス](role-manager-ml-activities.md)」を参照してください。

## IAM コンソールで必要な IAM サービスロールを作成する
<a name="mlflow-create-tracking-server-iam-service-roles"></a>

ドメインサービスロールを作成または更新していない場合は、MLflow 追跡サーバーを作成して使用するために、代わりに IAM コンソールで次のサービスロールを作成する必要があります。
+ 追跡サーバーが SageMaker AI リソースへのアクセスに使用できる、追跡サーバーの IAM サービスロール
+ SageMaker AI が MLflow リソースの作成と管理に使用できる、SageMaker AI の IAM サービスロール

### 追跡サーバーの IAM サービスロールの IAM ポリシー
<a name="mlflow-create-tracking-server-iam-service-roles-ts"></a>

追跡サーバーの IAM サービスロールは、Amazon S3 や SageMaker Model Registry などの必要なリソースにアクセスするために追跡サーバーが使用します。

追跡サーバーの IAM サービスロールを作成するときは、次の IAM 信頼ポリシーを使用します。

------
#### [ JSON ]

****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Principal": {
                 "Service": [                     
                      "sagemaker.amazonaws.com"
                 ]
             },
             "Action": "sts:AssumeRole"
         }
     ]
 }
```

------

IAM コンソールで、追跡サーバーのサービスロールに次のアクセス許可ポリシーを追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:Put*",
                "s3:List*",
                "sagemaker:AddTags",
                "sagemaker:CreateModelPackageGroup",
                "sagemaker:CreateModelPackage",
                "sagemaker:UpdateModelPackage",
                "sagemaker:DescribeModelPackageGroup"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### SageMaker AI の IAM サービスロールの IAM ポリシー
<a name="mlflow-create-tracking-server-iam-service-roles-sm"></a>

SageMaker AI サービスロールは、MLflow 追跡サーバーにアクセスするクライアントが使用します。MLflow REST API を呼び出すためのアクセス許可が必要です。SageMaker AI サービスロールには、追跡サーバーを作成、表示、更新、起動、停止、削除するための SageMaker API アクセス許可も必要です。

新しいロールを作成するか、既存のロールを更新できます。SageMaker AI サービスロールには、次のポリシーが必要です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	     
    "Statement": [        
        {            
            "Effect": "Allow",            
            "Action": [
                "sagemaker-mlflow:*",
                "sagemaker:CreateMlflowTrackingServer",
                "sagemaker:ListMlflowTrackingServers",
                "sagemaker:UpdateMlflowTrackingServer",
                "sagemaker:DeleteMlflowTrackingServer",
                "sagemaker:StartMlflowTrackingServer",
                "sagemaker:StopMlflowTrackingServer",
                "sagemaker:CreatePresignedMlflowTrackingServerUrl"
            ],            
            "Resource": "*"        
        }        
    ]
}
```

------

## アクションごとの認証コントロールを作成する
<a name="mlflow-create-tracking-server-update-iam-actions"></a>

`sagemaker-mlflow` 用の認証コントロールを設定する必要があります。必要に応じて、MLflow 追跡サーバーに対してユーザーが持つ MLflow アクセス許可を細かく制御するために、アクションごとの認証コントロールを設定することもできます。

**注記**  
次の手順では、MLflow 追跡サーバーの ARN が既に使用可能であることを前提としています。追跡サーバーを作成する方法については、「[Studio を使用して追跡サーバーを作成する](mlflow-create-tracking-server-studio.md)」または「[を使用して追跡サーバーを作成する AWS CLI](mlflow-create-tracking-server-cli.md)」を参照してください。

次のコマンドは、`mlflow-policy.json` というファイルを作成します。このファイルは、使用可能なすべての SageMaker AI MLflow アクションに対する IAM アクセス許可を追跡サーバーに付与します。ユーザーが実行できる特定のアクションを選択する形で、ユーザーに持たせるアクセス許可を制限することもできます。使用可能なアクションのリストについては、「[MLflow でサポートされている IAM アクション](#mlflow-create-tracking-server-iam-actions)」を参照してください。

```
# Replace "Resource":"*" with "Resource":"TrackingServerArn" 
# Replace "sagemaker-mlflow:*" with specific actions

printf '{
    "Version": "2012-10-17",		 	 	     
    "Statement": [        
        {            
            "Effect": "Allow",            
            "Action": "sagemaker-mlflow:*",            
            "Resource": "*"        
        }        
    ]
}' > mlflow-policy.json
```

 AWS CLIで、`mlflow-policy.json` ファイルを使用して IAM ポリシーを作成します。

```
aws iam create-policy \
  --policy-name MLflowPolicy \
  --policy-document file://mlflow-policy.json
```

アカウント ID を取得し、ポリシーを IAM ロールにアタッチします。

```
# Get your account ID
aws sts get-caller-identity

# Attach the IAM policy using your exported role and account ID
aws iam attach-role-policy \
  --role-name $role_name \
  --policy-arn arn:aws:iam::123456789012:policy/MLflowPolicy
```

### MLflow でサポートされている IAM アクション
<a name="mlflow-create-tracking-server-iam-actions"></a>

認証アクセスコントロールでは、次の SageMaker AI MLflow アクションがサポートされています。
+ sagemaker-mlflow:AccessUI
+ sagemaker-mlflow:CreateExperiment
+ sagemaker-mlflow:SearchExperiments
+ sagemaker-mlflow:GetExperiment
+ sagemaker-mlflow:GetExperimentByName
+ sagemaker-mlflow:DeleteExperiment
+ sagemaker-mlflow:RestoreExperiment
+ sagemaker-mlflow:UpdateExperiment
+ sagemaker-mlflow:CreateRun
+ sagemaker-mlflow:DeleteRun
+ sagemaker-mlflow:RestoreRun
+ sagemaker-mlflow:GetRun
+ sagemaker-mlflow:LogMetric
+ sagemaker-mlflow:LogBatch
+ sagemaker-mlflow:LogModel
+ sagemaker-mlflow:LogInputs
+ sagemaker-mlflow:SetExperimentTag
+ sagemaker-mlflow:SetTag
+ sagemaker-mlflow:DeleteTag
+ sagemaker-mlflow:LogParam
+ sagemaker-mlflow:GetMetricHistory
+ sagemaker-mlflow:SearchRuns
+ sagemaker-mlflow:ListArtifacts
+ sagemaker-mlflow:UpdateRun
+ sagemaker-mlflow:CreateRegisteredModel
+ sagemaker-mlflow:GetRegisteredModel
+ sagemaker-mlflow:RenameRegisteredModel
+ sagemaker-mlflow:UpdateRegisteredModel
+ sagemaker-mlflow:DeleteRegisteredModel
+ sagemaker-mlflow:GetLatestModelVersions
+ sagemaker-mlflow:CreateModelVersion
+ sagemaker-mlflow:GetModelVersion
+ sagemaker-mlflow:UpdateModelVersion
+ sagemaker-mlflow:DeleteModelVersion
+ sagemaker-mlflow:SearchModelVersions
+ sagemaker-mlflow:GetDownloadURIForModelVersionArtifacts
+ sagemaker-mlflow:TransitionModelVersionStage
+ sagemaker-mlflow:SearchRegisteredModels
+ sagemaker-mlflow:SetRegisteredModelTag
+ sagemaker-mlflow:DeleteRegisteredModelTag
+ sagemaker-mlflow:DeleteModelVersionTag
+ sagemaker-mlflow:DeleteRegisteredModelAlias
+ sagemaker-mlflow:SetRegisteredModelAlias
+ sagemaker-mlflow:GetModelVersionByAlias
+ sagemaker-mlflow:FinalizeLoggedModel
+ sagemaker-mlflow:GetLoggedModel
+ sagemaker-mlflow:DeleteLoggedModel
+ sagemaker-mlflow:SearchLoggedModels
+ sagemaker-mlflow:SetLoggedModelTags
+ sagemaker-mlflow:DeleteLoggedModelTag
+ sagemaker-mlflow:ListLoggedModelArtifacts
+ sagemaker-mlflow:LogLoggedModelParams
+ sagemaker-mlflow:LogOutputs