本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立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 儲存貯體的哪些部分,以及檔案系統中可存取哪些檔案,以及使用者擁有哪些許可 (例如 PUT
或 GET
)。
若要設定存取權,您可以建立身分型 AWS Identity and Access Management (IAM) 政策和角色,以提供該存取資訊。作為此程序的一部分,您可以為使用者提供 Amazon S3 儲存貯體或 Amazon EFS 檔案系統的存取權,這是檔案操作的目標或來源。若要執行此作業,請遵循下列高層級步驟,稍後會詳細進行說明:
建立使用者角色
-
建立 IAM的政策 AWS Transfer Family。如 中所述為 建立IAM政策 AWS Transfer Family。
-
建立IAM角色並連接新IAM政策。如需範例,請參閱讀取/寫入存取政策範例。
-
在 AWS Transfer Family 和 IAM角色之間建立信任關係。如 中所述建立信任關係。
下列程序說明如何建立IAM政策和角色。
為 建立IAM政策 AWS Transfer Family
-
在 開啟IAM主控台https://console.aws.amazon.com/iam/
。 -
在導覽窗格中,選擇 Policies (政策),然後選擇 Create policy (建立政策)。
-
在建立政策頁面上,選擇 JSON 索引標籤。
-
在出現的編輯器中,將編輯器的內容取代為您想要連接至IAM角色IAM的政策。
您可以授予讀取/寫入存取權,或將使用者限制為其主目錄。如需詳細資訊,請參閱讀取/寫入存取政策範例。
-
選擇檢閱政策並提供政策的名稱和描述,然後選擇建立政策 。
接下來,您可以建立角色,並將新IAM政策連接至該IAM角色。
為 建立IAM角色 AWS Transfer Family
-
在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)。
在建立角色頁面上,確定已選擇 AWS 服務。
-
從服務清單選擇 Transfer (傳輸),然後選擇 Next: Permissions (下一步:許可)。這會在 AWS Transfer Family 和 之間建立信任關係 AWS。
-
在連接許可政策區段中,找到並選擇您剛建立的政策,然後選擇下一步:標籤 。
-
(選用) 輸入標籤的金鑰和值,然後選擇 Next: Review (下一步:檢閱)。
-
在 Review (檢閱) 頁面上,輸入您新角色的名稱和描述,然後選擇 Create role (建立角色)。
接下來,您可以在 AWS Transfer Family 和 之間建立信任關係 AWS。
建立信任關係
注意
在我們的範例中,我們同時使用 ArnLike
和 ArnEquals
。它們的功能相同,因此您可以在建構政策時使用。Transfer Family 文件用於條件包含萬用字元ArnLike
,並ArnEquals
指示完全相符的條件。
-
在IAM主控台中,選擇您剛建立的角色。
-
在 Summary (摘要) 頁面上,選擇 Trust relationships (信任關係),然後選擇 Edit trust relationship (編輯信任關係)。
-
在編輯信任關係編輯器中,確定服務為
"transfer.amazonaws.com"
。存取政策如下所示。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
建議您使用
aws:SourceAccount
和aws: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
使用您自己的資訊。如需混淆代理問題的詳細資訊和更多範例,請參閱 預防跨服務混淆代理人。
-
選擇更新信任政策以更新存取政策。
您現在已建立允許 代表您 AWS Transfer Family 呼叫 AWS 服務IAM的角色。您已連接至您建立IAM的政策角色,以授予使用者存取權。在 AWS Transfer Family 伺服器端點入門區段中,此角色和政策會指派給您的使用者。
另請參閱
-
如需IAM角色的一般資訊,請參閱 IAM 使用者指南 中的建立角色以將許可委派給 AWS 服務。
-
若要進一步了解 Amazon S3 資源的身分型政策,請參閱 Amazon Simple Storage Service 使用者指南 中的 Amazon S3 中的身分和存取管理。
-
若要進一步了解 Amazon EFS 資源的身分型政策,請參閱 Amazon Elastic File System 使用者指南 中的使用 IAM來控制檔案系統資料存取。 Amazon Elastic File System
工作階段政策的運作方式
當管理員建立角色時,角色通常包含涵蓋多個使用案例或團隊成員的廣泛許可。如果管理員設定主控台 URL,則可以使用工作階段政策 來減少產生工作階段的許可。例如,如果您建立具有讀取/寫入存取權的角色,您可以設定 URL,限制使用者僅存取其主目錄。
當您以程式設計方式為角色或使用者建立臨時工作階段時,工作階段政策是作為 參數傳遞的進階政策。工作階段政策有助於鎖定使用者,以便他們只能存取包含其使用者名稱的物件字首的儲存貯體部分。下圖顯示工作階段政策的許可是工作階段政策與資源型政策的交集,以及工作階段政策和身分型政策的交集。

如需更多詳細資訊,請參閱 IAM 使用者指南 中的工作階段政策。
在 中 AWS Transfer Family,只有在您往返 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:HomeFolder
、 transfer:HomeBucket
和 transfer:HomeDirectory
政策參數的使用。這些參數是針對為使用者設定的 HomeDirectory
設定,如 HomeDirectory和 中所述實作API閘道方法。這些參數具有下列定義:
transfer:HomeBucket
參數會取代為 的第一個元件HomeDirectory
。參數會以
transfer:HomeFolder
參數的剩餘部分取代HomeDirectory
。transfer:HomeDirectory
參數已移除正斜線 (/
),因此可在Resource
陳述式中將其用作 S3 Amazon Resource Name (ARN) 的一部分。
注意
如果您使用的是邏輯目錄,也就是使用者的 homeDirectoryType
是 LOGICAL
,則不支援這些政策參數 (HomeBucket
、 HomeDirectory
和 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"
限制使用者對put
相同路徑 的get
存取/home/bob/amazon/stuff/
。
讀取/寫入存取政策範例
授予對 Amazon S3 儲存貯體的讀取/寫入存取權
下列範例政策可 AWS Transfer Family 授予 Amazon S3 儲存貯體中物件的讀取/寫入存取權。
注意下列事項:
-
Replace (取代)
DOC-EXAMPLE-BUCKET
Amazon S3 儲存貯體的名稱。 -
只有在您需要啟用跨帳戶存取時,才需要
GetObjectACL
和PutObjectACL
陳述式。也就是說,您的 Transfer Family 伺服器需要存取不同帳戶中的儲存貯體。 -
只有在存取的 Amazon S3 儲存貯體上啟用版本控制時,才需要
GetObjectVersion
和DeleteObjectVersion
陳述式。注意
如果您曾經為儲存貯體啟用版本控制,則需要這些許可,因為您只能在 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
" } ] }