

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为设置 IAM 权限 MLflow
<a name="mlflow-create-tracking-server-iam"></a>

要开始使用 Amazon A SageMaker I，您必须配置必要的 I MLflow AM 服务角色。

如果您创建了一个新的 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>

在为您的组织设置新的 SageMaker Amazon AI 域时，您可以通过**用户和机器学习活动**设置为您的域服务角色配置 IAM 权限。

**在设置新域时配置 IAM 权限以便 MLflow 与 SageMaker AI 配合使用**

1. 使用 SageMaker AI 控制台设置新域。在**设置 SageMaker AI 域**页面上，选择**为组织设置**。有关更多信息，请参阅 [使用管理控制台进行自定义设置](onboard-custom.md#onboard-custom-instructions-console)。

1. 设置**用户和机器学习活动**时，请从以下机器学习活动中进行选择 MLflow：**使用 MLflow**、**管理 MLflow 跟踪服务器**和** AWS 服务所需的访问权限 MLflow**。有关这些活动的更多信息，请参阅本步骤后面的说明。

1. 完成新域的设置和创建。

Amazon SageMaker 角色管理器中提供了以下 MLflow 机器学习活动：
+ **使用 MLflow**：此 ML 活动授予域服务角色调用 MLflow REST 的权限，以便 APIs 在中管理实验、运行和模型 MLflow。
+ **管理 MLflow 跟踪服务器**：此 ML 活动向域服务角色授予创建、更新、启动、停止和删除跟踪服务器的权限。
+ **需要访问以下 AWS 服务的**权限 MLflow：此机器学习活动提供访问 Amazon S3 和 A SageMaker I 模型注册表所需的域服务角色权限。这样就可以将域服务角色用作跟踪服务器服务角色。

有关角色管理器中 ML 活动的更多信息，请参阅 [机器学习活动参考](role-manager-ml-activities.md)。

## 在 IAM 管理控制台中创建必要的 IAM 服务角色
<a name="mlflow-create-tracking-server-iam-service-roles"></a>

如果您没有创建或更新您的域名服务角色，则必须在 IAM 控制台中创建以下服务角色才能创建和使用 MLflow 跟踪服务器：
+ 跟踪服务器可用来访问 A SageMaker I 资源的跟踪服务器 IAM 服务角色
+ A SageMaker I IAM 服务角色， SageMaker AI 可用来创建和管理 MLflow 资源

### 跟踪服务器 IAM 服务角色的 IAM 策略
<a name="mlflow-create-tracking-server-iam-service-roles-ts"></a>

跟踪服务器使用跟踪服务器 IAM 服务角色来访问其所需的资源，例如 Amazon S3 和 SageMaker 模型注册表。

创建跟踪服务器 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": "*"
        }
    ]
}
```

------

### A SageMaker I IAM 服务角色的 IAM 策略
<a name="mlflow-create-tracking-server-iam-service-roles-sm"></a>

A SageMaker I 服务角色由访问 MLflow 跟踪服务器的客户端使用，需要调用 MLflow REST 的权限 APIs。 SageMaker AI 服务角色还需要 SageMaker API 权限才能创建、查看、更新、启动、停止和删除跟踪服务器。

您可以创建新角色或更新现有角色。A SageMaker I 服务角色需要以下策略：

------
#### [ 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`，该文件为您的跟踪服务器提供所有可用 A SageMaker I MLflow 操作的 IAM 权限。通过选择希望用户执行的特定操作，可以有选择地限制用户的权限。有关可用操作的列表，请参阅[支持的 IAM 操作 MLflow](#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
```

使用 `mlflow-policy.json` 文件通过 AWS CLI创建 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
```

### 支持的 IAM 操作 MLflow
<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