標籤型存取控制政策 - Amazon EMR

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

標籤型存取控制政策

可以使用身分型政策中的條件,根據標籤來控制對虛擬叢集和作業執行的存取。如需標記的相關資訊,請參閱為您的 Amazon EMR on EKS 資源加上標籤

下列範例示範將條件運算子與 Amazon EMR on EKS 條件金鑰搭配使用的不同案例和方法。這些IAM原則陳述式僅用於示範目的,不應在生產環境中使用。有多種方法可以結合政策陳述式,以根據您的需求授予和拒絕許可。如需有關規劃和測試IAM政策的詳細資訊,請參閱IAM使用者指南

重要

標記動作的明確拒絕許可是項重要的考量條件。這可防止使用者標記資源並將您無意授予的許可授予給他們。如果未拒絕資源的標記動作,使用者可以修改標籤並規避標籤型政策的意圖。如需有關可拒絕標記動作的政策範例,請參閱 拒絕新增和移除標籤的存取權

以下範例示範以身分為基礎的許可政策,這些政策用於控制 Amazon EMR 在EKS虛擬叢集上允許的動作。

僅在具有特定標籤值的資源上允許動作

在下列原則範例中, StringEquals 條件運算子會嘗試比對 dev 與標籤部門的值。若標籤部門尚未新增到虛擬叢集,或不包含 dev 值,政策將無法套用,此政策也不允許動作。如果沒有其他政策陳述式允許動作,使用者只能使用具有此值標籤的虛擬叢集。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-containers:DescribeVirtualCluster" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "dev" } } } ] }

您也可以使用條件運算子來指定多個標籤值。例如,若要在 department 標籤包含 devtest 值的虛擬叢集上允許動作,可以用下列內容取代先前範例中的條件區塊。

"Condition": { "StringEquals": { "aws:ResourceTag/department": ["dev", "test"] } }

建立資源時需要進行標記

在以下範例中,需要在建立虛擬叢集時套用標籤。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-containers:CreateVirtualCluster" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "dev" } } } ] }

以下政策陳述式可讓使用者只在叢集具有可以包含任何值的 department 標籤時,才能建立虛擬叢集。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-containers:CreateVirtualCluster" ], "Resource": "*", "Condition": { "Null": { "aws:RequestTag/department": "false" } } } ] }

拒絕新增和移除標籤的存取權

此政策的效果是拒絕使用者在以包含 department 值的 dev 標籤所標記的虛擬叢集上新增或移除任何標籤的許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "emr-containers:TagResource", "emr-containers:UntagResource" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/department": "dev" } } } ] }