本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
動態許可管理方法
了解 Transfer Family 許可架構
AWS Transfer Family 支援透過工作階段政策進行動態許可管理,可讓您在執行時間限制 IAM 角色的有效許可。此方法適用於服務受管使用者和自訂身分提供者使用者,但只有在將檔案傳輸到 Amazon S3 (而非 Amazon EFS) 時受支援。
每個 AWS Transfer Family 使用者都使用包含下列項目的許可模型來操作:
-
基本 IAM 角色 - 定義使用者的基本許可
-
選用工作階段政策 - 在執行時間限制 (範圍縮小) 基本許可
有效許可是基本角色許可和工作階段政策許可的交集。工作階段政策只能限制許可;他們不能授予基本角色允許以外的其他許可。
此架構適用於這兩種使用者類型:
-
服務受管使用者 - 工作階段政策可以直接在使用者設定中設定
-
自訂身分提供者使用者 - 工作階段政策可以作為身分驗證回應的一部分傳回或存放在 中 AWS Secrets Manager
兩種許可管理方法
為需要唯一存取模式的 Transfer Family 使用者設計許可時,您可以選擇兩種主要方法:
- 每個使用者一個角色
-
為每個 Transfer Family 使用者建立個別的 IAM 角色,具有專為該使用者需求量身打造的特定許可。在下列情況下使用此方法:
-
每個使用者都需要非常不同的許可
-
許可管理是由組織中的不同人員處理
-
您需要對個別使用者存取進行精細控制
-
- 具有工作階段政策的共用角色
-
使用具有廣泛許可的單一 IAM 角色 (例如存取包含多個使用者主目錄的整個 Amazon S3 儲存貯體),並套用工作階段政策,將每位使用者限制為其特定區域。相較於管理每個使用者的個別角色,此方法可大幅降低管理開銷。在下列情況下使用此方法:
-
使用者需要類似類型的存取權,但需要不同的資源 (例如,所有使用者都需要讀取/寫入存取權,但每個使用者都只需要自己的資料夾)
-
您想要簡化角色管理,並避免建立數十或數百個個別角色
-
使用者應該只在共用儲存貯體中存取其指定的主目錄
-
在您的組織內集中管理許可
例如,您可以建立一個可存取整個
s3://company-transfers/
儲存貯體的角色,然後使用工作階段政策將 alice 限制為s3://company-transfers/alice/
、bob 限制為 等,而不是為使用者「alice」s3://company-transfers/bob/
、「bob」和「charlie」建立單獨的角色。 -
實作工作階段政策
工作階段政策的運作方式是限制指派給使用者的基本 IAM 角色的有效許可。最終許可是角色許可和工作階段政策許可的交集。
您可以透過兩種方式實作動態工作階段政策:
- 變數替換
-
在工作階段政策
${transfer:HomeBucket}
中使用 Transfer Family 政策變數${transfer:Username}
,例如${transfer:HomeDirectory}
、 和 。這些變數會在執行時間自動取代為實際值。如需這些變數的詳細資訊,請參閱 為 Amazon S3 儲存貯體建立工作階段政策。 - 動態產生
-
對於自訂身分提供者,從 Lambda 函數或 API Gateway 方法的身分驗證回應產生on-the-fly工作階段政策。此方法可讓您在身分驗證時,根據使用者屬性、群組成員資格或外部資料來源建立高度自訂的政策。
您也可以在 中存放預先產生的工作階段政策, AWS Secrets Manager 方法是將名為 的金鑰
Policy
與工作階段政策 JSON 作為值。這可讓您跨多個使用者使用相同的廣泛 IAM 角色,同時維護使用者特定的存取控制。
注意
只有往返 Amazon S3 的檔案傳輸才支援工作階段政策。它們不適用於 Amazon EFS 檔案系統。對於 Amazon EFS,許可由 UID/GID 和在檔案系統本身內套用的許可位元管理。
依使用者類型實作
- 服務受管使用者
-
對於服務受管使用者,您可以透過 AWS Transfer Family 主控台、API 或 CLI,直接在使用者組態中指定工作階段政策。如需詳細資訊,請參閱使用服務受管使用者。
- 自訂身分提供者使用者
-
對於自訂身分提供者使用者,您可以透過兩種方式提供工作階段政策:
-
透過 , AWS Secrets Manager 將名為 的金鑰
Policy
與工作階段政策作為值 -
直接在 Lambda 函數回應或 API Gateway 回應中作為身分驗證結果的一部分
如需詳細資訊,請參閱自訂身分提供者解決方案。
-
範例:使用工作階段政策簡化角色管理
此範例示範動態許可管理如何大幅降低管理開銷,同時維護安全性。
案例
您的組織有 50 名使用者需要 SFTP 存取權才能傳輸檔案。每個使用者都應該在名為 的共用 Amazon S3 儲存貯體中存取自己的資料夾company-transfers
。如果沒有工作階段政策,您需要建立 50 個不同的 IAM 角色。
- 傳統方法 (不含工作階段政策)
-
-
建立 50 個 IAM 角色:
TransferRole-Alice
、TransferRole-Charlie
、TransferRole-Bob
等。 -
每個角色只有該使用者的資料夾具有特定許可
-
管理許可需要更新個別角色
-
新增使用者需要建立新的角色
-
- 動態方法 (使用工作階段政策)
-
-
建立 1 個 IAM 角色:
TransferRole-Shared
具有整個儲存貯體的廣泛許可 -
使用工作階段政策,將每位使用者限制在執行時間的特定資料夾
-
管理許可需要更新一個角色或工作階段政策範本
-
新增使用者不需要新的角色,只需要使用者組態
-
實作
以下是實作動態方法的方式 (使用 儲存company-transfers
貯體做為以實際 Amazon S3 儲存貯體取代的範例):
實作動態許可管理
-
建立具有廣泛 Amazon S3 許可的共用 IAM 角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers" } ] }
-
建立工作階段政策範本,限制對使用者資料夾的存取:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/${transfer:Username}/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers", "Condition": { "StringLike": { "s3:prefix": "${transfer:Username}*" } } } ] }
-
使用 設定每個使用者:
-
共用的 IAM 角色
-
套用的工作階段政策如下所示:
-
服務受管使用者:在建立或修改使用者時,使用 API 或 CLI 透過政策參數套用 JSON (主控台僅提供預先定義的政策選項)
-
自訂身分提供者使用者:在身分驗證期間將其作為 Lambda 函數回應的一部分傳回,或將其與使用者的憑證一起存放 AWS Secrets Manager 為名為 "Policy" 的金鑰
-
-
主目錄:
/company-transfers/${transfer:Username}/
-