Description
API keys should only be used for services when other authentication methods are unavailable. Unused keys with their permissions intact may still exist within a project. Keys are insecure because they can be viewed publicly, such as from within a browser, or accessed on a device where the key resides. It is recommended to use the standard authentication flow instead.
Rationaleβ
To avoid the security risk of using API keys, it is recommended to use the standard authentication flow instead. Security risks involved in using API keys include:
- 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 want to audit, go to
APIs & Services\Credentials. - In the section
API Keys, no API key should be listed.
From Google Cloud CLIβ
-
Run the following from within the project you want 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.