本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用IAM角色將權限授與在 AppStream 2.0 串流執行個體上執行的應用程式和指令碼
在 AppStream 2.0 串流執行個體上執行的應用程式和指令碼必須在其 AWS API要求中包含 AWS 認證。您可以建立IAM角色來管理這些認證。IAM角色指定一組可用來存取 AWS 資源的權限。不過,此角色並非與某個人單獨關聯。反之,任何需要此角色的任何人都可以擔任此角色。
您可以將IAM角色套用至 AppStream 2.0 串流執行個體。當串流執行個體切換為 (擔任) 該角色時,該角色會提供暫時安全登入資料。您的應用程式或指令碼會使用這些認證在串流API執行個體上執行動作和管理工作。 AppStream 2.0 會為您管理臨時憑證切換。
目錄
搭配 AppStream 2.0 串流執行個體使用IAM角色的最佳做法
當您將IAM角色與 AppStream 2.0 個串流執行個體搭配使用時,建議您遵循下列做法:
限制您授與 AWS API動作和資源的權限。
建立原則並將其附加IAM至與 AppStream 2.0 串流執行個體相關聯的IAM角色時,請遵循最低權限原則。當您使用需要存取 AWS API動作或資源的應用程式或指令碼時,請決定所需的特定動作和資源。然後,建立允許應用程式或指令碼僅執行那些動作的政策。如需詳細資訊,請參閱《IAM使用指南》中的「授與最低權限」。
為每個 AppStream 2.0 資源建立一個IAM角色。
為每個 AppStream 2.0 資源建立唯一IAM角色是遵循最低權限原則的做法。這樣做也可讓您修改資源的許可,而不會影響其他資源。
限制可使用登入資料的位置。
IAM策略可讓您定義可使用IAM角色存取資源的條件。例如,您可以包含條件,以指定請求可能來自的 IP 地址範圍。這樣做可防止登入資料在您的環境外遭到使用。如需詳細資訊,請參閱《使用IAM者指南》中的〈針對額外安全性使用原則條件
設定要與 AppStream 2.0 串流執行個體搭配使用的現有IAM角色
本主題說明如何設定現有IAM角色,以便您可以將其與映像產生器和叢集串流執行個體搭配使用。
先決條件
您要與 AppStream 2.0 映像產生器或叢集串流執行個體搭配使用的IAM角色必須符合下列先決條件:
該IAM角色必須與 AppStream 2.0 串流執行個體位於相同的 Amazon Web Services 帳戶中。
IAM角色不能是服務角色。
附加至IAM角色的信任關係原則必須包含 AppStream 2.0 服務做為主體。主參與者是中 AWS 可以執行動作及存取資源的實體。政策也必須包含
sts:AssumeRole
動作。此原則組態將 AppStream 2.0 定義為受信任的實體。如果您要將IAM角色套用至映像產生器,映像產生器必須執行 2019 年 9 月 3 日或之後發行的 AppStream 2.0 代理程式版本。如果您要將IAM角色套用至叢集,叢集必須使用在同一日期或之後發行之代理程式版本的映像。如需詳細資訊,請參閱AppStream 2.0 代理程式版本資訊。
若要讓 AppStream 2.0 服務主體承擔現有IAM角色
若要執行下列步驟,您必須以具有列出和更新IAM角色所需權限的IAM使用者身分登入帳戶。如果您沒有所需許可,可請 Amazon Web Services 帳戶管理員在您的帳戶中執行這些步驟,或授予您必要的許可。
在開啟IAM主控台https://console.aws.amazon.com/iam/
。 -
在導覽窗格中,選擇角色。
-
在您帳戶的角色清單中,選擇您想要修改的角色名稱。
選擇 Trust Relationships (信任關係) 標籤,然後選擇 Edit Trust Relationship (編輯信任關係)。
在 Policy Document (政策文件) 下,確認信任關係政策包含適用於
appstream.amazonaws.com
服務委託人的sts:AssumeRole
動作:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "appstream.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
當您完成編輯您的信任政策,請選擇 Update Trust Policy (更新信任政策) 來儲存您的變更。
-
您選取的IAM角色將會顯示在 AppStream 2.0 主控台中。此角色授與應用程式和指令碼的權限,以便在串流API執行個體上執行動作和管理工作。
如何建立與 AppStream 2.0 串流執行個體搭配使用的IAM角色
本主題說明如何建立新IAM角色,以便與映像產生器和叢集串流執行個體搭配使用。
在開啟IAM主控台https://console.aws.amazon.com/iam/
。 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)。
對於 Select type of trusted entity (選取信任的實體類型),選擇 AWS service ( 服務)。
從 AWS 服務清單中,選擇 AppStream 2.0。
在 [選取您的使用案例] 下,已選取 [AppStream AppStream 2.0 — 允許 2.0 執行個體代表您呼叫 AWS 服務]。選擇下一步:許可。
可以的話,請選取用於許可政策的政策,或者選擇 Create policy (建立政策) 以開啟新的瀏覽器標籤,並從頭建立新的政策。如需詳細資訊,請參閱《IAM使用指南》中「建立IAM策略 (主控台)」程序中的步驟 4。
在您建立政策後,關閉該標籤並返回您的原始標籤。選取您想要 AppStream 2.0 擁有的權限原則旁邊的核取方塊。
(選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。如需詳細資訊,請參閱《使用指南》中的〈IAM實體的IAM權限界限〉。
選擇下一步:標籤。您可以選擇將標籤附加為金鑰值配對。如需詳細資訊,請參閱《使IAM用指南》中的〈標記IAM使用者和角色〉。
選擇下一步:檢閱。
在角色名稱中,輸入您 Amazon Web Services 帳戶中的唯一角色名稱。由於其他 AWS 資源可能會參照該角色,因此您無法在建立角色之後編輯該角色的名稱。
在 Role description (角色描述) 中,保留預設角色描述或輸入新的角色描述。
檢閱角色,然後選擇 Create role (建立角色)。
如何搭配 AppStream 2.0 串流執行個體使用IAM角色
建立IAM角色後,您可以在啟動映像產生器或建立叢集時,將其套用至映像產生器或叢集串流執行個體。您也可以將IAM角色套用至現有的叢集。如需有關如何在啟動映像產生器時套用IAM角色的資訊,請參閱啟動映像建置器以安裝和設定串流應用程式。如需建立叢集時如何套用IAM角色的詳細資訊,請參閱建立機群。
當您將IAM角色套用至映像產生器或叢集串流執行個體時, AppStream 2.0 會擷取暫時登入資料,並在執行個體上建立 appstream_machine_role 認證設定檔。臨時憑證的有效期為 1 小時,而且每小時都會擷取新的憑證。之前的登入資料不會過期,因此您可以在有效期間進行使用。您可以使用認證設定檔,以程式設計方式呼叫 AWS 服務,方法是使用 AWS 命令列介面 (AWS CLI) PowerShell、 AWS 工具或使 AWS SDK用您選擇的語言來呼叫服務。
當您進行API呼叫時,請指定認證設定檔。否則,此操作會因許可不足而失敗。
AppStream 在佈建串流執行個體時,2.0 會採用指定的角色。由VPC於 AppStream 2.0 使用連接到您的 AWS API呼叫的 elastic network interface,因此您的應用程式或指令碼必須等待 elastic network interface 可用,才能進行 AWS API呼叫。如果在 elastic network interface 可用之前進行API呼叫,呼叫會失敗。
下列範例說明如何使用 appstream_machine_role 認證設定檔來描述串流執行個體 (EC2執行個體),以及建立 Boto 用戶端。博托是 Amazon Web Services(AWS)SDK為 Python。
使用描述串流執EC2行個體 (執行個體) AWS CLI
aws ec2 describe-instances --region us-east-1 --profile appstream_machine_role
使用 AWS 工具描述串流EC2執行個體 (執行個體) PowerShell
您必須使用 3.3.563.1 或更高 PowerShell 版本的 AWS 工具,與 Amazon Web Services 一起使用。SDK NET版本三月三十二日或更新版本。您可以下 AWS 載 Windows 安裝程序的 AWS 工具,其中包括工具 PowerShell 和 Amazon Web Services。SDK NET,從網 PowerShell站的AWS 工具
Get-EC2Instance -Region us-east-1 -ProfileName appstream_machine_role
通過使用 Python 創建博托客戶端 AWS SDK
session = boto3.Session(profile_name='appstream_machine_role')