-
Notifications
You must be signed in to change notification settings - Fork 3
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
Critical: Implement support for Terra Google Requester Pays #42
Comments
"The correct operation may be verified by checking the returned signed URL for the query parameter userProject having the value provided on the command line." Do you want this to be added into the codebase? Is this a way to validate the project id? On branch feature/testing-dev to see new requestor pays code: x-user-project headers are passed here: If there is a way to validate the project id using the terra DRSHUB backend, then many of the issues here and discussed below can be resolved. Currently the project_id is "verified" when DRSHUB throws an error when attempting to download data without a valid project id. Not an ideal solution. New tests that address new commits can be found at: test_terra_bad_project_id
shows the scenario where an entire manifest of anVIL drs_uris are given with a invalid project id: test_terra_bad_project_id_mixed_data Would you rather that no download begins if 1 anVIL download object is attempting to download without a valid project id? test_no_project_id_specified_mixed_data |
Regarding:
Good question. Ideally, incorporating this check into the codebase would not be necessary. Yet, the signed URL is not exposed outside of the drs_downloader to test it externally. It is very important to verify somehow. Logging signed URLs is a bad practice for security reasons. A Python I am open to creative ideas for how to test this, yet time box the effort invested. If nothing else, the check could be incorporated into the codebase. It is important and quick to test. |
Regarding:
Good question. I expect there is some worthwhile validation that can be done early on. This will require some investigation, so I opened the following issue to look into it: #45 |
Currently the signed url is being logged to the drs_downloader.log file for debugging purposes. Should this be removed? Could look into adding signed url checking/validation but is there any situation where an unruly/false signed url can be generated by DRSHUB without hitting some sort of exception message beforehand? |
Thank you for looking into this |
Description
A key reason for the creation of the AnVIL drs_downloader is to ensure that AnVIL data downloads (out of the cloud, to local/institutional systems) are paid for by the user/downloader. Google Cloud Platform supports requester pays functionality, and the Terra Data Repository (TDR) has been enhanced to support the use of requester pays with AnVIL DRS signed URL data access.
Note: Azure cloud does not (yet) support requester pays functionality. Broad wants Microsoft to add support for that.
A brief list of the key changes is as follows:
drs_downloader terra --user-project
my-project-idx-user-project
. For example, add the header:x-user-project: terra-3b325c63
Implementation
Key detailed technical information required to implement this feature is provided in the following previously shared documents:
Acceptance Testing
Acceptance testing must include all of the following:
--user-project
command-line option and value are required. In this case, if the option is not provided, a clear error message is provided to the user regarding the error and how to correct it. This check should be performed early in the execution of the drs_downloader, before actual downloading begins.x-user-project
header with the associated Google project id value is included in the request to DRSHub. The correct operation may be verified by checking the returned signed URL for the query parameteruserProject
having the value provided on the command line.The text was updated successfully, but these errors were encountered: