這些題目為學習目的而獨立製作,並非 AWS 官方考題、實際考題、外流題或考題庫。
SAA-033
要為行動應用程式的終端使用者實作註冊、登入,以及與 Google 等外部身分提供者的整合。認證後,也希望將相同的認證結果用於以 Amazon API Gateway 公開的 REST API 的存取控制。下列哪項架構最為合適?
選項
解析與正確答案
閱讀解析與正確答案(劇透:建議先自行作答)
正確答案:D. 以 Amazon Cognito 使用者集區管理使用者,並以 API Gateway 的 Cognito 授權方驗證所發行的權杖
解析
應用程式的終端使用者認證適合採用 Amazon Cognito 使用者集區。其以受管方式提供註冊、登入、MFA 與外部身分提供者整合,所發行的 ID 權杖與存取權杖可直接由 API Gateway 的 Cognito 授權方驗證。
各選項解析
A. 為每位終端使用者建立 IAM 使用者,在應用程式中嵌入存取金鑰並以 SigV4 簽章呼叫 API
IAM 為供操作 AWS 資源的主體(公司內部人員、應用程式)使用的機制,並非用來將應用程式的終端使用者逐一以 IAM 使用者管理的設計。將長期存取金鑰嵌入應用程式這點也不安全。
B. 以 AWS IAM Identity Center 管理終端使用者,並將 SAML 判斷提示串接至應用程式
IAM Identity Center 適用於員工等勞動力的單一登入,並未設想一般消費者的自助式註冊。
C. 將使用者名稱與密碼的雜湊值儲存於 AWS Secrets Manager,並以 Lambda 自行實作認證處理
自行實作認證處理,等同於必須自製密碼保管、MFA、權杖失效、外部 IdP 整合等全部功能。Secrets Manager 的用途為保管應用程式使用的憑證,並非使用者目錄。
D. 以 Amazon Cognito 使用者集區管理使用者,並以 API Gateway 的 Cognito 授權方驗證所發行的權杖
正解。由使用者集區擔任使用者目錄與權杖發行,並由 API Gateway 的 Cognito 授權方負責權杖驗證,因此無須自行實作認證處理。
實際使用情境
Amazon Cognito 由「使用者集區」與「身分集區(聯合身分)」兩項功能構成。使用者集區為應用程式的使用者目錄,以受管方式提供註冊、登入、密碼政策、MFA、電子郵件/簡訊驗證,以及與 Google、Apple 等外部 IdP 的整合,並於認證成功時發行 OpenID Connect 的 ID 權杖、存取權杖與更新權杖。身分集區則是以這些權杖(或其他 IdP 的權杖)換發臨時 AWS 憑證的機制,適用於希望從應用程式直接呼叫 S3 或 DynamoDB 的情境。 設計上依「想要認證誰」來決定如何區分使用。應用程式的一般使用者採用使用者集區,操作 AWS 資源的公司內部人員或 CI/CD 採用 IAM,員工的單一登入則採用 IAM Identity Center。若與 API Gateway 搭配,在 REST API 設定 Cognito 授權方後,權杖的簽章、有效期限、aud/iss 皆由受管方式驗證,因此不需要自製 Lambda 授權方。僅在需要更細緻的控制(依範圍或自訂宣告分歧)時,才併用 Lambda 授權方。 SAA-C03 中,「行動應用程式 / Web 應用程式的使用者認證」「社群登入」「註冊功能」等需求下,Amazon Cognito 即為正解。為每位終端使用者建立 IAM 使用者是常見的誤答,但 IAM 使用者有每個帳戶的數量上限,且本來就不是為終端使用者管理而設計的功能,因此作為設計並不適切。與 IAM Identity Center(面向勞動力)的職責差異也很容易出題。