

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 MLflow 的 IAM 許可。
<a name="mlflow-create-tracking-server-iam"></a>

您必須設定必要的 IAM 服務角色，才能開始使用 Amazon SageMaker AI 中的 MLflow。

如果您建立新的 Amazon SageMaker AI 網域以在 Studio 中存取實驗，您可以在網域設定期間設定必要的 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 許可。

**設定新網域時設定將 MLflow 與 SageMaker AI 搭配使用的 IAM 許可**

1. 使用 SageMaker AI 主控台設定新網域。在**設定 SageMaker AI 網域**頁面上，選擇**設定組織**。如需詳細資訊，請參閱[使用主控台進行自訂設定](onboard-custom.md#onboard-custom-instructions-console)。

1. 設定**使用者和 ML 活動**時，請選擇下列 MLflow 的 ML 活動：**使用 MLflow**、**管理 MLflow 追蹤伺服器**，以及 ** AWS Services for MLflow 所需的存取**。如需這些活動的詳細資訊，請參閱此程序後面的說明。

1. 完成新網域的設定和建立。

Amazon SageMaker 角色管理器提供下列 MLflow ML 活動：
+ **使用 MLflow**：此 ML 活動會授予網域服務角色許可來呼叫 MLflow REST API，以在 MLflow 中管理實驗、執行和模型。
+ **管理 MLflow 追蹤伺服器**：此 ML 活動授予網域服務角色許可以建立、更新、啟動、停止和刪除追蹤伺服器。
+ ** AWS Services for MLflow 所需的存取**：此 ML 活動提供存取 Amazon S3 和 SageMaker AI Model Registry 所需的網域服務角色許可。這可讓您使用網域服務角色做為追蹤伺服器服務角色。

如需角色管理員中 ML 活動的更多相關資訊，請參閱[機器學習 (ML) 活動參考](role-manager-ml-activities.md)。

## 在 IAM 主控台中建立必要的 IAM 服務角色
<a name="mlflow-create-tracking-server-iam-service-roles"></a>

如果您未建立或更新網域服務角色，則必須改為在 IAM 主控台中建立下列服務角色，才能建立和使用 MLflow 追蹤伺服器：
+ 追蹤伺服器 IAM 服務角色，追蹤伺服器可用來存取 SageMaker AI 資源
+ 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>

存取 MLflow 追蹤伺服器的用戶端會使用 SageMaker AI 服務角色，並且需要呼叫 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