本教程将向您展示如何保护您的 Meilisearch 项目。您将了解如何管理主密钥以及如何使用 API 密钥安全地向 Meilisearch API 发送请求。

创建主密钥

主密钥是保护您的 Meilisearch 项目的第一步也是最重要的一步。

在 Meilisearch 云中创建主密钥

Meilisearch 云会自动为每个项目生成一个主密钥。这意味着 Meilisearch 云项目默认是安全的。 您可以通过访问项目概览来查看您的主密钥:
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 密钥:Default Search API KeyDefault Admin API Key。API 密钥是用于与 Meilisearch API 安全通信的授权令牌。

在 Meilisearch 云中获取 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 'MEILISEARCH_URL/keys' \
-H 'Authorization: Bearer MASTER_KEY'
仅使用主密钥管理 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"
    }
  ],

}

向 Meilisearch 发送安全 API 请求

现在您已经有了 API 密钥,您可以安全地查询 Meilisearch API。使用 Authorization bearer token 头将 API 密钥添加到请求中。 使用 Default Admin API Key 执行敏感操作,例如创建新索引:
curl \
  -X POST 'MEILISEARCH_URL/indexes' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer DEFAULT_ADMIN_API_KEY' \
  --data-binary '{
    "uid": "medical_records",
    "primaryKey": "id"
  }'
然后使用 Default Search API Key 在您刚刚创建的索引中执行搜索操作。
curl \
  -X POST 'MEILISEARCH_URL/indexes/medical_records/search' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer DEFAULT_SEARCH_API_KEY' \
  --data-binary '{ "q": "appointments" }'

结论

您已通过配置主密钥成功保护了 Meilisearch。然后您了解了如何通过在请求的授权头中添加 API 密钥来访问 Meilisearch API。
© . This site is unofficial and not affiliated with Meilisearch.