在 Amazon EC2 主控台中進行操作的範例政策。 - Amazon Elastic Compute Cloud

在 Amazon EC2 主控台中進行操作的範例政策。

您可以利用 IAM 政策來授予使用者許可,讓使用者檢視和使用 Amazon EC2 主控台中的特定資源。您可以使用先前小節中的範例政策;不過,這些範例在設計時,是針對使用 AWS CLI 或 AWS 開發套件所提出的請求。主控台會針對其功能使用其他的 API 動作,所以這些政策可能不會如預期般運作。例如,使用者的權限如果只能使用 DescribeVolumes API 動作,則當該使用者試著在主控台中檢視磁碟區時,就可能會遇到錯誤。本節中所示範的政策,可讓使用者使用主控台的特定部分。

提示

在主控台中執行工作時,為協助找出所需的 API 動作,您可以使用像是 AWS CloudTrail 的服務。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》。如果政策並未授予權限來建立或修改特定的資源,主控台會顯示編碼的訊息,其中包含診斷資訊。若要將訊息解碼,您可以使用 AWS STS 的 DecodeAuthorizationMessage API 動作,或是使用 AWS CLI 中的 decode-authorization-message 命令。

如需建立 Amazon EC2 主控台之政策的詳細資訊,請參閱下列的 AWS 安全部落格文章:授予使用者許可,以在 Amazon EC2 主控台中進行操作

範例:唯讀存取

若要允許使用者檢視 Amazon EC2 主控台中的所有資源,您可以使用與下列範例相同的政策:範例:唯讀存取。除非有另一個陳述式授予使用者此種權限,否則使用者無法對其他資源執行任何動作,也無法建立新資源。

檢視執行個體、AMI 和快照

或者,您可以提供對資源子集的唯讀存取權限。若要這麼做,請針對每項資源,使用特定的 ec2:Describe 動作,來取代 ec2:Describe API 動作中的 * 萬用字元。下列的政策可讓使用者檢視 Amazon EC2 主控台中的所有執行個體、AMI 和快照。ec2:DescribeTags 動作可讓使用者檢視公用 AMI。主控台需要標記資訊來顯示公用 AMI;不過,您可以移除這項動作,來讓使用者只檢視私有 AMI。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeTags", "ec2:DescribeSnapshots" ], "Resource": "*" } ] }
注意

Amazon EC2 ec2:Describe* API 動作不支援資源層級的許可,因此您無法控制使用者可以在主控台中檢視哪些個別資源。因此,在上述的陳述式中,Resource 元素必須包含 * 萬用字元。如需可與 Amazon EC2 API 動作搭配使用的 ARN 詳細資訊,請參閱 Amazon EC2 的動作、資源與條件金鑰

檢視執行個體和 CloudWatch 指標

下列的政策可讓使用者在 Amazon EC2 主控台中檢視執行個體,以及在 Instances (執行個體) 頁面的 Monitoring (監控) 索引標籤中,檢視 CloudWatch 警示和指標。Amazon EC2 主控台使用 CloudWatch API 來顯示警示和指標,因此您必須授予使用者許可以使用 cloudwatch:DescribeAlarmscloudwatch:GetMetricStatistics 動作。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics" ], "Resource": "*" } ] }

範例:使用 EC2 Launch Wizard

Amazon EC2 Launch Wizard 是一系列內含選項的畫面,可用來設定和啟動執行個體。政策必須包含使用 API 動作的權限,來讓使用者能夠使用精靈的選項。如果政策未包含使用這些動作的權限,可能無法適當地載入精靈中的某些項目,使用者就無法完成啟動。

基本 Launch Wizard 存取

若要順利地完成啟動,必須授予使用者權限,來使用 ec2:RunInstances API 動作和至少下列的 API 動作:

  • ec2:DescribeImages:檢視和選擇 AMI。

  • ec2:DescribeInstanceTypes:檢視和選取執行個體類型。

  • ec2:DescribeVpcs:檢視可用的網路選項。

  • ec2:DescribeSubnets:檢視所選擇 VPC 的所有可用子網。

  • ec2:DescribeSecurityGroupsec2:CreateSecurityGroup:檢視和選取現有的安全群組,或建立新的安全群組。

  • ec2:DescribeKeyPairsec2:CreateKeyPair:選擇現有的金鑰對,或建立新的金鑰對。

  • ec2:AuthorizeSecurityGroupIngress:新增傳入規則。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeInstanceTypes", "ec2:DescribeKeyPairs", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:CreateSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateKeyPair" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*" } ] }

您可以在政策中加入 API 動作,來為使用者提供更多選項,例如:

  • ec2:DescribeAvailabilityZones:檢視並選取特定的可用區域。

  • ec2:DescribeNetworkInterfaces:針對選取的子網,檢視並選取現有的網路介面。

  • 若要在 VPC 安全群組中新增外傳規則,必須授予使用者權限來使用 ec2:AuthorizeSecurityGroupEgress API 動作。若要修改或刪除現有的規則,必須授予使用者權限,以使用相關的 ec2:RevokeSecurityGroup* API 動作。

  • ec2:CreateTags:標記由 RunInstances 所建立的資源。如需詳細資訊,請參閱 在建立期間授予標籤資源的許可。如果使用者不具有使用此動作的許可,而且試著在 Launch Wizard 的標記頁面上使用標籤,則啟動會失敗。

    重要

    啟動執行個體時指定 Name (名稱) 可建立標籤,並且需要 ec2:CreateTags 動作。請小心授與使用者使用 ec2:CreateTags 動作的許可,因為這樣做會限制您使用 aws:ResourceTag 條件金鑰來限制使用者使用其他資源的能力。如果您授與使用者使用 ec2:CreateTags 動作的許可,他們可以變更資源的標籤,以略過這些限制。如需詳細資訊,請參閱 使用資源標籤控制對 EC2 資源的存取

  • 若要在選取 AMI 時使用 Systems Manager 參數,您必須在政策中新增 ssm:DescribeParametersssm:GetParametersssm:DescribeParameters 會授與您的 IAM 使用者檢視和選取 Systems Manager 參數的許可。ssm:GetParameters 會授與您的 IAM 使用者取得 Systems Manager 參數值的許可。您也可以限制對特定 Systems Manager 參數的存取。如需詳細資訊,請參閱本節稍後的 Restrict access to specific Systems Manager parameters (限制特定 Systems Manager 參數的存取)

目前,Amazon EC2 Describe* API 動作並不支援資源層級的許可,因此您無法限制使用者可以在 Launch Wizard 中檢視哪些個別資源。不過,您可以對 ec2:RunInstances API 動作套用資源層級的權限,來限制使用者可以使用哪些資源來啟動執行個體。如果使用者選取了自己無使用授權的選項,啟動會失敗。

Restrict access to a specific instance type, subnet, and Region (限制對特定執行個體類型、子網和區域的存取)

下列政策可讓使用者使用 Amazon 所擁有的 AMI,來啟動 t2.micro 執行個體,而且只啟動至指定的子網 (subnet-1a2b3c4d)。使用者只能在 sa-east-1 區域中啟動。如果使用者選取了不同的區域,或是在 Launch Wizard 中選取了不同的執行個體類型、AMI 或子網,啟動會失敗。

第一個陳述式授與使用者許可來檢視 Launch Wizard 中的選項,或建立新的選項。如上列的範例所解釋。第二個陳述式授予使用者許可,來針對 ec2:RunInstances 動作使用網路介面、磁碟區、金鑰對、安全群組和子網資源,如果要將執行個體啟動到 VPC,就必須執行此項動作。如需關於使用 ec2:RunInstances 動作的詳細資訊,請參閱 啟動執行個體 (RunInstances)。第三和第四個陳述式分別授予使用者使用執行個體和 AMI 資源的許可,但前提是執行個體為 t2.micro 執行個體,並且 AMI 為 Amazon 或某些受信任和已驗證的合作夥伴所有。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeInstanceTypes", "ec2:DescribeKeyPairs", "ec2:CreateKeyPair", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:CreateSecurityGroup", "ec2:AuthorizeSecurityGroupIngress" ], "Resource": "*" }, { "Effect": "Allow", "Action":"ec2:RunInstances", "Resource": [ "arn:aws:ec2:sa-east-1:111122223333:network-interface/*", "arn:aws:ec2:sa-east-1:111122223333:volume/*", "arn:aws:ec2:sa-east-1:111122223333:key-pair/*", "arn:aws:ec2:sa-east-1:111122223333:security-group/*", "arn:aws:ec2:sa-east-1:111122223333:subnet/subnet-1a2b3c4d" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:sa-east-1:111122223333:instance/*" ], "Condition": { "StringEquals": { "ec2:InstanceType": "t2.micro" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:sa-east-1::image/ami-*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } } ] }

Restrict access to specific Systems Manager parameters (限制對特定 Systems Manager 參數的存取)

下列政策授與使用具有特定名稱之 Systems Manager 參數的存取權。

第一個陳述式會授與使用者許可,以在 Launch Wizard 中選取 AMI 時檢視 Systems Manager 參數。第二個陳述式會授與使用者只使用命名為 prod-* 參數的許可。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456123:parameter/prod-*" } ] }

範例:使用磁碟區

下列政策授予使用者權限,讓使用者能夠檢視和建立磁碟區,以及將磁碟區與特定執行個體連結或分離。

使用者可以將任何磁碟區連結至具有「purpose=test」標籤的執行個體,也能將磁碟區和這些執行個體分離。若要使用 Amazon EC2 主控台來連結磁碟區,讓使用者擁有使用 ec2:DescribeInstances 動作的許可,會很有幫助,因為此動作可讓使用者從 Attach Volume (連接磁碟區) 對話方塊中預先填入的清單,來選擇執行個體。不過,此動作也會讓使用者在主控台中檢視 Instances (執行個體) 頁面上的所有執行個體,因此您可以略過這項動作。

在第一個陳述式中,必須包含 ec2:DescribeAvailabilityZones 動作,以確保使用者能夠在建立磁碟區時選擇可用區域。

使用者不能標記自己所建立的磁碟區 (無論是在建立磁碟區時或之後)。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeAvailabilityZones", "ec2:CreateVolume", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:volume/*" } ] }

範例:使用安全群組

檢視安全群組,以及新增和移除規則

下列的政策會授予使用者許可,讓使用者可在 Amazon EC2 主控台中檢視安全群組,並針對具有 Department=Test 標籤的現有安全群組新增和移除傳入與傳出規則,以及列出和修改規則說明。

在第一個陳述式中,ec2:DescribeTags 動作可讓使用者在主控台中檢視標籤,如此就能更容易找出使用者獲得允許修改的安全群組。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:DescribeTags" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupEgress", "ec2:ModifySecurityGroupRules", "ec2:UpdateSecurityGroupRuleDescriptionsIngress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress" ], "Resource": [ "arn:aws:ec2:region:111122223333:security-group/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Department": "Test" } } }, { "Effect": "Allow", "Action": [ "ec2:ModifySecurityGroupRules" ], "Resource": [ "arn:aws:ec2:region:111122223333:security-group-rule/*" ] } ]}

使用 Create Security Group (建立安全群組) 對話方塊

您可以建立政策,允許使用者在 Amazon EC2 主控台中,使用 Create Security Group (建立安全群組) 對話方塊。若要使用此對話方塊,必須授予使用者權限,來至少使用下列的 API 動作:

  • ec2:CreateSecurityGroup:建立新的安全群組。

  • ec2:DescribeVpcs:在 VPC 清單中,檢視現有 VPC 的清單。

使用者可利用這些權限來順利建立新的安全群組,但無法新增任何規則到安全群組。若要在 Create Security Group (建立安全群組) 對話方塊中使用規則,您可以將下列的 API 動作加入政策:

  • ec2:AuthorizeSecurityGroupIngress:新增傳入規則。

  • ec2:AuthorizeSecurityGroupEgress:將外傳規則加入 VPC 安全群組。

  • ec2:RevokeSecurityGroupIngress:修改或刪除現有的傳入規則。這是一項實用的動作,可讓使用者在主控台中使用 Copy to new (複製到新的) 功能。這項功能會開啟 Create Security Group (建立安全群組) 對話方塊,並使用與所選取安全群組相同的規則,來填入規則。

  • ec2:RevokeSecurityGroupEgress:修改或刪除 VPC 安全群組的外傳規則。這是一項實用的動作,可讓使用者修改或刪除預設的外傳規則 (此規則允許所有外傳流量)。

  • ec2:DeleteSecurityGroup:適用於無法儲存個別規則的情況。主控台會先建立安全群組,然後再加入指定的規則。如果規則無效,動作會失敗,而主控台會試著刪除安全群組。使用者仍在使用 Create Security Group (建立安全群組) 對話方塊,因此可以修正無效的規則,然後再次試著建立安全群組。此 API 動作並非必要,但如果使用者並未獲得使用該動作的權限,並試著建立包含無效規則的安全群組,則會建立未包含任何規則的安全群組,使用者必須在之後加入規則。

  • ec2:UpdateSecurityGroupRuleDescriptionsIngress:新增或更新傳入 (輸入) 安全群組規則的描述。

  • ec2:UpdateSecurityGroupRuleDescriptionsEgress:新增或更新傳出 (輸出) 安全群組規則的描述。

  • ec2:ModifySecurityGroupRules:修改安全群組規則。

  • ec2:DescribeSecurityGroupRules:列出安全群組規則。

下列政策授予使用者許可來使用 Create Security Group (建立安全群組) 對話方塊,並針對和指定 VPC (vpc-1a2b3c4d) 具有關聯的安全群組,建立其傳入和傳出規則。使用者可以建立 EC2-Classic 或其他 VPC 的安全群組,但無法將任何規則加入這些安全群組。同樣地,使用者也無法將任何的規則,加入與 VPC vpc-1a2b3c4d 無關聯的現有安全群組。使用者也會獲得權限,來檢視主控台中的所有安全群組。如此,使用者就能更輕鬆地找出可以加入傳入規則的安全群組。此政策也會授予使用者權限,來刪除和 VPC vpc-1a2b3c4d 具有關聯的安全群組。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:CreateSecurityGroup", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DeleteSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress" ], "Resource": "arn:aws:ec2:region:111122223333:security-group/*", "Condition":{ "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:111122223333:vpc/vpc-1a2b3c4d" } } } ] }

範例:使用彈性 IP 地址

若要讓使用者在 Amazon EC2 主控台中檢視彈性 IP 地址,您必須授予使用者許可來使用 ec2:DescribeAddresses 動作。

若要讓使用者使用彈性 IP 地址,您可以將下列的動作加入政策。

  • ec2:AllocateAddress:配置彈性 IP 地址。

  • ec2:ReleaseAddress:釋出彈性 IP 地址。

  • ec2:AssociateAddress:建立彈性 IP 地址與執行個體或網路介面的關聯。

  • ec2:DescribeNetworkInterfacesec2:DescribeInstances:使用 Associate address (關聯地址) 畫面。此畫面會顯示可以和彈性 IP 地址建立關聯的執行個體或網路介面。

  • ec2:DisassociateAddress:取消彈性 IP 地址與執行個體或網路介面的關聯。

下列政策可讓使用者檢視和配置彈性 IP 地址,並建立這些地址與執行個體的關聯。使用者不能建立彈性 IP 地址與網路介面的關聯、取消彈性 IP 地址的關聯,也不能釋出這些地址。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeAddresses", "ec2:AllocateAddress", "ec2:DescribeInstances", "ec2:AssociateAddress" ], "Resource": "*" } ] }

範例:使用 預留執行個體

下列的政策可以連結至 IAM 使用者。此政策為使用者提供了存取權限,來檢視和修改帳戶中的預留執行個體,以及在 AWS Management Console 中購買新的預留執行個體。

此政策允許使用者檢視帳戶中的所有預留執行個體,以及帳戶中的所有隨需執行個體。您無法針對個別的預留執行個體設定資源層級的許可。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:PurchaseReservedInstancesOffering", "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:DescribeAvailabilityZones", "ec2:DescribeReservedInstancesOfferings" ], "Resource": "*" } ] }

若要確保 Amazon EC2 主控台能夠針對您可在其中購買預留執行個體的可用區域顯示相關的資訊,則必須執行 ec2:DescribeAvailabilityZones 動作。ec2:DescribeInstances 動作則非必要,但可確保使用者能夠檢視帳戶中的執行個體,並購買保留,以配合目前的規格。

您可以調整 API 動作來限制使用者的存取,例如移除 ec2:DescribeInstancesec2:DescribeAvailabilityZones 代表使用者具有唯讀存取權限。