Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

external audit proto spec v2 #33022

Merged
merged 1 commit into from
Oct 11, 2023
Merged

Conversation

tobiaszheller
Copy link
Contributor

This PR adds proto spec for service that will be used in external audit/byob feature.
Service will be implemented in enterprise repo.

Documentation is added as part of proto.

Part of: https://github.com/gravitational/cloud/issues/4661
RFD: https://github.com/gravitational/cloud/blob/rfd/77-bring-your-own-bucket/rfd/0077-Bring-your-own-bucket.md

This is 2nd attempt to proto definition based on comments from: #32833 (comment)
and internal conversations.
In short, there are 3 good options to implement it:

  1. Multiple external_cloud_audit and single cluster_external_cloud_audit which references by name
  2. Single external_cloud_audit and single cluster_external_cloud_audit which references by name
  3. Single external_cloud_audit and single cluster_external_cloud_audit which is copy of external_cloud_audit.
    This PR implements option 3.

Original: #31564

Copy link
Contributor

@nklaassen nklaassen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, I just suggest renaming the RPCs that deal with the draft configuration to make that more clear.

@tobiaszheller tobiaszheller force-pushed the tobiaszheller/byob-protov2 branch 2 times, most recently from a52fa50 to 699bfd9 Compare October 6, 2023 07:34
@tobiaszheller tobiaszheller force-pushed the tobiaszheller/byob-protov2 branch from 699bfd9 to 2383374 Compare October 6, 2023 07:48
@tobiaszheller tobiaszheller force-pushed the tobiaszheller/byob-protov2 branch from 3353e11 to 549ff3f Compare October 11, 2023 08:03
@tobiaszheller tobiaszheller added this pull request to the merge queue Oct 11, 2023
Merged via the queue into master with commit 435e7d4 Oct 11, 2023
@tobiaszheller tobiaszheller deleted the tobiaszheller/byob-protov2 branch October 11, 2023 09:23
@public-teleport-github-review-bot

@tobiaszheller See the table below for backport results.

Branch Result
branch/v14 Create PR

github-merge-queue bot pushed a commit that referenced this pull request Nov 20, 2023
* [v14] external cloud audit proto

Backport #33022 to branch/v14

* [v14] external_cloud_audit: add resource layer

Backport #32833 to branch/v14

* [v14] feat: IAM permissions for BYOBucket

Backport #33416 to branch/v14

This commit adds a one-off teleport command that configures the
necessary IAM permissions for the upcoming External Cloud Audit
(BYOBucket) feature.

An example command invocation looks like:
```
$ teleport integration configure externalcloudaudit-iam \
  --aws-region us-west-2 --role nic-byob-test --policy nic-byob \
  --session-recordings s3://nic-byob/sess-rec-v2 \
  --audit-events s3://nic-byob/events --athena-results s3://nic-byob/results \
  --athena-workgroup primary --glue-database nic_byob --glue-table nic_byob_table
```

In normal usage this command will be generated for the user so that they
can just copy a command from the Web UI and run it in AWS CloudShell.

The permissions generated here are based on
https://github.com/gravitational/cloud/blob/rfd/77-bring-your-own-bucket/rfd/0077-Bring-your-own-bucket.md,
but only include the permissions necessary for using the feature at
runtime and not any permissions necessary to bootstrap/create the
resources.

* [v14] feat: generate randomized ExternalCloudAudit config

Backport #33555 to branch/v14

* [v14] BYOB: Bootstrap Athena Infrastructure

Backport #33272 to branch/v14

* [v14] feat: cached auto-refreshing AWS credentials for BYOBucket

Backport #34380 to branch/v14

This commit implements a "Configurator" for the BYOBucket feature that
provides AWS credentials that can be used by the v1 or v2 AWS SDKs for
Go.
These credentials are generated via an AWS OIDC integration: auth signs
a JWT and we swap that with AWS STS for AWS credentials.
It also reports whether or not the BYOB feature `IsUsed()` currently,
and provides access to the current cluster ExternalCloudAudit spec.

This looks a bit weird because of a chicken-egg problem where the audit
log must be set up before the auth server can be created, but the auth
server must be created to provide the OIDC signing facilities.
This will be more clear in following PRs.

* [v14] fix: correct IAM policies for BYOB

Backport #34484 to branch/v14

This commit fixes the IAM policies generated by the oneoff
externalcloudaudit bootstrap command based on manual testing, and brings
them more in line with the original RFD
https://github.com/gravitational/cloud/blob/master/rfd/0077-Bring-your-own-bucket.md

* [v14] feat: enable External Cloud Audit backend

Backport #34606 to branch/v14

This commit enables the External Cloud Audit (BYOBucket) feature with a
fully functional backend by setting up the Athena and S3 audit
components with the right AWS configurations and resource locations.

* [v14] Add ExternalCloudAudit permissions to user context ACL

Backport #34289 to branch/v14

---------

Co-authored-by: Tobiasz Heller <14020794+tobiaszheller@users.noreply.github.com>
Co-authored-by: Logan Davis <38335829+logand22@users.noreply.github.com>
Co-authored-by: matheus <matheus.battirola@goteleport.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants