-
Notifications
You must be signed in to change notification settings - Fork 300
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
Support for datasets in authenticated S3-compatible private buckets #507
Comments
The place to add support would be here: However, there are a few issues to consider:
|
Hi @jbms -- it seems that when I click https://github.com/google/neuroglancer/blob/master/src/neuroglancer/util/special_protocol_request.ts -- I get a 404 -- any chance you know if the code moved? Also, nice to meet you 👋 I work over at MIT with @kabilar and others on the LINC Project: https://connects.mgh.harvard.edu/. We are hoping to leverage neuroglancer in at least the short-term for viewing private zarrs stored in S3 |
Updated URL is here: https://github.com/google/neuroglancer/blob/master/src/util/special_protocol_request.ts The If you decide on the approach you will use for getting the AWS credentials in Neuroglancer I can offer more advice. |
Any advice regarding AWS creds<>auth would be great, as all our assets are all hosted via S3 -- thanks in advance Also, just tagging a few others involved in the project here for visibility @ayendiki @balbasty @MikeSchutzman |
The options that I've thought of are in my previous comment: #507 (comment) The simplest thing to implement would be to use the syntax: s3+awskey:<ACCESS_KEY>:<SECRET_KEY>://bucket/path Additionally you could support Amazon Cogito for credentials --- that would probably be preferable in most cases but would be a bit more complicated. You can probably use this library to handle the actual requests to s3: https://www.npmjs.com/package/@aws-sdk/client-s3 There is also this example of using Amazon Cogito: |
Thanks @jbms -- could you just clarify the Will look further into Cognito. @unidesigner did you ever arrive at a solution? I am looking to proof-of-concept something, but curious to understand how you approached this. Thanks all in advance |
Hi @aaronkanzer - unfortunately, I have not had time to prioritize work on this. Are you working on a proof-of-concept implementation? I'd suggest before adding complexity with Cognito to support the scheme proposed by @jbms to provide access_key and secret_key in the URL. The secret_key would indeed be provided in plain text applying Security by Obscurity. |
@unidesigner Yes, we are working on a proof-of-concept. After some research, we are implementing presigned cookies via AWS CloudFront. We have a CloudFront Distribution that then sits in front of our S3 bucket, and serve Once we have a cleaned-up e2e solution, I'm happy to share some diagrams or example code -- would also be curious to get @jbms thoughts too, and see if we can extend support directly into Cc @kabilar |
@unidesigner Realizing I never followed up here -- did you come to an implementation here? We've been using our CloudFront solution for quite some time now with success -- let me know, happy to transfer any knowledge if helpful. |
Hi @aaronkanzer - no, not yet unfortunately, but it is still something I'd want to look into given time. I'd be interested in understanding your CloudFront solution! Can you post it here or write me an email [email protected]. Thank you! |
@unidesigner -- sorry for the delay here! I've sent you an email via [email protected] to hopefully meet! |
I'm also very interested in this! @aaronkanzer would you have time to email me at [email protected], or is there code / documentation I could look at? |
I'm interested as well. |
Hi all, thanks for your interest. The high-level overview is documented here. Would also be happy to meet. Here is a scheduling link for Aaron and I. |
I am looking into supporting authenticated S3-Compatible file protocol where one could specify
accessKey
andsecretKey
to view data in a private bucket.I imagine to be able to specify a source like this:
zarr://https://s3.us-west-004.amazonaws.com/bucketname/dataset?s3_access_key_id=accessKey&s3_secret_access_key=secretKey
which would initialize an
S3Client
from the aws-sdk/client-s3 SDK and make the appropriate request to get theinfo
file and data chunks.Where would I get started to implement this in Neuroglancer?
The text was updated successfully, but these errors were encountered: