設定 MLflow 的 IAM 許可。 - Amazon SageMaker AI

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

設定 MLflow 的 IAM 許可。

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

如果您建立新的 Amazon SageMaker AI 網域以在 Studio 中存取實驗,您可以在網域設定期間設定必要的 IAM 許可。如需詳細資訊,請參閱在建立新網域時設定 MLflow IAM 許可

若要使用 IAM 主控台設定許可,請參閱在 IAM 主控台中建立必要的 IAM 服務角色

您必須設定 sagemaker-mlflow 動作的授權控制項。您可以選擇性地定義更精細的授權控制,以控管動作特定的 MLflow 許可。如需詳細資訊,請參閱建立動作特定的授權控制

在建立新網域時設定 MLflow IAM 許可

為您的組織設定新的 Amazon SageMaker AI 網域時,您可以透過使用者和 ML 活動設定來設定網域服務角色的 IAM 許可。

設定新網域時設定將 MLflow 與 SageMaker AI 搭配使用的 IAM 許可
  1. 使用 SageMaker AI 主控台設定新網域。在設定 SageMaker AI 網域頁面上,選擇設定組織。如需詳細資訊,請參閱使用主控台進行自訂設定

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

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

Amazon SageMaker 角色管理器提供下列 MLflow ML 活動:

  • 使用 MLflow:此 ML 活動會授予網域服務角色許可來呼叫 MLflow REST API,以在 MLflow 中管理實驗、執行和模型。

  • 管理 MLflow 追蹤伺服器:此 ML 活動授予網域服務角色許可以建立、更新、啟動、停止和刪除追蹤伺服器。

  • Services AWSfor MLflow 所需的存取:此 ML 活動提供存取 Amazon S3 和 SageMaker AI Model Registry 所需的網域服務角色許可。這可讓您使用網域服務角色做為追蹤伺服器服務角色。

如需角色管理員中 ML 活動的更多相關資訊,請參閱機器學習 (ML) 活動參考

在 IAM 主控台中建立必要的 IAM 服務角色

如果您未建立或更新網域服務角色,則必須改為在 IAM 主控台中建立下列服務角色,才能建立和使用 MLflow 追蹤伺服器:

  • 追蹤伺服器 IAM 服務角色,追蹤伺服器可用來存取 SageMaker AI 資源

  • SageMaker AI 可用來建立和管理 MLflow 資源的 SageMaker AI IAM 服務角色

追蹤伺服器 IAM 服務角色的 IAM 政策

追蹤伺服器會使用追蹤伺服器 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 政策

存取 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": "*" } ] }

建立動作特定的授權控制

您必須設定 sagemaker-mlflow 的授權控制,也可以選擇性地設定動作特定的授權控制,以控管使用者在 MLflow 追蹤伺服器上擁有的更精細 MLflow 許可。

注意

下列步驟假設您已經有 MLflow 追蹤伺服器的可用 ARN。若要了解如何建立追蹤伺服器,請參閱 使用 Studio 建立追蹤伺服器使用 建立追蹤伺服器AWS CLI

下列命令會建立名為 mlflow-policy.json 的檔案,為您的追蹤伺服器提供所有可用 SageMaker AI MLflow 動作的 IAM 許可。您可以選擇性地限制使用者擁有的許可,方法是選擇您希望該使用者執行的特定動作。如需可用的動作清單,請參閱 MLflow 支援的 IAM 動作

# 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 動作

授權存取控制支援下列 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