applies_to | mapped_pages | ||
---|---|---|---|
|
In serverless projects, the following types of API keys exist:
- Personal API keys, that you can create to allow external services to access your serverless project on behalf of a user.
- Managed API keys, created and managed by {{kib}} to correctly run background tasks.
You can manage your keys in {{project-settings}} → {{manage-app}} → {{api-keys-app}}:
:::{image} /deploy-manage/images/serverless-api-key-management.png :alt: API keys UI :screenshot: :::
In {{api-keys-app}}, click Create API key:
:::{image} /deploy-manage/images/serverless-create-personal-api-key.png :alt: Create API key UI :screenshot: :width: 50% :::
Once created, you can copy the encoded API key and use it to send requests to the {{es}} HTTP API. For example:
curl "${ES_URL}" \
-H "Authorization: ApiKey ${API_KEY}"
::::{important} API keys are intended for programmatic access. Don’t use API keys to authenticate access using a web browser.
::::
When you create or update an API key, use Restrict privileges to limit the permissions. Define the permissions using a JSON role_descriptors
object, where you specify one or more roles and the associated privileges.
For example, the following role_descriptors
object defines a books-read-only
role that limits the API key to read
privileges on the books
index.
{
"books-read-only": {
"cluster": [],
"indices": [
{
"names": ["books"],
"privileges": ["read"]
}
],
"applications": [],
"run_as": [],
"metadata": {},
"transient_metadata": {
"enabled": true
}
}
}
For the role_descriptors
object schema, check out the /_security/api_key
endpoint docs. For supported privileges, check Security privileges.
In {{api-keys-app}}, click on the name of the key. You can update only Restrict privileges and Include metadata.
The {{api-keys-app}} app lists your API keys, including the name, date created, and status. When API keys expire, the status changes from Active
to Expired
.
You can delete API keys individually or in bulk.