動態許可管理方法 - AWS Transfer Family

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

動態許可管理方法

了解 Transfer Family 許可架構

AWS Transfer Family 支援透過工作階段政策進行動態許可管理,可讓您在執行時間限制 IAM 角色的有效許可。此方法適用於服務受管使用者和自訂身分提供者使用者,但只有在將檔案傳輸到 Amazon S3 (而非 Amazon EFS) 時受支援。

每個 AWS Transfer Family 使用者都使用包含下列項目的許可模型來操作:

  1. 基本 IAM 角色 - 定義使用者的基本許可

  2. 選用工作階段政策 - 在執行時間限制 (範圍縮小) 基本許可

有效許可是基本角色許可和工作階段政策許可的交集。工作階段政策只能限制許可;他們不能授予基本角色允許以外的其他許可。

此架構適用於這兩種使用者類型:

  • 服務受管使用者 - 工作階段政策可以直接在使用者設定中設定

  • 自訂身分提供者使用者 - 工作階段政策可以作為身分驗證回應的一部分傳回或存放在 中 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-AliceTransferRole-CharlieTransferRole-Bob等。

  • 每個角色只有該使用者的資料夾具有特定許可

  • 管理許可需要更新個別角色

  • 新增使用者需要建立新的角色

動態方法 (使用工作階段政策)
  • 建立 1 個 IAM 角色:TransferRole-Shared具有整個儲存貯體的廣泛許可

  • 使用工作階段政策,將每位使用者限制在執行時間的特定資料夾

  • 管理許可需要更新一個角色或工作階段政策範本

  • 新增使用者不需要新的角色,只需要使用者組態

實作

以下是實作動態方法的方式 (使用 儲存company-transfers貯體做為以實際 Amazon S3 儲存貯體取代的範例):

實作動態許可管理
  1. 建立具有廣泛 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" } ] }
  2. 建立工作階段政策範本,限制對使用者資料夾的存取:

    { "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}*" } } } ] }
  3. 使用 設定每個使用者:

    • 共用的 IAM 角色

    • 套用的工作階段政策如下所示:

      • 服務受管使用者:在建立或修改使用者時,使用 API 或 CLI 透過政策參數套用 JSON (主控台僅提供預先定義的政策選項)

      • 自訂身分提供者使用者:在身分驗證期間將其作為 Lambda 函數回應的一部分傳回,或將其與使用者的憑證一起存放 AWS Secrets Manager 為名為 "Policy" 的金鑰

    • 主目錄: /company-transfers/${transfer:Username}/