Update cross-cluster API key API examples
Stack
The update cross-cluster API key API updates the attributes of an existing cross-cluster API key, which is used for API key based remote cluster access. This page shows you examples of using this API.
If you create a cross-cluster API key as follows:
POST /_security/cross_cluster/api_key
{ "name": "my-cross-cluster-api-key", "access": { "search": [ { "names": ["logs*"] } ] }, "metadata": { "application": "search" } }
A successful call returns a JSON structure that provides API key information. For example:
{ "id": "VuaCfGcBCdbkQm-e5aOx", "name": "my-cross-cluster-api-key", "api_key": "ui2lp2axTNmsyakw9tvNnw", "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" }
To retrieve key information about the API key, including the exact role descriptor, use the Get API key API.
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx
A successful call returns a JSON structure that contains the information of the API key:
{ "api_keys": [ { "id": "VuaCfGcBCdbkQm-e5aOx", "name": "my-cross-cluster-api-key", "type": "cross_cluster", "creation": 1548550550158, "expiration": null, "invalidated": false, "username": "myuser", "realm": "native1", "metadata": { "application": "search" }, "role_descriptors": { "cross_cluster": { "cluster": [ "cross_cluster_search" ], "indices": [ { "names": [ "logs*" ], "privileges": [ "read", "read_cross_cluster", "view_index_metadata" ], "allow_restricted_indices": false } ], "applications": [ ], "run_as": [ ], "metadata": { }, "transient_metadata": { "enabled": true } } }, "access": { "search": [ { "names": [ "logs*" ], "allow_restricted_indices": false } ] } } ] }
- Role descriptor corresponding to the specified
access
scope at creation time. In this example, it grants cross cluster search permission for thelogs*
index pattern. - The
access
corresponds to the value specified at API key creation time.
The following example updates the API key created above, assigning it new access scope and metadata:
PUT /_security/cross_cluster/api_key/VuaCfGcBCdbkQm-e5aOx
{ "access": { "replication": [ { "names": ["archive"] } ] }, "metadata": { "application": "replication" } }
A successful call returns a JSON structure indicating that the API key was updated:
{ "updated": true }
The API key's permissions after the update can be inspected again with the Get API key API and it will be:
{ "api_keys": [ { "id": "VuaCfGcBCdbkQm-e5aOx", "name": "my-cross-cluster-api-key", "type": "cross_cluster", "creation": 1548550550158, "expiration": null, "invalidated": false, "username": "myuser", "realm": "native1", "metadata": { "application": "replication" }, "role_descriptors": { "cross_cluster": { "cluster": [ "cross_cluster_replication" ], "indices": [ { "names": [ "archive*" ], "privileges": [ "cross_cluster_replication", "cross_cluster_replication_internal" ], "allow_restricted_indices": false } ], "applications": [ ], "run_as": [ ], "metadata": { }, "transient_metadata": { "enabled": true } } }, "access": { "replication": [ { "names": [ "archive*" ], "allow_restricted_indices": false } ] } } ] }
- Role descriptor is updated to be the
access
scope specified at update time. In this example, it is updated to grant the cross cluster replication permission for thearchive*
index pattern. - The
access
corresponds to the value specified at API key update time.