保護您的專案

    本教學將示範如何保護您的 Meilisearch 專案。您將了解如何管理您的主金鑰,以及如何使用 API 金鑰安全地將請求傳送至 Meilisearch API。

    建立主金鑰

    主金鑰是保護您的 Meilisearch 專案的第一個也是最重要的步驟。

    在 Meilisearch Cloud 中建立主金鑰

    Meilisearch Cloud 會自動為每個專案產生主金鑰。這表示 Meilisearch Cloud 專案預設是安全的。

    您可以瀏覽您的專案總覽來查看您的主金鑰

    An interface element named "API keys" showing three obscured keys: "Master key", "Default Search API Key", and "Default Admin API Key"

    在自我託管的實例中建立主金鑰

    若要保護您的自我託管實例,請使用 --master-key 命令列選項或 MEILI_MASTER_KEY 環境變數重新啟動它

    ./meilisearch --master-key="MASTER_KEY"
    
    產生主金鑰的工具

    主金鑰的長度必須至少為 16 個位元組,且由有效的 UTF-8 字元組成。請使用下列其中一個工具來產生安全的主金鑰

    Meilisearch 將照常啟動。啟動日誌應包含一則訊息,告知您該實例已受到保護

    A master key has been set. Requests to Meilisearch won't be authorized unless you provide an authentication key.
    

    如果您提供不安全的金鑰,Meilisearch 將顯示警告,並建議您使用自動產生的替代方案重新啟動您的實例

    We generated a new secure master key for you (you can safely use this token):
    
    >> --master-key E8H-DDQUGhZhFWhTq263Ohd80UErhFmLIFnlQK81oeQ <<
    
    Restart Meilisearch with the argument above to use this new and secure master key.
    

    取得 API 金鑰

    當您的專案受到保護時,Meilisearch 會自動產生兩個 API 金鑰:預設搜尋 API 金鑰預設管理 API 金鑰。API 金鑰是設計用於安全地與 Meilisearch API 通訊的授權權杖。

    在 Meilisearch Cloud 中取得 API 金鑰

    在您先前找到主金鑰的相同區段中尋找您的 API 金鑰

    An interface element named "API keys" showing three obscured keys: "Master key", "Default Search API Key", and "Default Admin API Key"

    在自我託管的實例中取得 API 金鑰

    使用您的主金鑰查詢 /keys 端點以檢視您實例中的所有 API 金鑰

    curl -X GET 'https://127.0.0.1:7700/keys' \
    -H 'Authorization: Bearer MASTER_KEY'
    請勿將主金鑰用於 API 請求

    僅使用主金鑰來管理 API 金鑰。切勿使用主金鑰執行搜尋或其他常見操作。

    Meilisearch 的回應將至少包含兩個預設 API 金鑰

    {
      "results": [
        {
          "name": "Default Search API Key",
          "description": "Use it to search from the frontend",
          "key": "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33",
          "uid": "123-345-456-987-abc",
          "actions": [
            "search"
          ],
          "indexes": [
            "*"
          ],
          "expiresAt": null,
          "createdAt": "2024-01-25T16:19:53.949636Z",
          "updatedAt": "2024-01-25T16:19:53.949636Z"
        },
        {
          "name": "Default Admin API Key",
          "description": "Use it for anything that is not a search operation. Caution! Do not expose it on a public frontend",
          "key": "62cdb7020ff920e5aa642c3d4066950dd1f01f4d",
          "uid": "123-345-456-987-abc",
          "actions": [
            "*"
          ],
          "indexes": [
            "*"
          ],
          "expiresAt": null,
          "createdAt": "2024-01-25T16:19:53.94816Z",
          "updatedAt": "2024-01-25T16:19:53.94816Z"
        }
      ],}
    

    將安全的 API 請求傳送至 Meilisearch

    現在您有了 API 金鑰,您可以安全地查詢 Meilisearch API。使用 Authorization 持有者權杖標頭將 API 金鑰新增至請求。

    使用 預設管理 API 金鑰 執行敏感操作,例如建立新的索引

    curl \
      -X POST 'https://127.0.0.1:7700/indexes' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer DEFAULT_ADMIN_API_KEY' \
      --data-binary '{
        "uid": "medical_records",
        "primaryKey": "id"
      }'

    然後使用 預設搜尋 API 金鑰 在您剛建立的索引中執行搜尋操作

    curl \
      -X POST 'https://127.0.0.1:7700/indexes/medical_records/search' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer DEFAULT_SEARCH_API_KEY' \
      --data-binary '{ "q": "appointments" }'

    結論

    您已透過設定主金鑰成功保護了 Meilisearch。您接著了解如何透過將 API 金鑰新增至請求的授權標頭來存取 Meilisearch API。