為 Amazon S3 儲存貯體建立工作階段政策 - AWS Transfer Family

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

為 Amazon S3 儲存貯體建立工作階段政策

工作階段政策是一種 AWS Identity and Access Management (IAM) 政策,可將使用者限制在 Amazon S3 儲存貯體的某些部分。它會透過即時評估存取來執行此作業。

注意

工作階段政策僅適用於 Amazon S3。對於 Amazon EFS,您可以使用 POSIX 檔案許可來限制存取。

當您需要授予一組使用者對 Amazon S3 儲存貯體特定部分的相同存取權時,可以使用工作階段政策。例如,使用者群組可能只需要存取 home 目錄。該使用者群組共用相同的 IAM 角色。

注意

工作階段原則的最大長度為 2048 個字元。如需詳細資訊,請參閱 API 參考資料中CreateUser動作的原則要求參數

若要建立工作階段政策,請在 IAM 政策中使用下列政策變數:

  • ${transfer:HomeBucket}

  • ${transfer:HomeDirectory}

  • ${transfer:HomeFolder}

  • ${transfer:UserName}

重要

您無法在受管策略中使用上述變數。您也不能在 IAM 角色定義中將它們用作政策變數。您可以在 IAM 政策中建立這些變數,並在設定使用者時直接提供這些變數。此外,您無法在此工作階段原則中使用${aws:Username}變數。此變數參照 IAM 使用者名稱,而不是所需的使用者名稱 AWS Transfer Family。

下面的代碼顯示了一個示例會話策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "${transfer:HomeFolder}/*", "${transfer:HomeFolder}" ] } } }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*" } ] }
注意

上述原則範例假設使用者的主目錄設定為包含尾隨斜線,表示該目錄為目錄。另一方面,如果您在沒有尾部斜杠的HomeDirectory情況下設置了用戶,那麼您應該將其作為策略的一部分包括在內。

在上一個範例原則中,請注意transfer:HomeFoldertransfer:HomeBucket、和transfer:HomeDirectory原則參數的使用。這些參數是針對HomeDirectory為使用者設定的設定,如HomeDirectory和中所述實作您的 API Gateway 方法。這些參數具有下列定義:

  • transfer:HomeBucket參數會取代為的第一個元件HomeDirectory

  • transfer:HomeFolder參數會被參數的剩餘部分取HomeDirectory代。

  • transfer:HomeDirectory參數已移除前導正斜線 (/),以便在Resource陳述式中用作 S3 Amazon 資源名稱 (ARN) 的一部分。

注意

如果您使用的是邏輯目錄 (也就是使用者homeDirectoryType是),則不支援LOGICAL這些原則參數 (HomeBucketHomeDirectory、和HomeFolder)。

例如,假設為「Transfer Family」使用者設定的HomeDirectory參數為/home/bob/amazon/stuff/

  • transfer:HomeBucket設定為/home

  • transfer:HomeFolder設定為/bob/amazon/stuff/

  • transfer:HomeDirectory變成home/bob/amazon/stuff/

第一個"Sid"允許用戶列出從開始的所有目錄/home/bob/amazon/stuff/

第二個"Sid"限制了用戶putget訪問相同的路徑,/home/bob/amazon/stuff/.

有了先前的策略後,當使用者登入時,他們只能存取其主目錄中的物件。在連線時, AWS Transfer Family 會以適當的使用者值取代這些變數。這樣做可讓將相同政策文件套用到多名使用者的過程變得更為容易。這種方法可減少 IAM 角色和政策管理的開銷,以管理使用者對 Amazon S3 儲存貯體的存取權。

您也可以使用工作階段原則,根據您的業務需求自訂每個使用者的存取權限。如需詳細資訊,請參閱《IAM 使用者指南》 AssumeRoleWithWebIdentity中的「 AssumeRoleWithSAML」和「的許可」。 AssumeRole

注意

AWS Transfer Family 儲存政策 JSON,而不是政策的 Amazon 資源名稱 (ARN)。因此,當您在 IAM 主控台中變更政策時,您需要返回 AWS Transfer Family 主控台,並使用最新的政策內容更新使用者。您可以在 [使用者設定] 區段的 [原則資訊] 索引標籤上更新使用者

如果您使用的是 AWS CLI,您可以使用下列命令來更新原則。

aws transfer update-user --server-id server --user-name user --policy \ "$(aws iam get-policy-version --policy-arn policy --version-id version --output json)"