

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

# 預防跨服務混淆代理人
<a name="security-confused-deputy-prevention"></a>

[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy)屬於安全性議題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS，由於跨服務模擬，可能會出現混淆代理人問題。當一個服務 (*呼叫服務*) 調用另一個服務 (*被呼叫服務*)，並利用被呼叫服務的提升許可對呼叫服務無權存取的資源採取行動時，可能會發生跨服務模擬。為了防止透過混淆代理人問題進行未經授權的存取， AWS 提供工具以協助跨服務保護您的資料。這些工具可協助您控制授予服務主體的許可，限制其僅能存取您帳戶中所需的資源。透過仔細管理服務主體的存取權限，您可以協助緩解服務不當存取其不應擁有許可的資料或資源的風險。

請繼續閱讀以取得一般指引，或導覽至特定 SageMaker AI 特徵的範例：

**Topics**
+ [使用全域條件金鑰限制許可](#security-confused-deputy-context-keys)
+ [SageMaker Edge Manager](#security-confused-deputy-edge-manager)
+ [SageMaker 影像](#security-confused-deputy-images)
+ [SageMaker AI 推論](#security-confused-deputy-inference)
+ [SageMaker AI 批次轉換任務](#security-confused-deputy-batch)
+ [SageMaker AI Marketplace](#security-confused-deputy-marketplace)
+ [新 SageMaker](#security-confused-deputy-neo)
+ [SageMaker 管道](#security-confused-deputy-pipelines)
+ [SageMaker 處理任務](#security-confused-deputy-processing-job)
+ [SageMaker Studio](#security-confused-deputy-studio)
+ [SageMaker 訓練工作](#security-confused-deputy-training-job)

## 使用全域條件金鑰限制許可
<a name="security-confused-deputy-context-keys"></a>

若要限制 Amazon SageMaker AI 提供另一項服務的資源許可，我們建議在資源政策中使用 `[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` 和 `[aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` 全域條件金鑰。如果同時使用這兩個全域條件金鑰，且 `aws:SourceArn` 值包含帳戶 ID，則在相同政策陳述式中使用 `aws:SourceAccount` 值和 `aws:SourceArn` 值中的帳戶時，必須使用相同的帳戶 ID。如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件金鑰，以及資源的完整 ARN。如果不知道資源的完整 ARN，或者如果您指定了多個資源，請使用 `aws:SourceArn` 全域條件金鑰，同時使用萬用字元 (`*`) 表示 ARN 的未知部分。例如 `arn:aws:sagemaker:*:123456789012:*`。

下列範例展示如何使用 SageMaker AI 中的 `aws:SourceArn` 和 `aws:SourceAccount` 全域條件金鑰，來防止混淆代理人問題。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "ConfusedDeputyPreventionExamplePolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "sagemaker.amazonaws.com"
    },
    "Action": "sagemaker:StartSession",
    "Resource": "arn:aws:sagemaker:us-east-1:123456789012:ResourceName/*",
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:sagemaker:us-east-1:123456789012:*"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
  }
}
```

------

## SageMaker Edge Manager
<a name="security-confused-deputy-edge-manager"></a>

下列範例顯示如何使用`aws:SourceArn`全域條件金鑰來防止由 *us-west-2* 區域帳號 *123456789012* 建立的 SageMaker Edge Manager 發生跨服務混淆代理人問題。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
      "Effect": "Allow",
      "Principal": { "Service": "sagemaker.amazonaws.com" },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:*"
      }
    }
  }
}
```

------

您可以使用一個特定封裝工作的完整 ARN 來取代此範本中的 `aws:SourceArn`，以進一步限制許可。

## SageMaker 影像
<a name="security-confused-deputy-images"></a>

下列範例示範如何使用 `aws:SourceArn` 全域條件金鑰，來預防跨服務混淆 [SageMaker 影像](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html)的代理人問題。將此範本與`[Image](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Image.html)`或`[ImageVersion](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ImageVersion.html)`搭配使用。這個範例會使用帳號為 *123456789012* 的`ImageVersion`記錄 ARN。請注意，由於帳號是 `aws:SourceArn` 值的一部分，因此您不需要指定 `aws:SourceAccount` 值。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "sagemaker.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "ArnLike": {
            "aws:SourceArn": "arn:aws:sagemaker:us-east-2:123456789012:image-version/*"
            }
        }
    }
}
```

------

請勿以特定影像或影像版本的完整 ARN 取代此範本中的`aws:SourceArn`。ARN 必須採用以上提供的格式，並指定`image`或`image-version`。`partition` 預留位置應指定 AWS 商業分割區 (`aws`) 或中國分割區 (`aws-cn`) AWS 中的 ，視影像或影像版本執行的位置而定。同樣地，ARN 中的`region`預留位置可以是任何可用 SageMaker 影像的[有效區域](https://docs.aws.amazon.com/sagemaker/latest/dg/regions-quotas.html)。

## SageMaker AI 推論
<a name="security-confused-deputy-inference"></a>

下列範例展示如何使用 `aws:SourceArn` 全域條件金鑰，來防止 SageMaker AI [即時](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints)、[無伺服器](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints)和[非同步](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference)推論發生跨服務混淆代理人問題。請注意，由於帳號是 `aws:SourceArn` 值的一部分，因此您不需要指定 `aws:SourceAccount` 值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "sagemaker.amazonaws.com" },
    "Action": "sts:AssumeRole",
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:*"
      }
    }
  }
}
```

------

請勿以特定模型或端點的完整 ARN 取代此範本中的`aws:SourceArn`。ARN 必須採用上面提供的格式。ARN 範本中的星號不代表萬用字元，因此不應變更。

## SageMaker AI 批次轉換任務
<a name="security-confused-deputy-batch"></a>

下列範例展示如何使用 `aws:SourceArn` 全域條件金鑰，來防止 *us-west-2* 區域中帳號 *123456789012* 建立的 SageMaker AI [批次轉換任務](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html)發生跨服務混淆代理人問題。請注意，由於帳號位於 ARN 中，因此您不需要指定`aws:SourceAccount`值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:transform-job/*"
        }
      }
    }
  ]
}
```

------

您可以使用一個特定批次轉換工作的完整 ARN 來取代此範本中的 `aws:SourceArn`，以進一步限制許可。

## SageMaker AI Marketplace
<a name="security-confused-deputy-marketplace"></a>

下列範例展示如何使用 `aws:SourceArn` 全域條件金鑰，來防止 *us-west-2* 區域中帳號 *123456789012* 建立的 Sagemaker AI Marketplace 資源發生跨服務混淆代理人問題。請注意，由於帳號位於 ARN 中，因此您不需要指定`aws:SourceAccount`值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:*"
        }
      }
    }
  ]
}
```

------

請勿以特定演算法或模型套件的完整 ARN 取代此範本中的`aws:SourceArn`。ARN 必須採用上面提供的格式。ARN 範本中的星號代表萬用字元，並涵蓋了驗證步驟中的所有訓練任務、模型和批次轉換任務，以及發佈至 SageMaker AI Marketplace 的演算法和模型套件。

## 新 SageMaker
<a name="security-confused-deputy-neo"></a>

下列範例顯示如何使用`aws:SourceArn`全域條件金鑰來防止針對 *us-west-2* 區域帳號 *123456789012* 建立的 Sagemaker 新編譯任務發生跨服務混淆代理人問題。請注意，由於帳號位於 ARN 中，因此您不需要指定`aws:SourceAccount`值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:compilation-job/*"
        }
      }
    }
  ]
}
```

------

您可以使用一個特定編譯任務的完整 ARN 來取代此範本中的 `aws:SourceArn`，以進一步限制許可。

## SageMaker 管道
<a name="security-confused-deputy-pipelines"></a>

下列範例示範如何使用一或多個管道的管道執行記錄，以 `aws:SourceArn` 全域條件金鑰避免 [SageMaker Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-overview.html) 的跨服務混淆代理人問題。請注意，由於帳號位於 ARN 中，因此您不需要指定`aws:SourceAccount`值。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:sagemaker:us-east-1:123456789012:pipeline/mypipeline/*"
                }
            }
        }
    ]
}
```

------

請勿以特定管道執行的完整 ARN 取代此範本中的`aws:SourceArn`。ARN 必須採用上面提供的格式。`partition` 預留位置應指定 AWS 商業分割區 (`aws`) 或中國分割區 (`aws-cn`) AWS 中的 ，視管道執行的位置而定。同樣地，ARN 中的`region`預留位置可以是任何可使用 SageMaker 管道的[有效區域](https://docs.aws.amazon.com/sagemaker/latest/dg/regions-quotas.html)。

ARN 範本中的星號代表萬用字元，並涵蓋名為`mypipeline`的管道的所有管道執行。如果您想要允許帳戶中所有管道的`AssumeRole`許可，`123456789012`而不是一個特定管道，則`aws:SourceArn`會為`arn:aws:sagemaker:*:123456789012:pipeline/*`。

## SageMaker 處理任務
<a name="security-confused-deputy-processing-job"></a>

下列範例展示如何使用 `aws:SourceArn` 全域條件金鑰，來防止 *us-west-2* 區域中帳號 *123456789012* 建立的 Sagemaker Processing 任務發生跨服務混淆代理人問題。請注意，由於帳號位於 ARN 中，因此您不需要指定`aws:SourceAccount`值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:processing-job/*"
        }
      }
    }
  ]
}
```

------

您可以使用一個特定處理任務的完整 ARN 來取代此範本中的 `aws:SourceArn`，以進一步限制許可。

## SageMaker Studio
<a name="security-confused-deputy-studio"></a>

下列範例顯示如何使用`aws:SourceArn`全域條件金鑰來防止針對 *us-west-2* 區域帳號 *123456789012* 建立的 SageMaker Studio 發生跨服務混淆代理人問題。請注意，由於帳號是 `aws:SourceArn` 值的一部分，因此您不需要指定 `aws:SourceAccount` 值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:*"
        }
      }
    }
  ]
}
```

------

請勿以特定 Studio 應用程式、使用者設定檔或網域的完整 ARN 取代此範本中的`aws:SourceArn`。ARN 必須採用上範例中提供的格式。ARN 範本中的星號不代表萬用字元，因此不應變更。

## SageMaker 訓練工作
<a name="security-confused-deputy-training-job"></a>

下列範例顯示如何使用`aws:SourceArn`全域條件金鑰來防止針對 *us-west-2* 區域帳號 *123456789012* 建立的 SageMaker 訓練工作發生跨服務混淆代理人問題。請注意，由於帳號位於 ARN 中，因此您不需要指定`aws:SourceAccount`值。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job/*"
        }
      }
    }
  ]
}
```

------

您可以使用某個特定訓練工作的完整 ARN 來取代此範本中的 `aws:SourceArn`，以進一步限制許可。

**接下來**  
如需管理執行角色的詳細資訊，請參閱 [SageMaker AI 角色](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles)。