Description
API Keys should only be used for services in cases where other authentication methods are unavailable. Unused keys with their permissions in tact may still exist within a project. Keys are insecure because they can be viewed publicly, such as from within a browser, or they can be accessed on a device where the key resides. It is recommended to use standard authentication flow instead.
Rationaleβ
To avoid the security risk in using API keys, it is recommended to use standard authentication flow instead. Security risks involved in using API-Keys appear below:
β’ API keys are simple encrypted strings
β’ API keys do not identify the user or the application making the API request
β’ API keys are typically accessible to clients, making it easy to discover and steal an API key
Impactβ
Deleting an API key will break dependent applications (if any).
Auditβ
From Consoleβ
- From within the Project you wish to audit Go to
APIs & Services\Credentials
. - In the section
API Keys
, no API key should be listed.
From Google Cloud Command Lineβ
-
Run the following from within the project you wish to audit
gcloud services api-keys list --filter.
-
There should be no keys listed at the project level.
Default Valueβ
By default, API keys are not created for a project.
Referencesβ
- https://cloud.google.com/docs/authentication/api-keys
- https://cloud.google.com/sdk/gcloud/reference/services/api-keys/list
- https://cloud.google.com/docs/authentication
- https://cloud.google.com/sdk/gcloud/reference/alpha/services/api-keys/delete
Additional Informationβ
Google recommends using the standard authentication flow instead of using API keys. However, there are limited cases where API keys are more appropriate. For example, if there is a mobile application that needs to use the Google Cloud Translation API, but doesn't otherwise need a backend server, API keys are the simplest way to authenticate to that API.
If a business requires API keys to be used, then the API keys should be secured properly.