本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IAM 政策管理 AWS CloudShell 存取和使用
AWS Identity and Access Management管理員可以使用 提供的存取管理資源,將許可授予IAM使用者。如此一來,這些使用者可以存取 AWS CloudShell 和使用環境的功能。管理員也可以建立政策,以精細地指定這些使用者可以使用 Shell 環境執行的動作。
管理員授予使用者存取權的最快方法是透過 AWS 受管政策。AWS 受管政策是由 建立和管理的獨立政策 AWS。下列 的 AWS 受管政策 AWS CloudShell 可以連接到IAM身分:
-
AWS CloudShellFullAccess:授予許可,以 AWS CloudShell 完整存取所有功能。
此AWS CloudShellFullAccess政策使用萬用字元 (*) 字元,讓IAM身分 (使用者、角色或群組) 完整存取 CloudShell 和 功能。如需此政策的詳細資訊,請參閱 受管政策使用者指南 AWS CloudShellFullAccess中的 。 AWS
注意
IAM 具有下列 AWS 受管政策的身分也可以啟動 CloudShell。不過,這些政策提供廣泛的許可。因此,我們建議您僅在這些政策對IAM使用者的工作角色至關重要時,才授予這些政策。
如需連接受管政策的詳細資訊,請參閱 IAM 使用者指南 中的新增IAM身分許可 (主控台)。
AWS CloudShell 使用自訂政策管理 中的允許動作
若要管理IAM使用者可以使用 執行的動作 CloudShell,請建立使用 CloudShellPolicy 受管政策作為範本的自訂政策。或者,編輯內嵌在相關IAM身分 (使用者、群組或角色) 中的內嵌政策。
例如,您可以允許使用者IAM存取 CloudShell,但防止他們轉送用來登入 CloudShell 的環境憑證 AWS Management Console。
重要
若要 AWS CloudShell 從 啟動 AWS Management Console,IAM使用者需要下列動作的許可:
-
CreateEnvironment
-
CreateSession
-
GetEnvironmentStatus
-
StartEnvironment
如果連接的政策未明確允許其中一個動作,則當您嘗試啟動 時,會傳回IAM許可錯誤 CloudShell。
名稱 | 所授予之許可的描述 | 需要啟動 CloudShell? |
---|---|---|
|
建立 CloudShell 環境、在 CloudShell 工作階段開始時擷取版面配置,並從後端的 Web 應用程式儲存目前的版面配置。此許可僅預期 |
是 |
|
從 連線到 CloudShell 環境 AWS Management Console。 |
是 |
|
讀取 CloudShell 環境的狀態。 |
是 |
|
刪除 CloudShell 環境。 |
否 |
|
產生預先簽署的 Amazon S3URLs,用於 CloudShell 使用 CloudShell Web 介面透過 下載檔案。這不適用於VPC環境。 |
否 |
|
產生預先簽署的 Amazon S3URLs,用於 CloudShell 使用 CloudShell Web 介面透過 上傳檔案。這不適用於VPC環境。 |
否 |
|
描述環境。 |
否 |
|
將用來登入 的憑證轉送 AWS Management Console 至 CloudShell。 |
否 |
|
啟動已停止 CloudShell 的環境。 |
是 |
|
停止正在執行 CloudShell 的環境。 |
否 |
IAM 的政策範例 CloudShell
下列範例示範如何建立政策以限制誰可以存取 CloudShell。這些範例也會顯示可在 Shell 環境中執行的動作。
下列政策會強制完全拒絕存取 CloudShell 及其功能。
{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyCloudShell", "Effect": "Deny", "Action": [ "cloudshell:*" ], "Resource": "*" }] }
下列政策IAM允許使用者存取 , CloudShell 但會封鎖使用者產生預先簽署URLs的檔案上傳和下載。使用者仍然可以使用 wget
等用戶端,在環境中來回傳輸檔案。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyUploadDownload", "Effect": "Deny", "Action": [ "cloudshell:GetFileDownloadUrls", "cloudshell:GetFileUploadUrls" ], "Resource": "*" }] }
下列政策IAM允許使用者存取 CloudShell。不過,政策 AWS Management Console 會防止您用來登入 的憑證轉送至 CloudShell 環境。IAM 具有此政策的使用者需要在 中手動設定其憑證 CloudShell。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyCredentialForwarding", "Effect": "Deny", "Action": [ "cloudshell:PutCredentials" ], "Resource": "*" }] }
下列政策允許使用者IAM建立 AWS CloudShell 環境。
{ "Version": "2012-10-17", "Statement": [{ "Sid": "CloudShellUser", "Effect": "Allow", "Action": [ "cloudshell:CreateEnvironment", "cloudshell:CreateSession", "cloudshell:GetEnvironmentStatus", "cloudshell:StartEnvironment" ], "Resource": "*" }] }
建立和使用 CloudShell VPC環境所需的IAM許可
若要建立和使用 CloudShell VPC環境,IAM管理員必須啟用VPC特定 Amazon EC2許可的存取權。本節列出建立和使用VPC環境所需的 Amazon EC2許可。
若要建立VPC環境,指派給您角色IAM的政策必須包含下列 Amazon EC2許可:
ec2:DescribeVpcs
ec2:DescribeSubnets
ec2:DescribeSecurityGroups
ec2:DescribeDhcpOptions
ec2:DescribeNetworkInterfaces
-
ec2:CreateTags
-
ec2:CreateNetworkInterface
-
ec2:CreateNetworkInterfacePermission
我們也建議包括:
-
ec2:DeleteNetworkInterface
注意
此許可不是強制性的,但清除由其建立ENI的資源 CloudShell (ENIs為 CloudShell VPC環境建立的 使用ManagedByCloudShell金鑰標記) 需要此許可。如果未啟用此許可,您必須在每次 CloudShell VPC環境使用後手動清除ENI資源。
IAM 政策授予完整 CloudShell存取權,包括對 的存取權 VPC
下列範例顯示如何啟用 VPC的完整許可,包括對 的存取 CloudShell:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudShellOperations", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "AllowDescribeVPC", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowCreateTagWithCloudShellKey", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSG", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowCreateNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } }, { "Sid": "AllowDeleteNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } } ] }
針對VPC環境使用IAM條件索引鍵
您可以使用 CloudShell特定條件金鑰進行VPC設定,為您的VPC環境提供額外的許可控制。您也可以指定VPC環境可以和不可以使用的子網路和安全群組。
CloudShell 支援IAM政策中的下列條件金鑰:
-
CloudShell:VpcIds
– 允許或拒絕一或多個 VPCs -
CloudShell:SubnetIds
– 允許或拒絕一或多個子網路 -
CloudShell:SecurityGroupIds
– 允許或拒絕一或多個安全群組
注意
如果修改具有公有 CloudShell 環境存取權的使用者許可,以對cloudshell:createEnvironment
動作新增限制,他們仍然可以存取現有的公有環境。不過,如果您想要修改具有此限制IAM的政策,並停用其對現有公有環境的存取,您必須先使用限制更新IAM政策,然後確保帳戶中的每位 CloudShell 使用者都使用 CloudShell Web 使用者介面手動刪除現有的公有環境 (動作 → 刪除 CloudShell環境 )。
具有VPC設定條件索引鍵的政策範例
下列範例示範如何使用條件索引鍵進行VPC設定。建立具有所需限制的政策陳述式之後,請附加目標 使用者或角色的政策陳述式。
確保使用者僅建立VPC環境,並拒絕建立公有環境
若要確保使用者只能建立VPC環境,請使用拒絕許可,如下列範例所示:
{ "Statement": [ { "Sid": "DenyCloudShellNonVpcEnvironments", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "Null": { "cloudshell:VpcIds": "true" } } } ] }
拒絕使用者存取特定 VPCs、子網路或安全群組
若要拒絕使用者存取特定 VPCs,請使用 StringEquals
檢查cloudshell:VpcIds
條件的值。下列範例拒絕使用者存取 vpc-1
和 vpc-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }
若要拒絕使用者存取特定 VPCs,請使用 StringEquals
檢查cloudshell:SubnetIds
條件的值。下列範例拒絕使用者存取 subnet-1
和 subnet-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }
若要拒絕使用者存取特定 VPCs,請使用 StringEquals
檢查cloudshell:SecurityGroupIds
條件的值。下列範例拒絕使用者存取 sg-1
和 sg-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSecurityGroups", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }
允許使用者使用特定VPC組態建立環境
若要允許使用者存取特定 VPCs,請使用 StringEquals
檢查cloudshell:VpcIds
條件的值。下列範例允許使用者存取 vpc-1
和 vpc-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }
若要允許使用者存取特定 VPCs,請使用 StringEquals
檢查cloudshell:SubnetIds
條件的值。下列範例允許使用者存取 subnet-1
和 subnet-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }
若要允許使用者存取特定 VPCs,請使用 StringEquals
檢查cloudshell:SecurityGroupIds
條件的值。下列範例允許使用者存取 sg-1
和 sg-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSecurityGroup", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }
存取許可 AWS 服務
CloudShell 會使用您用來登入 的IAM憑證 AWS Management Console。
注意
若要使用您用來登入 的IAM憑證 AWS Management Console,您必須具有 cloudshell:PutCredentials
許可。
的預先驗證功能 CloudShell 可讓您方便地使用 AWS CLI。不過,IAM使用者仍需要從命令列 AWS 服務 呼叫的 明確許可。
例如,假設IAM使用者需要建立 Amazon S3 儲存貯體,並將檔案作為物件上傳至它們。您可以建立明確允許這些動作的政策。IAM 主控台提供互動式視覺化編輯器,引導您完成建置 JSON格式化政策文件的程序。建立政策後,您可以將其連接至相關IAM身分 (使用者、群組或角色)。
如需連接受管政策的詳細資訊,請參閱 IAM 使用者指南 中的新增IAM身分許可 (主控台)。
在 中存取 Amazon Q CLI功能的許可 CloudShell
若要在 中使用 Amazon Q CLI功能 CloudShell,例如內嵌建議、聊天和翻譯,請確定您擁有必要的IAM許可。如果您無法存取 中的 Amazon Q CLI功能 CloudShell,請聯絡您的管理員,以提供您必要的IAM許可。如需詳細資訊,請參閱 Amazon Q 開發人員使用者指南 中的 Amazon Q 開發人員的身分型政策範例。