預防跨服務混淆代理人 - AWS Transfer Family

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

預防跨服務混淆代理人

混淆代理人問題屬於安全性議題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS,跨服務模擬可能會導致混淆代理問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。呼叫服務可以被操縱,以使用其許可來對其他客戶的資源採取行動,其不應以其他方式擁有存取許可。為了預防這種情況, AWS 提供的工具可協助您保護所有服務的資料,而這些服務主體已獲得您帳戶中資源的存取權。如需此問題的詳細說明,請參閱 IAM 使用者指南 中的混淆代理問題

我們建議在資源政策中使用 aws:SourceArnaws:SourceAccount全域條件內容索引鍵,以限制 AWS Transfer Family 對資源的許可。如果同時使用全域條件內容索引鍵,則在相同政策陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 值中的帳戶時,必須使用相同的帳戶 ID。

防止混淆代理問題的最有效方法是使用您要允許之資源的確切 Amazon Resource Name (ARN)。如果您要指定多個資源,請將aws:SourceArn全域內容條件索引鍵與萬用字元 (*) 搭配使用,以用於 的未知部分ARN。例如:arn:aws:transfer::region::account-id:server/*

AWS Transfer Family 使用以下類型的角色:

  • 使用者角色 – 允許服務受管使用者存取必要的 Transfer Family 資源。 AWS Transfer Family 會在 Transfer Family 使用者 的背景中擔任此角色ARN。

  • 存取角色 – 僅提供正在傳輸的 Amazon S3 檔案的存取權。對於傳入AS2傳輸,存取角色會使用 Amazon Resource Name (ARN) 作為合約。對於傳出AS2傳輸,存取角色會使用 ARN 連接器的 。

  • 調用角色 – 與 Amazon API Gateway 搭配使用,作為伺服器的自訂身分提供者。Transfer Family 會在 Transfer Family 伺服器 的內容中擔任此角色ARN。

  • 記錄角色 – 用於將項目記錄到 Amazon CloudWatch。Transfer Family 使用此角色記錄成功和失敗詳細資訊,以及檔案傳輸的相關資訊。Transfer Family 會在 Transfer Family 伺服器 的內容中擔任此角色ARN。對於傳出AS2傳輸,記錄角色會使用連接器 ARN。

  • 執行角色 – 允許 Transfer Family 使用者呼叫和啟動工作流程。Transfer Family 會在 Transfer Family 工作流程 的內容中擔任此角色ARN。

如需詳細資訊,請參閱 IAM 使用者指南 中的政策和許可IAM

注意

在下列範例中,取代每個 user input placeholder 使用您自己的資訊。

注意

在我們的範例中,我們同時使用 ArnLikeArnEquals。它們的功能相同,因此您可以在建構政策時使用它們。Transfer Family 文件用於條件包含萬用字元ArnLike時,並ArnEquals指示完全相符的條件。

AWS Transfer Family 使用者角色跨服務混淆代理預防

下列範例政策允許 帳戶中任何伺服器的任何使用者擔任 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/*" } } } ] }

下列範例政策允許特定伺服器的任何使用者擔任 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnEquals": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/*" } } } ] }

下列範例政策允許特定伺服器的特定使用者擔任 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/user-name" } } } ] }

AWS Transfer Family 工作流程角色跨服務混淆代理預防

下列範例政策允許 帳戶中的任何工作流程擔任 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:workflow/*" } } } ] }

下列範例政策允許特定工作流程擔任角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:workflow/workflow-id" } } } ] }

AWS Transfer Family 記錄和調用角色跨服務混淆代理預防

注意

下列範例可用於記錄和調用角色。

在這些範例中,如果您的伺服器未連接任何工作流程,您可以移除工作流程ARN的詳細資訊。

下列範例記錄/調用政策允許 帳戶中的任何伺服器 (和工作流程) 擔任 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllServersWithWorkflowAttached", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": [ "arn:aws:transfer:region:account-id:server/*", "arn:aws:transfer:region:account-id:workflow/*" ] } } } ] }

下列範例記錄/調用政策允許特定伺服器 (和工作流程) 擔任角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSpecificServerWithWorkflowAttached", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnEquals": { "aws:SourceArn": [ "arn:aws:transfer:region:account-id:server/server-id", "arn:aws:transfer:region:account-id:workflow/workflow-id" ] } } } ] }