本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 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}
重要
您無法在 Managed Policy 中使用上述變數。您也無法在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:HomeFolder
、 transfer:HomeBucket
和 transfer:HomeDirectory
政策參數的使用。這些參數是針對為使用者設定的 HomeDirectory
設定,如 HomeDirectory和 中所述實作API閘道方法。這些參數具有下列定義:
transfer:HomeBucket
參數會取代為 的第一個元件HomeDirectory
。transfer:HomeFolder
參數會以HomeDirectory
參數的剩餘部分取代。transfer:HomeDirectory
參數已移除正斜線 (/
),因此可在Resource
陳述式中將其用作 S3 Amazon Resource Name (ARN) 的一部分。
注意
如果您使用的是邏輯目錄,也就是使用者的 homeDirectoryType
是 LOGICAL
,則不支援這些政策參數 (HomeBucket
、 HomeDirectory
和 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"
限制使用者對put
相同路徑 的get
存取/home/bob/amazon/stuff/
。
實施上述政策後,當使用者登入時,他們只能存取主目錄中的物件。在連線時間, 會將這些變數 AWS Transfer Family 取代為使用者的適當值。這樣做可讓將相同政策文件套用到多名使用者的過程變得更為容易。此方法可減少管理使用者存取 Amazon S3 儲存貯體IAM的角色和政策管理的額外負荷。
您也可以使用工作階段政策,根據您的業務需求自訂每個使用者的存取權。如需詳細資訊,請參閱 IAM 使用者指南 中的 AssumeRole AssumeRoleWithSAML、 和 許可 AssumeRoleWithWebIdentity。
注意
AWS Transfer Family 會儲存政策 JSON,而不是政策的 Amazon Resource Name (ARN)。因此,當您在IAM主控台中變更政策時,您需要返回 AWS Transfer Family 主控台,並使用最新的政策內容更新使用者。您可以在使用者組態區段的政策資訊索引標籤上更新使用者。
如果您使用的是 AWS CLI,您可以使用下列命令來更新政策。
aws transfer update-user --server-id
server
--user-nameuser
--policy \ "$(aws iam get-policy-version --policy-arnpolicy
--version-idversion
--output json)"