-
Notifications
You must be signed in to change notification settings - Fork 913
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
azkv: Allow specifying auth method and add cachable authentication methods #1777
base: main
Are you sure you want to change the base?
Conversation
Thanks for your contribution! I've been looking at this and thinking about this since yesterday, and I think the general idea is sound. (I'm not an Azure user though... I only use AZP for another open source project, and if you're writing that Azure is awful and slow to work with, I can guess what you mean since AZP definitely also falls into that category :D) I'm a bit hesitant on the caching parts, since that writes credentials to disk (I guess not in an encrypted form, and even if its encrypted, it likely won't be anything safe). This should definitely be explicitly mentioned in the documentation, and maybe it would be better to rename the corresponding values for I also have some smaller comments, I'm adding them here (even though they're not relevant to the general design) before I forget about them:
CC @hiddeco, since you created #1067 which removed the |
(And I think it would be better if Azure's SDK would take care of things like this in its default auth flow, or would offer another auth flow that allows the user to configure this via env variables. But if it doens't offer that, I guess we have to do it ourselves...) |
The AuthenticationRecord that I am storing in the function cacheStoreRecord is not actually a secret, it only contains information like identifiers, version, username, etc. The actual storing of the token is handled by the azure-sdk, the tokens are encrypted at rest via an os specific mechanisms: Persistent caches are encrypted at rest using a mechanism that depends on the operating system see docs
Their respective implementations can be found here:
Since the token is encrypted using a method specfic to the OS it makes it difficult to think of what to add as a contextual information in I'll submit an update in the next few days with the fixes to the comments, adding some docs and tests (if I can figure something out to get around the interactive parts). I just have one question: should I keep the environment variable |
Thanks for clarifying that! In that case, I don't mind the caching on disk.
Since no sensitive information is cached, I think it's OK to not use a prefix, or simply use
I would keep the prefix. I think using env variables without a |
…user authentication methods
I've updated the minor comments and added docs for the feature. However I am not sure what to do about the If I run
If I run
If I run
|
Azure is just really awful and slow to work with, and using sops with a azkv key to edit secrets from e.g. your laptop where you are authenticating with your user and not through a SP/MSI is nightmarishly slow.
To improve the situation this PR implements:
InteractiveBrowserCredential
andDeviceCodeCredential
which adds a very significant speedup compared toAzureCliCredential
. See below.The time to unlock a secret using sops
v3.9.4
and authenticating as a user throughazure-cli
:The time to unlock a secret using my PR and authenticating as a user with
InteractiveBrowserCredential
after the initial authentication:Related issues: #885, #1606
I'm happy to add documentation, tests or whatever is needed. I just don't want to go through the trouble before I know if the design is acceptable, and that there is a chance that this could be merged.