本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
VPC Lattice 身分驗證政策是您連接到服務網路或服務的 IAM 政策文件,以控制指定的委託人是否可以存取一組服務或特定服務。您可以將一個身分驗證政策連接到您要控制存取的每個服務網路或服務。
注意
服務網路上的身分驗證政策不適用於服務網路中的資源組態。
驗證政策與 IAM 身分型政策不同。IAM 身分型政策會連接到 IAM 使用者、群組或角色,並定義這些身分可以對哪些資源執行哪些動作。驗證政策會連接到 服務和服務網路。若要成功授權,身分驗證政策和身分型政策都需要有明確的允許陳述式。如需詳細資訊,請參閱授權的運作方式。
您可以使用 AWS CLI 和 主控台來檢視、新增、更新或移除 服務和服務網路上的身分驗證政策。當您新增、更新或移除身分驗證政策時,可能需要幾分鐘的時間才能準備就緒。使用 時 AWS CLI,請確定您位於正確的區域。您可以變更設定檔的預設區域,或搭配 命令使用 --region
參數。
若要開始使用身分驗證政策,請依照程序建立套用至服務網路的身分驗證政策。如需您不希望套用至其他服務的更嚴格許可,您可以選擇在個別服務上設定身分驗證政策。
下列 AWS CLI 任務說明如何使用身分驗證政策來管理對服務網路的存取。如需使用主控台的指示,請參閱 VPC Lattice 中的服務網路。
將身分驗證政策新增至服務網路
請依照本節中的步驟使用 AWS CLI 來:
-
使用 IAM 在服務網路上啟用存取控制。
-
將身分驗證政策新增至服務網路。如果您未新增身分驗證政策,則所有流量都會收到存取遭拒的錯誤。
啟用存取控制並將身分驗證政策新增至新的服務網路
-
若要啟用服務網路上的存取控制,以便可以使用身分驗證政策,請使用 create-service-network命令搭配
--auth-type
選項和 值AWS_IAM
。aws vpc-lattice create-service-network --name
Name
--auth-type AWS_IAM [--tagsTagSpecification
]如果成功,此命令傳回的輸出會類似如下。
{ "arn": "
arn
", "authType": "AWS_IAM", "id": "sn-0123456789abcdef0", "name": "Name" } -
使用 put-auth-policy命令,指定您要新增身分驗證政策和您要新增之身分驗證政策的服務網路 ID。
例如,使用下列命令,為 ID 為 的服務網路建立身分驗證政策
。sn-0123456789abcdef0
aws vpc-lattice put-auth-policy --resource-identifier
sn-0123456789abcdef0
--policyfile://policy.json
使用 JSON 建立政策定義。如需詳細資訊,請參閱驗證政策中的常見元素。
如果成功,此命令傳回的輸出會類似如下。
{ "policy": "
policy
", "state": "Active" }
啟用存取控制並將身分驗證政策新增至現有的服務網路
-
若要啟用服務網路上的存取控制,使其可以使用身分驗證政策,請使用 update-service-network命令搭配
--auth-type
選項和 值AWS_IAM
。aws vpc-lattice update-service-network --service-network-identifier
sn-0123456789abcdef0
--auth-type AWS_IAM如果成功,此命令傳回的輸出會類似如下。
{ "arn": "
arn
", "authType": "AWS_IAM", "id": "sn-0123456789abcdef0", "name": "Name" } -
使用 put-auth-policy命令,指定您要新增身分驗證政策和您要新增之身分驗證政策的服務網路 ID。
aws vpc-lattice put-auth-policy --resource-identifier
sn-0123456789abcdef0
--policyfile://policy.json
使用 JSON 建立政策定義。如需詳細資訊,請參閱驗證政策中的常見元素。
如果成功,此命令傳回的輸出會類似如下。
{ "policy": "
policy
", "state": "Active" }
變更服務網路的身分驗證類型
停用服務網路的身分驗證政策
使用 update-service-network命令搭配 --auth-type
選項和 的值NONE
。
aws vpc-lattice update-service-network --service-network-identifier
sn-0123456789abcdef0
--auth-type NONE
如果您稍後需要再次啟用身分驗證政策,請使用為 --auth-type
選項AWS_IAM
指定的 執行此命令。
從服務網路移除身分驗證政策
從服務網路移除身分驗證政策
使用 delete-auth-policy 命令。
aws vpc-lattice delete-auth-policy --resource-identifier
sn-0123456789abcdef0
如果您在將服務網路的身分驗證類型變更為 之前移除身分驗證政策,請求會失敗NONE
。
下列 AWS CLI 任務說明如何使用身分驗證政策來管理對服務的存取。如需使用 主控台的指示,請參閱 VPC Lattice 中的服務。
將身分驗證政策新增至服務
請依照下列步驟使用 AWS CLI 來:
-
使用 IAM 在服務上啟用存取控制。
-
將身分驗證政策新增至服務。如果您未新增身分驗證政策,則所有流量都會收到存取遭拒的錯誤。
啟用存取控制並將身分驗證政策新增至新服務
-
若要啟用服務的存取控制,使其可以使用身分驗證政策,請使用 create-service命令搭配
--auth-type
選項和 值AWS_IAM
。aws vpc-lattice create-service --name
Name
--auth-type AWS_IAM [--tagsTagSpecification
]如果成功,此命令傳回的輸出會類似如下。
{ "arn": "
arn
", "authType": "AWS_IAM", "dnsEntry": { ... }, "id": "svc-0123456789abcdef0", "name": "Name", "status": "CREATE_IN_PROGRESS" } -
使用 put-auth-policy命令,指定您要新增身分驗證政策和您要新增之身分驗證政策的服務 ID。
例如,使用下列命令,為 ID 為
svc-0123456789abcdef0
的服務建立身分驗證政策。aws vpc-lattice put-auth-policy --resource-identifier
svc-0123456789abcdef0
--policyfile://policy.json
使用 JSON 建立政策定義。如需詳細資訊,請參閱驗證政策中的常見元素。
如果成功,此命令傳回的輸出會類似如下。
{ "policy": "
policy
", "state": "Active" }
啟用存取控制並將身分驗證政策新增至現有服務
-
若要啟用服務的存取控制,使其可以使用身分驗證政策,請使用 update-service命令搭配
--auth-type
選項和 值AWS_IAM
。aws vpc-lattice update-service --service-identifier
svc-0123456789abcdef0
--auth-type AWS_IAM如果成功,此命令傳回的輸出會類似如下。
{ "arn": "
arn
", "authType": "AWS_IAM", "id": "svc-0123456789abcdef0", "name": "Name" } -
使用 put-auth-policy命令,指定您要新增身分驗證政策和您要新增之身分驗證政策的服務 ID。
aws vpc-lattice put-auth-policy --resource-identifier
svc-0123456789abcdef0
--policyfile://policy.json
使用 JSON 建立政策定義。如需詳細資訊,請參閱驗證政策中的常見元素。
如果成功,此命令傳回的輸出會類似如下。
{ "policy": "
policy
", "state": "Active" }
變更服務的身分驗證類型
停用服務的身分驗證政策
使用 update-service命令搭配 --auth-type
選項和 的值NONE
。
aws vpc-lattice update-service --service-identifier
svc-0123456789abcdef0
--auth-type NONE
如果您稍後需要再次啟用身分驗證政策,請使用為 --auth-type
選項AWS_IAM
指定的 執行此命令。
從服務移除身分驗證政策
從服務中移除身分驗證政策
使用 delete-auth-policy 命令。
aws vpc-lattice delete-auth-policy --resource-identifier
svc-0123456789abcdef0
如果您在將服務的身分驗證類型變更為 之前移除身分驗證政策,請求會失敗NONE
。
如果您啟用需要對服務進行驗證請求的身分驗證政策,對該服務的任何請求都必須包含使用 Signature 第 4 版 (SigV4) 計算的有效請求簽章。如需詳細資訊,請參閱Amazon VPC Lattice 的 SIGv4 驗證請求。
驗證政策中的常見元素
VPC Lattice 驗證政策是使用與 IAM 政策相同的語法來指定。如需詳細資訊,請參閱《IAM 使用者指南》中的身分型政策和資源型政策。
驗證政策包含下列元素:
-
委託人 – 允許存取陳述式中動作和資源的人員或應用程式。在身分驗證政策中,委託人是 IAM 實體,其為此許可的收件人。委託人會驗證為 IAM 實體,以向特定資源或資源群組提出請求,就像服務網路中的服務一樣。
您必須在資源型政策中指定主體。委託人可以包括帳戶、使用者、角色、聯合身分使用者 AWS 或服務。如需詳細資訊,請參閱《IAM 使用者指南》中的 AWS JSON 政策元素:主體。
-
效果 – 指定委託人請求特定動作時的效果。可以是
Allow
或Deny
。根據預設,當您使用 IAM 在服務或服務網路上啟用存取控制時,主體沒有向服務或服務網路提出請求的許可。 -
動作 – 您要授予或拒絕許可的特定 API 動作。VPC Lattice 支援使用
vpc-lattice-svcs
字首的動作。如需詳細資訊,請參閱《服務授權參考》中的 Amazon VPC Lattice Services 定義的動作。 -
資源 – 受 動作影響的服務。
-
條件 – 條件為選用。您可以使用它們來控制政策生效的時間。如需詳細資訊,請參閱《服務授權參考》中的 Amazon VPC Lattice Services 的條件金鑰。
當您建立和管理身分驗證政策時,建議您使用 IAM 政策產生器。
需求
JSON 中的政策不得包含換行或空白行。
驗證政策的資源格式
您可以透過建立身分驗證政策來限制對特定資源的存取,該政策使用相符的結構描述搭配<serviceARN>/<path>
模式和 Resource
元素的程式碼,如下列範例所示。
通訊協定 | 範例 |
---|---|
HTTP |
|
gRPC |
|
使用下列 Amazon Resource Name (ARN) 資源格式<serviceARN>
:
arn:aws:vpc-lattice:
region
:account-id
:service/service-id
例如:
"Resource": "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-0123456789abcdef0"
可用於身分驗證政策的條件索引鍵
身分驗證政策的條件元素中的條件索引鍵可以進一步控制存取。這些條件索引鍵會根據通訊協定以及請求是使用 Signature 第 4 版 (SigV4) 還是匿名簽署來進行評估。條件金鑰名稱有區分大小寫。
AWS 提供全域條件金鑰,您可以用來控制存取,例如 aws:PrincipalOrgID
和 aws:SourceIp
。若要查看 AWS 全域條件索引鍵的清單,請參閱《IAM 使用者指南》中的AWS 全域條件內容索引鍵。
下列故事列出 VPC Lattice 條件索引鍵。如需詳細資訊,請參閱《服務授權參考》中的 Amazon VPC Lattice Services 的條件金鑰。
條件索引鍵 | 描述 | 範例 | 適用於匿名 (未驗證) 來電者? | 適用於 gRPC? |
---|---|---|---|---|
vpc-lattice-svcs:Port |
依請求的服務連接埠篩選存取權 | 80 | 是 | 是 |
vpc-lattice-svcs:RequestMethod |
依請求的方法來篩選存取權 | GET | 是 | 一律 POST |
vpc-lattice-svcs:RequestHeader/ |
依請求標頭中的標頭名稱/值對來篩選存取權 | content-type: application/json | 是 | 是 |
vpc-lattice-svcs:RequestQueryString/ |
依請求 URL 中的查詢字串鍵值對來篩選存取權 | quux: [corge, grault] | 是 | 否 |
vpc-lattice-svcs:ServiceNetworkArn |
依接收請求之服務網路的 ARN 篩選存取權 | arn:aws:vpc-lattice:us-west-2:123456789012:servicenetwork/sn-0123456789abcdef0 | 是 | 是 |
vpc-lattice-svcs:ServiceArn |
依接收請求之服務的 ARN 篩選存取權 | arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-0123456789abcdef0 | 是 | 是 |
vpc-lattice-svcs:SourceVpc |
依提出請求的 VPC 來篩選存取權 | vpc-1a2b3c4d | 是 | 是 |
vpc-lattice-svcs:SourceVpcOwnerAccount |
依提出請求的 VPC 所屬帳戶來篩選存取權 | 123456789012 | 是 | 是 |
匿名 (未驗證) 主體
匿名主體是未使用 Signature 第 4 版 (SigV4) 簽署其 AWS 請求的發起人,且位於連接到服務網路的 VPC 內。如果身分驗證政策允許,匿名主體可以對服務網路中的服務提出未經驗證的請求。
驗證政策範例
以下是要求已驗證主體提出請求的身分驗證政策範例。
所有範例都使用 us-west-2
區域,並包含虛構的帳戶 IDs。
範例 1:限制特定 AWS 組織對 服務的存取
下列身分驗證政策範例授予許可給任何已驗證的請求,以存取政策適用的服務網路中的任何服務。不過,請求必須來自屬於 條件中指定 AWS 組織的委託人。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "vpc-lattice-svcs:Invoke",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": [
"o-123456example
"
]
}
}
}
]
}
範例 2:限制特定 IAM 角色對服務的存取
下列身分驗證政策範例會授予許可給任何使用 IAM 角色對 Resource
元素中指定的服務rates-client
提出 HTTP GET 請求的已驗證請求。Resource
元素中的資源與附加政策的服務相同。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012
:role/rates-client"
]
},
"Action": "vpc-lattice-svcs:Invoke",
"Resource": [
"arn:aws:vpc-lattice:us-west-2:123456789012
:service/svc-0123456789abcdef0
/*"
],
"Condition": {
"StringEquals": {
"vpc-lattice-svcs:RequestMethod": "GET"
}
}
}
]
}
範例 3:限制特定 VPC 中已驗證主體對 服務的存取
下列身分驗證政策範例僅允許來自 VPC 中 VPC ID 為 之主體的已驗證請求
。vpc-1a2b3c4d
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "vpc-lattice-svcs:Invoke",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:PrincipalType": "Anonymous"
},
"StringEquals": {
"vpc-lattice-svcs:SourceVpc": "vpc-1a2b3c4d
"
}
}
}
]
}
授權的運作方式
當 VPC Lattice 服務收到請求時, AWS 強制執行程式碼會一起評估所有相關許可政策,以決定是否授權或拒絕請求。它會評估授權期間在請求內容中適用的所有 IAM 身分型政策和身分驗證政策。根據預設,當身分驗證類型為 時,所有請求都會隱含拒絕AWS_IAM
。所有相關政策的明確允許會覆寫預設值。
授權包括:
-
收集所有相關 IAM 身分型政策和身分驗證政策。
-
評估產生的一組政策:
-
驗證申請者 (例如 IAM 使用者或角色) 是否具有從申請者所屬帳戶執行操作的許可。如果沒有明確的允許陳述式, AWS 不會授權請求。
-
驗證服務網路的身分驗證政策是否允許請求。如果已啟用身分驗證政策,但沒有明確的允許陳述式, AWS 不會授權請求。如果有明確的允許陳述式,或身分驗證類型為
NONE
,則程式碼會繼續。 -
驗證服務驗證政策是否允許請求。如果已啟用身分驗證政策,但沒有明確的允許陳述式, AWS 不會授權請求。如果有明確的允許陳述式,或身分驗證類型為
NONE
,則強制執行程式碼會傳回允許的最終決策。 -
任何政策中的明確拒絕會覆寫任何允許。
-
圖表顯示授權工作流程。提出請求時,相關政策會允許或拒絕對指定服務的請求存取。
