跳至內容

如何向透過 OpenSearch 存取 Amazon Cognito 使用者集區的使用者指派唯讀權限?

2 分的閱讀內容
0

我不希望 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 叢集

請完成以下步驟:

  1. 開啟 Cognito console (Cognito 主控台)。

  2. 選取您的使用者集區,然後選擇 Create user (建立使用者)。

  3. 使用類似 limited-user 的名稱建立使用者。

  4. 為 limited-user建立 AWS Identity and Access Management (IAM) 角色,例如 LimitedUserRole。以主要使用者身分,使用 IAM 角色為特定使用者指派有限存取權。

  5. 將下列信任政策連接至 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。

  6. 連接下列自訂內嵌政策,以將 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。

  7. 建立群組並使用類似 limited-user-group 的名稱,然後將 LimitedUserRole IAM 角色指派給群組。

  8. 選擇 limited-user-group,然後將 limited-user 和其他使用者新增至群組。

將 limited-user 對應到 OpenSearch Dashboards 上的角色

  1. 以主要使用者身分登入 OpenSearch Dashboards。
  2. 選擇 Security (安全性)。
  3. 選擇 Roles (角色),然後選取您的角色。或者,建立新角色。如需更多資訊,請參閱 OpenSearch 網站上的建立角色。
    **注意:**您也可以使用預先定義的角色 readall_and_monitor 或 readall。如需更多資訊,請參閱 OpenSearch 網站上的預先定義角色。
  4. 將角色對應至 limited-user。
  5. 以 limited-user 身分登入。
    **注意:**您無法在 OpenSearch Dashboards 上執行寫入操作。
AWS 官方已更新 1 年前