/** * Uploads the container's permissions. * * @param permissions * A {@link BlobContainerPermissions} object that represents the permissions to upload. * * @throws StorageException * If a storage service error occurred. */ @DoesServiceRequest public void uploadPermissions(final BlobContainerPermissions permissions) throws StorageException { this.uploadPermissions(permissions, null /* accessCondition */, null /* options */, null /* opContext */); }
/** * Uploads the container's permissions. * * @param permissions * A {@link BlobContainerPermissions} object that represents the permissions to upload. * * @throws StorageException * If a storage service error occurred. */ @DoesServiceRequest public void uploadPermissions(final BlobContainerPermissions permissions) throws StorageException { this.uploadPermissions(permissions, null /* accessCondition */, null /* options */, null /* opContext */); }
sharedAccessBlobPolicy.setPermissions(EnumSet.of(SharedAccessBlobPermissions.READ)); BlobContainerPermissions containerPermissions = new BlobContainerPermissions(); container.uploadPermissions(containerPermissions); String signature = container.generateSharedAccessSignature(sharedAccessBlobPolicy, null); return blobLink + "?" + signature;
/** * Create a connection to Azure Blob file storage system */ private void connect(String protocol, String accountName, String accountKey, String bucketName) { if (bucketName == null || bucketName.trim().isEmpty()) throw new ConfigurationException("Defined Azure Blog bucket is invalid."); //container name MUST be lowercase bucketName = bucketName.toLowerCase(); String connectionString = MessageFormat.format(CONNECTION_PATTERN, protocol, accountName, accountKey); try { CloudStorageAccount blobAccount = CloudStorageAccount.parse(connectionString); this.blobClient = blobAccount.createCloudBlobClient(); this.blobContainer = blobClient.getContainerReference(bucketName); boolean isBucketNotExist = blobContainer.createIfNotExists(); if (isBucketNotExist) log.info("New Azure Blob container created: " + bucketName); //Set access to public for blob resource BlobContainerPermissions containerPermissions = new BlobContainerPermissions(); containerPermissions.setPublicAccess(BlobContainerPublicAccessType.CONTAINER); blobContainer.uploadPermissions(containerPermissions); } catch (Exception exception) { log.error(exception.getMessage(), exception); throw new ConfigurationException(exception); } }
container.uploadPermissions(containerPermissions);
@Test @Category(SlowTests.class) public void testContainerPublicAccess() throws StorageException, IOException, URISyntaxException, InterruptedException { CloudBlockBlob testBlockBlob = (CloudBlockBlob) BlobTestHelper.uploadNewBlob( this.container, BlobType.BLOCK_BLOB, "blockblob", 64, null); CloudPageBlob testPageBlob = (CloudPageBlob) BlobTestHelper.uploadNewBlob( this.container, BlobType.PAGE_BLOB, "pageblob", 512, null); BlobContainerPermissions permissions = new BlobContainerPermissions(); permissions.setPublicAccess(BlobContainerPublicAccessType.CONTAINER); this.container.uploadPermissions(permissions); Thread.sleep(35000); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.READ), null, this.container, testBlockBlob); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.READ), null, this.container, testPageBlob); permissions.setPublicAccess(BlobContainerPublicAccessType.BLOB); this.container.uploadPermissions(permissions); Thread.sleep(30000); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.READ), null, this.container, testBlockBlob); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.READ), null, this.container, testPageBlob); }
container.uploadPermissions(containerPermissions);
container.uploadPermissions(containerPermissions);
@Override public void setPermission(final Path file, final Acl acl) throws BackgroundException { try { if(containerService.isContainer(file)) { final CloudBlobContainer container = session.getClient() .getContainerReference(containerService.getContainer(file).getName()); final BlobContainerPermissions permissions = container.downloadPermissions(null, null, context); for(Acl.UserAndRole userAndRole : acl.asList()) { if(userAndRole.getUser() instanceof Acl.GroupUser) { if(userAndRole.getUser().getIdentifier().equals(Acl.GroupUser.EVERYONE)) { permissions.setPublicAccess(BlobContainerPublicAccessType.BLOB); } } } container.uploadPermissions(permissions, null, null, context); } } catch(URISyntaxException e) { throw new NotfoundException(e.getMessage(), e); } catch(StorageException e) { throw new AzureExceptionMappingService().map("Cannot change permissions of {0}", e, file); } } }
containers.get(bits).uploadPermissions(perms);
this.container.uploadPermissions(expectedPermissions); testPermissions = this.container.downloadPermissions(); assertPermissionsEqual(expectedPermissions, testPermissions); expectedPermissions.getSharedAccessPolicies().put(UUID.randomUUID().toString(), policy1); this.container.uploadPermissions(expectedPermissions); Thread.sleep(30000);
this.container.uploadPermissions(perms); Thread.sleep(30000); this.container.uploadPermissions(perms); Thread.sleep(30000);
permissions.getSharedAccessPolicies().put("key1", policy); this.container.uploadPermissions(permissions); Thread.sleep(30000); this.container.uploadPermissions(permissions); Thread.sleep(30000);
@Test @Category(SlowTests.class) public void testBlobSaS() throws InvalidKeyException, IllegalArgumentException, StorageException, URISyntaxException, InterruptedException { SharedAccessBlobPolicy sp = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 3600); BlobContainerPermissions perms = new BlobContainerPermissions(); perms.getSharedAccessPolicies().put("readperm", sp); this.container.uploadPermissions(perms); Thread.sleep(30000); CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(this.blob.getUri().toString() + "?" + this.blob.generateSharedAccessSignature(null, "readperm"))); sasBlob.download(new ByteArrayOutputStream()); // do not give the client and check that the new blob's client has the correct perms CloudBlob blobFromUri = new CloudBlockBlob(PathUtility.addToQuery(this.blob.getStorageUri(), this.blob.generateSharedAccessSignature(null, "readperm"))); assertEquals(StorageCredentialsSharedAccessSignature.class.toString(), blobFromUri.getServiceClient() .getCredentials().getClass().toString()); // create credentials from sas StorageCredentials creds = new StorageCredentialsSharedAccessSignature( this.blob.generateSharedAccessSignature(null, "readperm")); CloudBlobClient bClient = new CloudBlobClient(sasBlob.getServiceClient().getStorageUri(), creds); CloudBlockBlob blobFromClient = bClient.getContainerReference(this.blob.getContainer().getName()) .getBlockBlobReference(this.blob.getName()); assertEquals(StorageCredentialsSharedAccessSignature.class.toString(), blobFromClient.getServiceClient() .getCredentials().getClass().toString()); assertEquals(bClient, blobFromClient.getServiceClient()); }
this.container.uploadPermissions(perms); Thread.sleep(30000);
this.container.uploadPermissions(perms); Thread.sleep(30000);
container.uploadPermissions(containerPermissions);
container.uploadPermissions(containerPermissions);
for (BlobContainerPublicAccessType accessType : accessTypes) { permissions.setPublicAccess(accessType); container.uploadPermissions(permissions); assertEquals(accessType, container.properties.getPublicAccess());
container2.uploadPermissions(permissions); assertEquals(accessType, container2.properties.getPublicAccess());