Skip to content

L53: gRFC for STS credentials.#145

Open
jboeuf wants to merge 4 commits intogrpc:masterfrom
jboeuf:sts_creds
Open

L53: gRFC for STS credentials.#145
jboeuf wants to merge 4 commits intogrpc:masterfrom
jboeuf:sts_creds

Conversation

@jboeuf
Copy link

@jboeuf jboeuf commented May 30, 2019

No description provided.

@a11r
Copy link
Contributor

a11r commented May 30, 2019

Thanks for the proposal.

I can see the need for StsCredentialsOptions in the internal implementation of the Auth library, but I would expect that the API we would expose to gRPC applications would be of the form :

StsCredentials mySTScreds =
StsCredentialsFromALTS(
myALTScreds);

You can imagine replacing "ALTS" with other creds types that are relevant.


## Background

[OAuth 2.0 Token Exchange](https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16) is the proposed standard for exchanging tokens, for scenarios where a client needs to access a resource that does not natively accept the credentials created by the authentication system used by the client. In these settings, enabling credential exchange can provide better security: Otherwise, the client needs to acquire a different set of credentials to access the resource, and the new credentials must be managed securely.
Copy link
Contributor

Choose a reason for hiding this comment

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

Consider using reference-style links to minimize duplication of the addresses:

[OAuth 2.0 Token Exchange][oauth-token-exchange] is the proposed...

[oauth-token-exchange]: https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16

Copy link
Author

Choose a reason for hiding this comment

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

done.

Copy link
Author

Choose a reason for hiding this comment

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

Done.


## Background

[OAuth 2.0 Token Exchange](https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16) is the proposed standard for exchanging tokens, for scenarios where a client needs to access a resource that does not natively accept the credentials created by the authentication system used by the client. In these settings, enabling credential exchange can provide better security: Otherwise, the client needs to acquire a different set of credentials to access the resource, and the new credentials must be managed securely.
Copy link
Contributor

Choose a reason for hiding this comment

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

Minor: Remove the comma in " ...exchanging tokens, for scenarios ..."?

Copy link
Author

Choose a reason for hiding this comment

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

Done.


[OAuth 2.0 Token Exchange](https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16) is the proposed standard for exchanging tokens, for scenarios where a client needs to access a resource that does not natively accept the credentials created by the authentication system used by the client. In these settings, enabling credential exchange can provide better security: Otherwise, the client needs to acquire a different set of credentials to access the resource, and the new credentials must be managed securely.

For instance, Kubernetes workloads can securely obtain credentials from their platform, and they can use these to authenticate to other entities in the cluster, or to the Kubernetes API itself. However, if a Kubernetes workload requires access to a cloud provider's API, it needs a separate set of secrets, and a way to deploy these secrets securely. With credential exchange this is no longer necessary: The workload credential can be directly exchanged for a short-lived token for the cloud API. We expect this type of interaction to become a best practice, as it eliminates a number of problematic patterns, such as secrets checked into code repos, or stored in improperly ACL'ed files.
Copy link
Contributor

Choose a reason for hiding this comment

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

Minor: Remove the comma in "cluster, or to the Kubernetes API itself."?

Copy link
Author

Choose a reason for hiding this comment

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

Done.

* Status: Draft
* Implemented in: core, cpp
* Last updated: May 20, 2019
* Discussion at: <google group thread> (filled after thread exists)
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a thread for this yet? Can you start one?

Copy link
Author

Choose a reason for hiding this comment

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


[OAuth 2.0 Token Exchange](https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16) is the proposed standard for exchanging tokens, for scenarios where a client needs to access a resource that does not natively accept the credentials created by the authentication system used by the client. In these settings, enabling credential exchange can provide better security: Otherwise, the client needs to acquire a different set of credentials to access the resource, and the new credentials must be managed securely.

For instance, Kubernetes workloads can securely obtain credentials from their platform, and they can use these to authenticate to other entities in the cluster, or to the Kubernetes API itself. However, if a Kubernetes workload requires access to a cloud provider's API, it needs a separate set of secrets, and a way to deploy these secrets securely. With credential exchange this is no longer necessary: The workload credential can be directly exchanged for a short-lived token for the cloud API. We expect this type of interaction to become a best practice, as it eliminates a number of problematic patterns, such as secrets checked into code repos, or stored in improperly ACL'ed files.
Copy link
Contributor

Choose a reason for hiding this comment

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

Minor: Remove the comma in "set of secrets, and a way to deploy"?

Copy link
Author

Choose a reason for hiding this comment

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

done.


[OAuth 2.0 Token Exchange](https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16) is the proposed standard for exchanging tokens, for scenarios where a client needs to access a resource that does not natively accept the credentials created by the authentication system used by the client. In these settings, enabling credential exchange can provide better security: Otherwise, the client needs to acquire a different set of credentials to access the resource, and the new credentials must be managed securely.

For instance, Kubernetes workloads can securely obtain credentials from their platform, and they can use these to authenticate to other entities in the cluster, or to the Kubernetes API itself. However, if a Kubernetes workload requires access to a cloud provider's API, it needs a separate set of secrets, and a way to deploy these secrets securely. With credential exchange this is no longer necessary: The workload credential can be directly exchanged for a short-lived token for the cloud API. We expect this type of interaction to become a best practice, as it eliminates a number of problematic patterns, such as secrets checked into code repos, or stored in improperly ACL'ed files.
Copy link
Contributor

Choose a reason for hiding this comment

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

Minor: Remove the comma in "code repos, or stored"?

Copy link
Author

Choose a reason for hiding this comment

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

done.

Julien Boeuf added 2 commits May 30, 2019 15:27
- Also changing the numbering to L51 as opposed to L50 since there's
already a PR with an L51 proposal.
@jboeuf jboeuf changed the title gRFC for STS credentials. L53: gRFC for STS credentials. May 30, 2019
@jboeuf
Copy link
Author

jboeuf commented May 30, 2019

@a11r Do you want me to reply on this PR or on the https://groups.google.com/forum/#!topic/grpc-io/Bam9eLaI62Q thread?

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.

5 participants