Metadata-Version: 2.1
Name: gsuite-exporter
Version: 0.0.3
Summary: GSuite Admin API Exporter
Home-page: UNKNOWN
Author: Google Inc.
Author-email: ocervello@google.com
License: UNKNOWN
Keywords: gsuite exporter stackdriver
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Requires-Python: >=2.7
Description-Content-Type: text/markdown
Requires-Dist: google-api-python-client
Requires-Dist: python-dateutil
Requires-Dist: requests

# GSuite Exporter

This package handles exporting data from the GSuite Admin APIs to a destination.

The following GSuite Admin APIs are currently supported:

- `reports_v1` - [Reports API](https://developers.google.com/admin-sdk/reports/v1/get-start/getting-started)
    - `admin` - [Admin activity reports](https://developers.google.com/admin-sdk/reports/v1/guides/manage-audit-admin.html)
    - `drive` - [Google Drive activity reports](https://developers.google.com/admin-sdk/reports/v1/guides/manage-audit-drive.html)
    - `login` - [Login activity reports](https://developers.google.com/admin-sdk/reports/v1/guides/manage-audit-login.html)
    - `mobile` - [Mobile activity reports](https://developers.google.com/admin-sdk/reports/v1/guides/manage-audit-mobile.html)
    - `token` - [Authorization Token activity reports](https://developers.google.com/admin-sdk/reports/v1/guides/manage-audit-tokens.html)

The following destinations are currently supported:
- [Stackdriver Logging](https://cloud.google.com/logging/docs/)

## Requirements
* A GSuite Admin account
* A service account with:
  * [GSuite domain-wide delegation](https://developers.google.com/admin-sdk/reports/v1/guides/delegation) enabled.
  * The IAM role `roles/iam.tokenCreator` granted to the service account on the project it was created in.
* On the service account's project:
  * Enable the `Identity and Access Management (IAM) API`.
* On the destination project:
  * Enable the `Admin Reports API`.

### Collectors
To collect data from the Admin SDK APIs, you need to grant extra permissions to your service account:
* Go to your [Admin Console](https://admin.google.com) and login with your GSuite administrator account
* Navigate to `Security > Advanced Settings > Manage API client access`
* Grant the following scopes (comma-separated) to your service account's `client_id`:
  - https://www.googleapis.com/auth/admin.reports.audit.readonly
  - https://www.googleapis.com/auth/iam

### Exporters

#### Stackdriver Logging
To use the Stackdriver Logging exporter, you need to grant extra IAM roles to your service account:
* `roles/logging.viewer` on the destination project
* `roles/logging.logWriter` on the destination project

## Installation
```sh
pip install gsuite-exporter
```

## Usage

The **GSuite Exporter** can be used either using the command-line interface or as a Python library.

### Using the CLI
An example sync from the Admin Reports API to Stackdriver Logging for the 'login' application looks like:
```sh
gsuite-exporter
  --credentials-path='/path/to/service/account/credentials.json'
  --admin-user='<your_gsuite_admin>@<your_domain>'
  --api='report_v1'
  --applications='login drive token'
  --project-id='<logging_project>'
  --exporter='stackdriver_exporter.StackdriverExporter'
```

The `credentials_path` variable is optional and you can use [Application Default Credentials](https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application) instead.

### Using as a library

An example sync from the Admin Reports API to Stackdriver Logging looks like:

```python
from gsuite_exporter.cli import sync_all

sync_all(
    credentials_path=/path/to/service/account/credentials.json,
    admin_user='<user>@<domain>',
    api='reports_v1',
    applications=['login', 'drive', 'token'],
    project_id='<project-id>',
    exporter_class='stackdriver_exporter.StackdriverExporter'
)
```

More examples are available using the library functions under the [examples/](./examples/) directory.


