我不希望 Amazon Cognito 使用者在使用 OpenSearch Dashboards 時,對使用者集區擁有完整存取權。
解決方法
未啟用精細存取控制的網域
如果您的 OpenSearch 網域未啟用精細存取控制,請使用 OpenSearch 叢集的網域存取政策來限制存取。此政策會為您的 Cognito 使用者授予唯讀存取權。將 ESHttpGet 權限設定給與 Cognito 登入相關聯的角色。
包含 ESHttpGet 權限的網域存取政策範例:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account-id:role/Cognito_identity-pool-name Auth_Role"
},
"Action": "es:ESHttpGet",
"Resource": "arn:aws:es:region:account-id:domain/opensearch-domain-name/"
}
]
}
**注意:**將 account-id 替換為您的 AWS 帳戶 ID,並將 identity-pool-name 替換為您的 Cognito 身分池名稱。此外,將 region 替換為您的 AWS 區域,並將 opensearch-domain-name 替換為您的 OpenSearch 網域名稱。
如需更多資訊,請參閱設定網域以使用 Amazon Cognito 驗證。
套用政策後,請測試該政策,然後將已簽署請求傳送至您的網域,以確認您在網域上只能執行 GET 操作。
已啟用精細存取控制的 OpenSearch 叢集
請完成以下步驟:
-
開啟 Cognito console (Cognito 主控台)。
-
選取您的使用者集區,然後選擇 Create user (建立使用者)。
-
使用類似 limited-user 的名稱建立使用者。
-
為 limited-user建立 AWS Identity and Access Management (IAM) 角色,例如 LimitedUserRole。以主要使用者身分,使用 IAM 角色為特定使用者指派有限存取權。
-
將下列信任政策連接至 LimitedUserRole:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com :aud": "identity-pool-id"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com :amr": "authenticated"
}
}
}
]
}
**注意:**將 identity-pool-id 替換為您的 Cognito 身分池 ID。
-
連接下列自訂內嵌政策,以將 OpenSearch 網域的唯讀權限授予該角色:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowOpenSearchReadAccess",
"Effect": "Allow",
"Action": [
"es:ESHttpGet"
],
"Resource": "arn:aws:es:region:account-id:domain/"
}
]
}
**注意:**將 region 替換為您的區域,並將 account-id 替換為您的帳戶 ID。
-
建立群組並使用類似 limited-user-group 的名稱,然後將 LimitedUserRole IAM 角色指派給群組。
-
選擇 limited-user-group,然後將 limited-user 和其他使用者新增至群組。
將 limited-user 對應到 OpenSearch Dashboards 上的角色
- 以主要使用者身分登入 OpenSearch Dashboards。
- 選擇 Security (安全性)。
- 選擇 Roles (角色),然後選取您的角色。或者,建立新角色。如需更多資訊,請參閱 OpenSearch 網站上的建立角色。
**注意:**您也可以使用預先定義的角色 readall_and_monitor 或 readall。如需更多資訊,請參閱 OpenSearch 網站上的預先定義角色。
- 將角色對應至 limited-user。
- 以 limited-user 身分登入。
**注意:**您無法在 OpenSearch Dashboards 上執行寫入操作。