

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

# 常見問答集
<a name="faq"></a>

本節提供有關在多租用戶 SaaS 應用程式中實作 API 存取控制和授權的常見問題解答。

**問：授權和身分驗證有何不同？**

**A.**Authentication 是驗證使用者身分的程序。授權會授予使用者存取特定資源的許可。

**問：SaaS 應用程式中的授權與租戶隔離有何不同？**

**答：**租用戶隔離是指 SaaS 系統中使用的明確機制，以確保即使在共用基礎設施上操作時，每個租用戶的資源都已隔離。多租戶授權是指傳入動作的授權，並防止在錯誤的租戶上實作這些動作。假設使用者可以進行身分驗證和授權，但仍然可以存取另一個租用戶的資源。身分驗證和授權不一定會封鎖此存取，但租戶需要隔離才能達成此目標。如需這兩個概念的詳細資訊，請參閱 *AWS SaaS 架構基礎*白皮書中的[租戶隔離](https://docs.aws.amazon.com/whitepapers/latest/saas-architecture-fundamentals/tenant-isolation.html)討論。

**問：為什麼我需要考慮 SaaS 應用程式的租戶隔離？**

**A.**SaaS 應用程式有多個租用戶。租用戶可以是客戶組織或任何使用該 SaaS 應用程式的外部實體。根據應用程式的設計方式，這表示租戶可能會存取共用 APIs、資料庫或其他資源。請務必維持租戶隔離，也就是可嚴格控制對資源的存取，並封鎖任何存取其他租戶資源的嘗試，以防止使用者從一個租戶存取另一個租戶的私有資訊。SaaS 應用程式通常旨在確保在整個應用程式中維持租用戶隔離，並且租用戶只能存取自己的資源。

**問：為什麼我需要存取控制模型？**

**A.**存取控制模型用於建立一致的方法來判斷如何授予應用程式中資源的存取權。這可以透過將角色指派給與商業邏輯密切一致的使用者來完成，也可以根據其他內容屬性，例如一天中的時間或使用者是否符合預先定義的條件。存取控制模型構成應用程式在進行授權決策時用來判斷使用者許可的基本邏輯。

**問：我的應用程式是否需要 API 存取控制？**

**A.**是。APIs應一律驗證發起人是否具有適當的存取權。普遍 API 存取控制也可確保僅根據租用戶授予存取權，以便維持適當的隔離。

**問：為什麼建議政策引擎或 PDPs進行授權？**

**A.**政策決策點 (PDP) 允許將應用程式程式碼中的授權邏輯卸載至個別系統。這可以簡化應用程式程式碼。它還提供easy-to-use等冪界面，用於對 APIs、微服務、後端前端 (BFF) 層或任何其他應用程式元件進行授權決策。

**問：什麼是 PEP？**

**A.**政策強制執行點 (PEP) 負責接收傳送到 PDP 進行評估的授權請求。PEP 可以在必須保護資料和資源，或套用授權邏輯的應用程式中的任何位置。與 PDPs 相比PEPs 相對簡單。PEP 僅負責請求和評估授權決策，不需要將任何授權邏輯納入其中。

**問：我應該如何選擇 Amazon Verified Permissions** **和 OPA？**

**答：**若要在 Verified Permissions 和 Open Policy Agent (OPA) 之間進行選擇，請謹記您的使用案例和唯一需求。Verified Permissions 提供完全受管的方式，可定義精細的許可、跨應用程式稽核許可，以及集中應用程式的政策管理系統，同時透過毫秒處理滿足您的應用程式延遲需求。OPA 是一種開放原始碼的一般用途政策引擎，也可協助您在應用程式堆疊中統一政策。若要執行 OPA，您需要在 AWS 環境中託管它，通常使用容器或 AWS Lambda 函數。

Verified Permissions 使用開放原始碼 Cedar 政策語言，而 OPA 使用 Rego。因此，熟悉其中一種語言可能會阻礙您選擇該解決方案。不過，我們建議您閱讀兩種語言的相關資訊，然後解決您嘗試解決的問題，為您的使用案例尋找最佳解決方案。

**問：驗證許可和 OPA 是否有開放原始碼替代方案****？**

**答**：有一些開放原始碼系統類似於 Verified Permissions 和 Open Policy Agent (OPA)，例如 [Common Expression Language (CEL)](https://opensource.google/projects/cel)。本指南著重於 Verified Permissions，作為可擴展的許可管理和精細的授權服務，以及 OPA，其廣泛採用、記錄和適應許多不同類型的應用程式和授權要求。

**問：我需要撰寫授權服務才能使用 OPA，還是可以直接與 OPA 互動？**

**答：**您可以直接與 OPA 互動。本指南內容中的授權服務是指將授權決策請求轉譯為 OPA 查詢的服務，反之亦然。如果您的應用程式可以直接查詢並接受 OPA 回應，則不需要引入此額外的複雜性。

**問：如何監控 OPA 代理器的運作時間和稽核目的？**

**A.**OPA 提供記錄和基本運作時間監控，雖然其預設組態可能不足以進行企業部署。如需詳細資訊，請參閱本指南稍早的 [DevOps、監控和記錄](devops.md)一節。

**問：如何針對運作時間和稽核目的監控已驗證的許可？**

**A.**Verified Permissions 是 AWS 受管服務，可透過 監控可用性 AWS Health 儀板表。此外，Verified Permissions 能夠記錄 AWS CloudTrail Amazon CloudWatch Logs、Amazon S3 和 Amazon Data Firehose。

**問：我可以使用哪些作業系統 AWS 和服務來執行 OPA？**

**答：**您可以在 [macOS、Windows 和 Linux 上執行 OPA](https://www.openpolicyagent.org/docs/latest/#running-opa)。您可以在 Amazon Elastic Compute Cloud (Amazon EC2) 代理程式以及容器化服務上設定 OPA 代理程式，例如 Amazon Elastic Container Service (Amazon ECS) 和 Amazon Elastic Kubernetes Service (Amazon EKS)。

**問：我可以使用哪些作業系統和服務 AWS****來執行 Verified Permissions？**

**A.**Verified Permissions 是 AWS 受管服務，由 操作 AWS。使用 Verified Permissions 不需要額外的組態、安裝或託管，但向服務提出授權請求的功能除外。

**問：我可以在 上執行 OPA AWS Lambda嗎？**

**答：**您可以在 Lambda 上執行 OPA 做為 Go 程式庫。如需有關如何為 [API Gateway Lambda 授權方](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html)執行此操作的詳細資訊，請參閱 AWS 部落格文章[使用開放政策代理程式建立自訂 Lambda 授權方](https://aws.amazon.com/blogs/opensource/creating-a-custom-lambda-authorizer-using-open-policy-agent/)。

**問：我應該如何決定分散式 PDP 和集中式 PDP 方法？**

**答：**這取決於您的應用程式。這很可能會根據分散式和集中式 PDP 模型之間的延遲差異來決定。我們建議您建置概念驗證，並測試應用程式的效能，以驗證您的解決方案。

**問：除了 APIs 之外，我可以使用 OPA 處理使用案例嗎？**

**A.**是。OPA 文件提供 [Kubernetes](https://www.openpolicyagent.org/docs/kubernetes)、[Envoy](https://www.openpolicyagent.org/docs/envoy)、[Docker](https://www.openpolicyagent.org/docs/latest/docker-authorization/)、[Kafka](https://www.openpolicyagent.org/docs/latest/kafka-authorization/)、[SSH 和 sudo](https://www.openpolicyagent.org/docs/latest/ssh-and-sudo-authorization/) 以及 [Terraform](https://www.openpolicyagent.org/docs/latest/terraform/) 的範例。此外，OPA 可以使用 Rego 部分規則將任意 JSON 回應傳回至查詢。根據查詢，OPA 可用於使用 JSON 回應來回答許多問題。

**問：除了 API 之外，我可以針對使用案例使用 Verified Permissions** ** APIs 嗎？**

**A.**是。Verified Permissions 可為收到的任何授權請求提供 `ALLOW`或 `DENY`回應。Verified Permissions 可為需要授權決策的任何應用程式或服務提供授權回應。

**問：我可以使用 IAM 政策語言在已驗證許可中建立政策嗎？**

**答：**否。您必須使用 Cedar 政策語言來撰寫政策。Cedar 旨在支援客戶應用程式資源的許可管理，而 AWS Identity and Access Management (IAM) 政策語言則發展為支援 AWS 資源的存取控制。