建立 IAM 角色和政策 - AWS Transfer Family

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

建立 IAM 角色和政策

本主題說明可搭配使用的原則和角色類型 AWS Transfer Family,並逐步介紹建立使用者角色的程序。它也說明工作階段原則的運作方式,並提供範例使用者角色。

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

  • 使用者角色 — 允許服務管理的使用者存取必要的「Transfer Family」資源。 AWS Transfer Family 在「Transfer Family」使用者 ARN 的內容中擔任此角色。

  • 存取角色 — 僅提供對正在傳輸的 Amazon S3 檔案的存取權。對於輸入 AS2 傳輸,存取角色使用 Amazon 資源名稱 (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 的內容中擔任此角色。

除了這些角色之外,您也可以使用工作階段原則。會話策略用於在必要時限制訪問。請注意,這些原則是獨立的:也就是說,您不會將這些原則新增至角色。相反地,您可以直接將工作階段原則新增至「Transfer Family」使用者。

注意

當您建立由服務管理的「Transfer Family」使用者時,可以選取「根據主資料夾自動產生原則」。如果您想限制用戶訪問自己的文件夾,這是一個有用的快捷方式。此外,您也可以檢視有關工作階段原則的詳細資訊以及中的範例工作階段原則的運作。您也可以在 IAM 使用者指南中的工作階段政策中找到有關工作階段政策的詳細資訊

建立使用者角色

建立使用者時,您會做出一些關於使用者存取權的決定。這些決策包括使用者可以存取哪些 Amazon S3 儲存貯體或 Amazon EFS 檔案系統、每個 Amazon S3 儲存貯體的哪些部分以及檔案系統中的哪些檔案可以存取,以及使用者擁有的許可 (例如,PUTGET)。

若要設定存取權,您可以建立以身分識別為基礎的 AWS Identity and Access Management (IAM) 政策和角色,以提供該存取資訊。在此程序中,您可以為使用者提供 Amazon S3 儲存貯體或 Amazon EFS 檔案系統的存取權,該系統是檔案操作的目標或來源。若要執行此作業,請遵循下列高層級步驟,稍後會詳細進行說明:

建立使用者角色
  1. 建立的 AWS Transfer Family身分與存取權管理政策 這在中有所描述若要為以下項目建立 IAM 政策 AWS Transfer Family

  2. 建立 IAM 角色並附加新的 IAM 政策。如需範例,請參閱讀/寫存取政策範例

  3. 在 AWS Transfer Family 和 IAM 角色之間建立信任關係。這在中有所描述建立信任關係

下列程序說明如何建立 IAM 政策和角色。

若要為以下項目建立 IAM 政策 AWS Transfer Family
  1. https://console.aws.amazon.com/iam/ 中開啟 IAM 主控台。

  2. 在導覽窗格中,選擇 Policies (政策),然後選擇 Create policy (建立政策)

  3. Create Policy (建立政策) 頁面上,選擇 JSON 標籤。

  4. 在出現的編輯器中,將編輯器的內容取代為要附加到 IAM 角色的 IAM 政策。

    您可以授與讀取/寫入存取權,或限制使用者存取其主目錄。如需詳細資訊,請參閱 讀/寫存取政策範例

  5. 選擇 [檢閱原則] 並提供原則的名稱和說明,然後選擇 [建立原則]。

接下來,您會建立 IAM 角色並將新的 IAM 政策連接到它。

若要為以下項目建立 IAM 角色 AWS Transfer Family
  1. 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

    在 [建立角色] 頁面上,確定已選取AWS 服務

  2. 從服務清單選擇 Transfer (傳輸),然後選擇 Next: Permissions (下一步:許可)。這會在 AWS Transfer Family 和之間建立信任關係 AWS。

  3. 在 [附加權限原則] 區段中,找出並選擇您剛建立的原則,然後選擇 [下一步:標籤]。

  4. (選用) 輸入標籤的金鑰和值,然後選擇 Next: Review (下一步:檢閱)

  5. Review (檢閱) 頁面上,輸入您新角色的名稱和描述,然後選擇 Create role (建立角色)

接下來,您在 AWS Transfer Family 和之間建立信任關係 AWS。

建立信任關係
注意

在我們的範例中,我們同時使用ArnLikeArnEquals。它們在功能上是相同的,因此您可以在構建策略時使用任何一種。「Transfer Family」文件會在條件包含萬用字元ArnLike時使用,並ArnEquals指出完全相符的條件。

  1. 在 IAM 主控台中,選擇您剛建立的角色。

  2. Summary (摘要) 頁面上,選擇 Trust relationships (信任關係),然後選擇 Edit trust relationship (編輯信任關係)

  3. 「編輯信任關係」編輯器中,確定服務"transfer.amazonaws.com"。訪問策略如下所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    建議您使用 aws:SourceAccountaws:SourceArn 條件金鑰,保護自己免受混淆代理人問題的困擾。來源帳戶是伺服器的擁有者,而來源 ARN 是使用者的 ARN。例如:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account_id" }, "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account_id:user/*" } }

    如果您希望限制到特定服務器而不是用戶帳戶中的任何服務器,也可以使用該ArnLike條件。例如:

    "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/*" } }
    注意

    在上面的例子中,用您自己的信息替換每個用戶輸入佔位符

    有關混淆的副問題和更多示例的詳細信息,請參閱預防跨服務混淆代理人

  4. 選擇 [更新信任原則] 以更新存取原則。

您現在已建立 IAM 角色, AWS Transfer Family 以便代表您呼叫 AWS 服務。您已將您建立的 IAM 政策附加至角色,以授予使用者存取權。在此開始使用 AWS Transfer Family 伺服器端點區段中,會將此角色和原則指派給您的一或多個使用者。

另請參閱

工作階段原則的運作

當管理員建立角色時,角色通常會包含涵蓋多個使用案例或專案團隊成員的廣泛權限。如果管理員設定主控台 URL,則可以使用工作階段原則來降低結果工作階段的權限。例如,如果您建立具有讀取/寫入存取權的角色,您可以設定 URL 來限制使用者只能存取其主目錄。

工作階段原則是當您以程式設計方式為角色或使用者建立暫時工作階段時,作為參數傳遞的進階原則。工作階段政策對於鎖定使用者非常有用,以便他們只能存取物件前置詞包含其使用者名稱的值區的某些部分。下圖顯示工作階段原則的權限是工作階段原則和以資源為基礎的原則的交集,以及工作階段原則和身分識別型原則的交集。

工作階段原則權限溫氏圖表。顯示以資源為基礎的原則、以身分識別為基礎的原則和階段作業原則的交集中的有效權限如何。

如需詳細資訊,請參閱 IAM 使用者指南中的工作階段政策

在中 AWS Transfer Family,只有在您傳入 Amazon S3 或從 Amazon S3 傳輸時,才支援工作階段政策。下列範例原則是工作階段原則,僅限使用者存取其home目錄。注意下列事項:

  • 只有在您需要啟用「跨帳戶存取」時,才需要GetObjectACL和對帳PutObjectACL單。也就是說,您的 Transfer Family 服務器需要訪問不同帳戶中的存儲桶。

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

  • 如果您的 Amazon S3 儲存貯體使用 AWS Key Management Service (AWS KMS) 加密,則必須在政策中指定其他許可。如需詳細資訊,請參閱 Amazon S3 中的資料加密

{ "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:DeleteObject", "s3:DeleteObjectVersion", "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/.

讀/寫存取政策範例

授與Amazon S3 儲存桶的讀取/寫入

下列範例政策 AWS Transfer Family 授與 Amazon S3 儲存貯體中物件的讀取/寫入存取權限。

注意下列事項:

  • 使用您 Amazon S3 儲存貯體的名稱來取代 DOC-EXAMPLE-BUCKET

  • 只有在您需要啟用「跨帳戶存取」時,才需要GetObjectACL和對帳PutObjectACL單。也就是說,您的 Transfer Family 服務器需要訪問不同帳戶中的存儲桶。

  • 只有在正在存取的 Amazon S3 儲存貯體上啟用版本控制時,才需要使用GetObjectVersionDeleteObjectVersion陳述式。

    注意

    如果您經為儲存貯體啟用版本控制,則需要這些許可,因為您只能在 Amazon S3 中暫停版本控制,而不能完全關閉它。如需詳細資訊,請參閱未建立版本控制、啟用版本控制和版本控制暫停的值區。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
授與檔案系統存取 Amazon EFS 檔案系統中檔案的權限

注意

除了該策略之外,您還必須確保您的 POSIX 文件權限授予適當的訪問權限。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的使用網路檔案系統 (NFS) 層級的使用者、群組和許可

下列範例政策授與根檔案系統存取 Amazon EFS 檔案系統中檔案的權限。

注意

在下列範例中,請將區域取代為您的區域、帳戶 ID 替換為檔案所在的帳戶,以及 file-system-idAmazon 彈性檔案系統 (Amazon EFS) 的 ID 取代。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RootFileSystemAccess", "Effect": "Allow", "Action": [ "elasticfilesystem:ClientRootAccess", "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite" ], "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id" } ] }

下列範例政策授予使用者檔案系統存取 Amazon EFS 檔案系統中檔案的權限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UserFileSystemAccess", "Effect": "Allow", "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite" ], "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id" } ] }