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

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

建立 IAM 角色和政策

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

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

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

  • 存取角色 – 僅提供正在傳輸的 Amazon S3 檔案的存取權。對於傳入 AS2 傳輸,存取角色會使用協議的 Amazon Resource Name (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. 建立 的 IAM 政策 AWS Transfer Family。如 中所述建立適用於 AWS Transfer Family的 IAM 政策

  2. 建立 IAM 角色並連接新的 IAM 政策。如需範例,請參閱「讀取/寫入存取政策範例」。

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

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

建立適用於 AWS Transfer Family的 IAM 政策
  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. 在導覽窗格中,選擇角色,然後選擇建立角色

    建立角色頁面上,確定已選擇 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"。存取政策如下所示。

    JSON
    { "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,限制使用者只能存取其主目錄。

當您以程式設計方式為角色或使用者建立臨時工作階段時,工作階段政策是做為參數傳遞的進階政策。工作階段政策有助於鎖定使用者,讓他們只能存取物件字首包含其使用者名稱的 儲存貯體部分。下圖顯示工作階段政策的許可是工作階段政策和資源型政策的交集,以及工作階段政策和身分型政策的交集。

工作階段政策許可 Venn 圖表。顯示有效的許可位於資源型政策、身分型政策和工作階段政策的交集。

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

在 中 AWS Transfer Family,只有在您往返 Amazon S3 傳輸時,才支援工作階段政策。下列範例政策是工作階段政策,只會限制使用者對其home目錄的存取。注意下列事項:

  • 只有在您需要啟用跨帳戶存取時,才需要 GetObjectACLPutObjectACL陳述式。也就是說,您的 Transfer Family 伺服器需要存取不同帳戶中的儲存貯體。

  • 工作階段政策的長度上限為 2048 個字元。如需詳細資訊,請參閱 API 參考CreateUser動作的政策請求參數

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

  • 若要使用工作階段政策根據使用者屬性建立存取許可,而不為每個使用者建立單獨的 IAM 角色,請參閱 動態許可管理方法

JSON
{ "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:HomeBuckettransfer:HomeDirectory政策參數的使用方式。這些參數是針對為使用者設定的 HomeDirectory 所設定,如 HomeDirectory 和 中所述實作您的 API Gateway 方法。這些參數具有下列定義:

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

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

  • transfer:HomeDirectory 參數已移除正斜線 (/),因此可做為Resource陳述式中 S3 Amazon Resource Name (ARN) 的一部分使用。

注意

如果您使用的是邏輯目錄,也就是使用者的 homeDirectoryTypeLOGICAL,則不支援這些政策參數 (HomeBucketHomeDirectoryHomeFolder)。

例如,假設為 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 儲存貯體中物件的讀取/寫入存取權。

注意下列事項:

  • amzn-s3-demo-bucket 取代為您的 Amazon S3 儲存貯體的名稱。

  • 只有在您需要啟用跨帳戶存取時,才需要 GetObjectACLPutObjectACL陳述式。也就是說,您的 Transfer Family 伺服器需要存取不同帳戶中的儲存貯體。

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

    注意

    如果您已為儲存貯體啟用版本控制,則需要這些許可,因為您只能在 Amazon S3 中暫停版本控制,無法將其完全關閉。如需詳細資訊,請參閱「未版本控制」、「啟用版本控制」和「暫停版本控制」儲存貯體

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectTagging", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectVersionTagging", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
授予檔案系統對 Amazon EFS 檔案系統中檔案的存取權

注意

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

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

注意

在下列範例中,將區域取代為您的區域、將 account-id 取代為檔案所在的帳戶,並將 file-system-id 取代為 Amazon Elastic File System (Amazon EFS) 的 ID。

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

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

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