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

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

建立IAM角色和政策

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

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

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

  • 存取角色 – 僅提供正在傳輸的 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。如 中所述為 建立IAM政策 AWS Transfer Family

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

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

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

為 建立IAM政策 AWS Transfer Family
  1. 在 開啟IAM主控台https://console.aws.amazon.com/iam/

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

  3. 建立政策頁面上,選擇 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/*" } }
    注意

    在上述範例中,取代每個 user input placeholder 使用您自己的資訊。

    如需混淆代理問題的詳細資訊和更多範例,請參閱 預防跨服務混淆代理人

  4. 選擇更新信任政策以更新存取政策。

您現在已建立允許 代表您 AWS Transfer Family 呼叫 AWS 服務IAM的角色。您已連接至您建立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) 加密,您必須在政策中指定其他許可。如需詳細資訊,請參閱 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:HomeBuckettransfer:HomeDirectory政策參數的使用。這些參數是針對為使用者設定的 HomeDirectory 設定,如 HomeDirectory和 中所述實作API閘道方法。這些參數具有下列定義:

  • 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"限制使用者對put相同路徑 的get存取/home/bob/amazon/stuff/

讀取/寫入存取政策範例

授予對 Amazon S3 儲存貯體的讀取/寫入存取權

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

注意下列事項:

  • Replace (取代) DOC-EXAMPLE-BUCKET Amazon S3 儲存貯體的名稱。

  • 只有在您需要啟用跨帳戶存取時,才需要 GetObjectACLPutObjectACL陳述式。也就是說,您的 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檔案系統存取權。

注意

在下列範例中,取代 region 您的區域 account-id 檔案所在的 帳戶,以及 file-system-id Amazon Elastic File System (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" } ] }