Skip to content

Commit 5dce6d6

Browse files
authored
docs: explain how to create credentials from dict (#109)
* Explain how to create service account from dictionary. * Add newer runtimes (Cloud Functions, Run) * Clarify that "App Engine credentials" are only for App Engine Standard Python 2.7 * Link out to docs explaining service account key file creation * Link out to full list of scopes for APIs For googleapis/google-cloud-python#7291
1 parent 9ac3708 commit 5dce6d6

File tree

1 file changed

+40
-93
lines changed

1 file changed

+40
-93
lines changed

docs/auth.rst

+40-93
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ Authentication
66
Overview
77
========
88

9-
* **If you're running in Compute Engine or App Engine**,
9+
For a language agnostic overview of authentication on Google Cloud, see `Authentication Overview`_.
10+
11+
.. _Authentication Overview: https://cloud.google.com/docs/authentication
12+
13+
* **If you're running in a Google Virtual Machine Environment (Compute Engine, App Engine, Cloud Run, Cloud Functions)**,
1014
authentication should "just work".
1115

1216
* **If you're developing locally**,
@@ -41,7 +45,7 @@ Overview
4145
4246
$ export GOOGLE_APPLICATION_CREDENTIALS="/path/to/keyfile.json"
4347
44-
.. _service account: https://cloud.google.com/storage/docs/authentication#generating-a-private-key
48+
.. _service account: https://cloud.google.com/iam/docs/creating-managing-service-accounts#creating
4549

4650
Client-Provided Authentication
4751
==============================
@@ -97,11 +101,17 @@ After creation, you can pass it directly to a :class:`Client <google.cloud.clien
97101
.. tip::
98102
To create a credentials object, follow the `google-auth-guide`_.
99103

100-
.. _google-auth-guide: https://google-auth.readthedocs.io/en/latest/user-guide.html#service-account-private-key-files
104+
.. _google-auth-guide: https://googleapis.dev/python/google-auth/latest/user-guide.html#service-account-private-key-files
105+
101106

107+
Google App Engine Standard First Generation Environment
108+
-------------------------------------------------------
109+
110+
These credentials are used only in the legacy Python 2.7
111+
`First Generation Standard Environment`_. All other App Engine
112+
runtimes use Compute Engine credentials.
102113

103-
Google App Engine Environment
104-
-----------------------------
114+
.. _First Generation Standard Environment: https://cloud.google.com/appengine/docs/standard/runtimes
105115

106116
To create
107117
:class:`credentials <google.auth.app_engine.Credentials>`
@@ -115,9 +125,12 @@ just for Google App Engine:
115125
Google Compute Engine Environment
116126
---------------------------------
117127

128+
These credentials are used in Google Virtual Machine Environments.
129+
This includes most App Engine runtimes, Compute Engine, Cloud
130+
Functions, and Cloud Run.
131+
118132
To create
119-
:class:`credentials <google.auth.compute_engine.Credentials>`
120-
just for Google Compute Engine:
133+
:class:`credentials <google.auth.compute_engine.Credentials>`:
121134

122135
.. code:: python
123136
@@ -129,16 +142,24 @@ Service Accounts
129142

130143
A `service account`_ is stored in a JSON keyfile.
131144

132-
The
133-
:meth:`from_service_account_json() <google.cloud.client.Client.from_service_account_json>`
134-
factory can be used to create a :class:`Client <google.cloud.client.Client>` with
135-
service account credentials.
145+
.. code:: python
146+
147+
from google.oauth2 import service_account
148+
149+
credentials = service_account.Credentials.from_service_account_file(
150+
'/path/to/key.json')
136151
137-
For example, with a JSON keyfile:
152+
A JSON string or dictionary:
138153

139154
.. code:: python
140155
141-
client = Client.from_service_account_json('/path/to/keyfile.json')
156+
import json
157+
158+
from google.oauth2 import service_account
159+
160+
json_account_info = json.loads(...) # convert JSON to dictionary
161+
credentials = service_account.Credentials.from_service_account_info(
162+
json_account_info)
142163
143164
.. tip::
144165

@@ -160,7 +181,7 @@ possible to call Google Cloud APIs with a user account via
160181

161182
A production application should **use a service account**,
162183
but you may wish to use your own personal user account when first
163-
getting started with the ``google-cloud-python`` library.
184+
getting started with the ``google-cloud-*`` library.
164185

165186
The simplest way to use credentials from a user account is via
166187
Application Default Credentials using ``gcloud auth login``
@@ -183,67 +204,10 @@ Troubleshooting
183204
Setting up a Service Account
184205
----------------------------
185206

186-
If your application is not running on Google Compute Engine,
187-
you need a `Google Developers Service Account`_.
188-
189-
#. Visit the `Google Developers Console`_.
190-
191-
#. Create a new project or click on an existing project.
192-
193-
#. Navigate to **APIs & auth** > **APIs** and enable the APIs
194-
that your application requires.
195-
196-
.. raw:: html
197-
198-
<img src="https://raw.githubusercontent.com/GoogleCloudPlatform/google-cloud-common/master/authentication/enable-apis.png"/>
199-
200-
.. note::
201-
202-
You may need to enable billing in order to use these services.
203-
204-
* **BigQuery**
205-
206-
* BigQuery API
207-
208-
* **Datastore**
209-
210-
* Google Cloud Datastore API
207+
If your application is not running on a Google Virtual Machine Environment,
208+
you need a Service Account. See `Creating a Service Account`_.
211209

212-
* **Pub/Sub**
213-
214-
* Google Cloud Pub/Sub
215-
216-
* **Storage**
217-
218-
* Google Cloud Storage
219-
* Google Cloud Storage JSON API
220-
221-
#. Navigate to **APIs & auth** > **Credentials**.
222-
223-
You should see a screen like one of the following:
224-
225-
.. raw:: html
226-
227-
<img src="https://raw.githubusercontent.com/GoogleCloudPlatform/google-cloud-common/master/authentication/create-new-service-account.png">
228-
229-
.. raw:: html
230-
231-
<img src="https://raw.githubusercontent.com/GoogleCloudPlatform/google-cloud-common/master/authentication/create-new-service-account-existing-keys.png">
232-
233-
Find the "Add credentials" drop down and select "Service account" to be
234-
guided through downloading a new JSON keyfile.
235-
236-
If you want to re-use an existing service account,
237-
you can easily generate a new keyfile.
238-
Just select the account you wish to re-use,
239-
and click **Generate new JSON key**:
240-
241-
.. raw:: html
242-
243-
<img src="https://raw.githubusercontent.com/GoogleCloudPlatform/google-cloud-common/master/authentication/reuse-service-account.png">
244-
245-
.. _Google Developers Console: https://console.developers.google.com/project
246-
.. _Google Developers Service Account: https://developers.google.com/accounts/docs/OAuth2ServiceAccount
210+
.. _Creating a Service Account: https://cloud.google.com/iam/docs/creating-managing-service-accounts#creating
247211

248212
Using Google Compute Engine
249213
---------------------------
@@ -262,24 +226,7 @@ you add the correct scopes for the APIs you want to access:
262226
* ``https://www.googleapis.com/auth/cloud-platform``
263227
* ``https://www.googleapis.com/auth/cloud-platform.read-only``
264228

265-
* **BigQuery**
266-
267-
* ``https://www.googleapis.com/auth/bigquery``
268-
* ``https://www.googleapis.com/auth/bigquery.insertdata``
269-
270-
* **Datastore**
271-
272-
* ``https://www.googleapis.com/auth/datastore``
273-
* ``https://www.googleapis.com/auth/userinfo.email``
274-
275-
* **Pub/Sub**
276-
277-
* ``https://www.googleapis.com/auth/pubsub``
278-
279-
* **Storage**
280-
281-
* ``https://www.googleapis.com/auth/devstorage.full_control``
282-
* ``https://www.googleapis.com/auth/devstorage.read_only``
283-
* ``https://www.googleapis.com/auth/devstorage.read_write``
229+
For scopes for specific APIs see `OAuth 2.0 Scopes for Google APIs`_
284230

285231
.. _set up the GCE instance: https://cloud.google.com/compute/docs/authentication#using
232+
.. _OAuth 2.0 Scopes for Google APIS: https://developers.google.com/identity/protocols/oauth2/scopes

0 commit comments

Comments
 (0)