Hi Min,

Can you check this bug? I'm trying to test this feature for Amazon but
having no luck getting the Download template link/button to appear.

https://issues.apache.org/jira/browse/CLOUDSTACK-3220

Thanks,

Tom.

On Fri, 2013-06-21 at 17:21 +0000, Min Chen wrote:
> John,
> 
>       For S3, the api call createEntityExtractUrl is done on management server
> side; while for NFS secondary storage, if the implementation of
> createEntityExtractUrl will involve some code be executed in ssvm to copy
> template from the install location to a public accessible web server
> location.
>       I don't quite understand some of your comments below. This API is not
> used to write any information to S3 bucket/directory. This is used for
> object already existed on S3, and we just provide a URL for user to
> download a template from S3, just like how Amazon provided user a way to
> user to extract a S3 object through generatePresignedUrl. We can discuss
> more on this on collaboration conference.
> 
>       Thanks  
>       -min
> 
> 
> 
> On 6/21/13 7:25 AM, "John Burwell" <jburw...@basho.com> wrote:
> 
> >Min,
> >
> >(I apologize for my belated reply -- I lost track of this draft in the
> >chaos of the last couple of days.)
> >
> >Upon further review, I think I feel into the confusion between management
> >server and ssvm.  This code is executing on the management server side,
> >correct?  Based on my "corrected" understanding is correct, I would like
> >to amend my thoughts.  Namely, I would like to see the driver operations
> >pushed out to the SSVM where we can use the stream.  As I think about it,
> >the management server should not need to interact with the driver.
> >Simply yard up the DataStore attributes + details map and other extract
> >parameters, and send them to the SSVM.  Using this information, the S3
> >driver could open a stream to write the template out to the
> >bucket/directory.  I recognize it changes the protocol between the
> >management server and SSVM, but it simply both sides of the operation by
> >allowing the DataStore information to be treated opaquely until it is
> >consumed by the driver to execute the write operation.  I also recognize
> >that we may a little late in the cycle to address it for 4.2, and it may
> >need to be part of the 4.3 enhancements.
> >
> >Thanks,
> >-John
> >
> >On Jun 18, 2013, at 3:55 PM, Min Chen <min.c...@citrix.com> wrote:
> >
> >> John,
> >>    In that case, how do we keep backward compatibility of extractTemplate
> >> api, which requires a URL in the response?
> >> 
> >>    Thanks
> >>    -min
> >> 
> >> On 6/18/13 11:53 AM, "John Burwell" <jburw...@basho.com> wrote:
> >> 
> >>> Min,
> >>> 
> >>> Looking through the code, I think we can simplify driver operation and
> >>> increase robustness by changing
> >>>ImageStoreDriver#createEntityExtractUrl()
> >>> : String to ImageStoreDriver#readEntity(Š) : InputStream.  My first
> >>> concern with the current implementation is that it circumvents any
> >>> connection pooling/resource management underlying client libraries
> >>> provide.  I/O streams provide a higher-level abstraction that allows
> >>> drivers to provide the orchestration components with actual resources
> >>> rather String references.  Second, the current interface seems to
> >>>appears
> >>> to assume that an http/https URL will be returned.  With I/O streams,
> >>>we
> >>> can support any client library capable of using the standard I/O
> >>> framework -- enabling us to support other protocols for downloading
> >>> templates in the future (e.g. RBD, local filesystem, NBD, etc).
> >>> 
> >>> Thanks,
> >>> -John
> >>> 
> >>> On Jun 18, 2013, at 1:11 PM, Min Chen <min.c...@citrix.com> wrote:
> >>> 
> >>>> A new version of using generatePresignedUrl in S3ImageStoreDriverImpl
> >>>>is
> >>>> checked into object_store.
> >>>> 
> >>>> THanks
> >>>> -min
> >>>> 
> >>>> On 6/18/13 8:29 AM, "Min Chen" <min.c...@citrix.com> wrote:
> >>>> 
> >>>>> Yes, current code is in
> >>>>>S3ImageStoreDriverImpl.createEntityExtractUrl,
> >>>>> which has a security issue mentioned in CLOUDSTACK-3030. I am going
> >>>>>to
> >>>>> change it to use generatePresignedUrl api from AWS S3 api.
> >>>>> 
> >>>>> Thanks
> >>>>> -min
> >>>>> 
> >>>>> From: John Burwell <jburw...@basho.com<mailto:jburw...@basho.com>>
> >>>>> Date: Tuesday, June 18, 2013 8:07 AM
> >>>>> To: Min Chen <min.c...@citrix.com<mailto:min.c...@citrix.com>>
> >>>>> Cc: Thomas O'Dowd
> >>>>><tpod...@cloudian.com<mailto:tpod...@cloudian.com>>,
> >>>>> "dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>"
> >>>>> <dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>>
> >>>>> Subject: Re: Query String Request Authentication(QSRA) support by S3
> >>>>> providers
> >>>>> 
> >>>>> Min,
> >>>>> 
> >>>>> Is the code checked into the object_store branch?  If so, which lines
> >>>>> in
> >>>>> S3TemplateDownloader?
> >>>>> 
> >>>>> Thanks,
> >>>>> -John
> >>>>> 
> >>>>> On Jun 18, 2013, at 12:39 AM, Min Chen
> >>>>> <min.c...@citrix.com<mailto:min.c...@citrix.com>> wrote:
> >>>>> 
> >>>>> Hi John,
> >>>>> 
> >>>>> This is regarding extractTemplate api, where for extractable
> >>>>>template,
> >>>>> users can click "Download Template" button from UI to get a http url
> >>>>>to
> >>>>> download the template already stored at S3 without providing S3
> >>>>> credentials. In 4.1, we don't have this issue, since the URL returned
> >>>>> is
> >>>>> the public web server location hosted in ssvm, and in 4.2, we are
> >>>>> returning URL pointing to s3 object. Without setting ACL to the S3
> >>>>> object, user cannot directly click the URL returned  from
> >>>>> extractTemplate
> >>>>> api to download the template without providing credentials. By
> >>>>>reading
> >>>>> the AWS SDK doc today, I ran across the following API that I may be
> >>>>> able
> >>>>> to use for this purpose:
> >>>>> 
> >>>>> 
> >>>>> 
> >>>>> 
> >>>>>URL<http://java.sun.com/j2se/1.5.0/docs/api/java/net/URL.html?is-exter
> >>>>>na
> >>>>> l=
> >>>>> true>        
> >>>>> 
> >>>>> 
> >>>>>generatePresignedUrl<http://docs.aws.amazon.com/AWSJavaSDK/latest/java
> >>>>>do
> >>>>> c/
> >>>>> 
> >>>>> 
> >>>>>com/amazonaws/services/s3/AmazonS3Client.html#generatePresignedUrl%28j
> >>>>>av
> >>>>> a.
> >>>>> 
> >>>>> 
> >>>>>lang.String,%20java.lang.String,%20java.util.Date,%20com.amazonaws.Htt
> >>>>>pM
> >>>>> et
> >>>>> 
> >>>>> 
> >>>>>hod%29>(String<http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Strin
> >>>>>g.
> >>>>> ht
> >>>>> ml?is-external=true> bucketName,
> >>>>> 
> >>>>> 
> >>>>>String<http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?i
> >>>>>s-
> >>>>> ex
> >>>>> ternal=true> key,
> >>>>> 
> >>>>> 
> >>>>>Date<http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html?is-ex
> >>>>>te
> >>>>> rn
> >>>>> al=true> expiration,
> >>>>> 
> >>>>> 
> >>>>>HttpMethod<http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/am
> >>>>>az
> >>>>> on
> >>>>> aws/HttpMethod.html> method)
> >>>>>         Returns a pre-signed URL for accessing an Amazon S3 resource.
> >>>>> 
> >>>>> This is along the same line as QSRA mentioned by Tom, by wrapped in
> >>>>> AmazonS3Client for easy consumption. By using this method, I think
> >>>>> that I
> >>>>> don't need to change ACL of S3 object to open a security hole.
> >>>>> 
> >>>>> Thanks
> >>>>> -min
> >>>>> 
> >>>>> From: John Burwell <jburw...@basho.com<mailto:jburw...@basho.com>>
> >>>>> Date: Monday, June 17, 2013 7:38 PM
> >>>>> To: Min Chen <min.c...@citrix.com<mailto:min.c...@citrix.com>>
> >>>>> Cc: Thomas O'Dowd
> >>>>><tpod...@cloudian.com<mailto:tpod...@cloudian.com>>,
> >>>>> "dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>"
> >>>>> <dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>>
> >>>>> Subject: Re: Query String Request Authentication(QSRA) support by S3
> >>>>> providers
> >>>>> 
> >>>>> Min,
> >>>>> 
> >>>>> Why are we mucking with ACLs at all?  The best security practice
> >>>>>would
> >>>>> be
> >>>>> to create a bucket for CloudStack's use and assign it a dedicated
> >>>>> access
> >>>>> key and secret key pair with read/write access only to that bucket.
> >>>>> Requiring an administrative account to an object store opens an
> >>>>> unnecessarily large attack surface.  Therefore, as implemented in
> >>>>>4.1,
> >>>>> we
> >>>>> should defer bucket creation, ACL assignment, and credential creation
> >>>>> to
> >>>>> the administrator/operator.
> >>>>> 
> >>>>> Thanks,
> >>>>> -John
> >>>>> 
> >>>>> On Jun 17, 2013, at 1:15 PM, Min Chen
> >>>>> <min.c...@citrix.com<mailto:min.c...@citrix.com>> wrote:
> >>>>> 
> >>>>> Tom filed a very good bug for ACL setting change on S3 object when
> >>>>> users
> >>>>> issue extractTemplate API
> >>>>> (https://issues.apache.org/jira/browse/CLOUDSTACK-3030), and his
> >>>>> recommendation of using Query String Request Authentication (QSRA)
> >>>>> alternative sounds like a right approach to fix this bug. Before
> >>>>> implementing it, I would like to confirm if QSRA should be supported
> >>>>>by
> >>>>> all S3 providers if they claim that they are AWS s3 compatible. If
> >>>>>so,
> >>>>> we
> >>>>> will make this assumption in our code. Based on Tom, Cloudian is
> >>>>> supporting it. How about RiakCS, John?
> >>>>> 
> >>>>> Thanks
> >>>>> -min
> >>>>> 
> >>>>> 
> >>>> 
> >>> 
> >> 
> >
> 

-- 
Cloudian KK - http://www.cloudian.com/get-started.html
Fancy 100TB of full featured S3 Storage?
Checkout the Cloudian® Community Edition!

Reply via email to