Vizzuality Guidelines

Vizzuality playbook in progress

This project is maintained by Vizzuality

How to allocate and manage cloud resources

This guideline covers the steps you should take should you need a cloud resource, like a server to host a project, a file bucket, a Carto/(something else) account, etc.

Project resources

Most of our projects require some sort of hosting to run on, be it a server to run code on, some hosting-as-a-service like Heroku, and S3 bucket to store files etc. More complex projects may need certain services, like Carto, Google Earth Engine, Transifex, etc.

Resources owned by the client

While there are multiple ways in which these resources can be provisioned, the recommended way is to talk with the client and have them own these resources themselves. This carries a series of advantages both to us and the client:

We should be clear and transparent when communicating the need for these resources with the client, as these costs can appear as unexpected to some clients, and their internal budget for the project may be restricted:

Given that setting up these resources can be a quite technical process, we can help the client with the practical steps, by:

During this, we should use and recommend to clients our security best practices when it comes to picking passwords, sharing and storing them, etc.

Once the development phase of the project is over, don’t forget to backup and delete any staging resources that may have costs associated, so we keep our client’s bills as low as possible.

How to handle credentials for client owned accounts

Once resources are provisioned, you should save any and all credentials to Lastpass, and share them with the team members that may need access to them. Do not keep these on your Lastpass account only, as this exposes the team to the bus factor. Additionally, some credentials are only available when created, so if you don’t save them straight away, you may need to regenerate them, which means updating servers, etc.

Once the project is over, and if we are not anticipating any further work, we should recommend that the client resets passwords, so they have exclusive access to their accounts.

When “we” are the client

For some projects, we are our own client (for example, grant-based projects), so the above doesn’t apply. For those situations, Vizzuality has its own set of accounts on Google, AWS, etc, that we can use to host and support our own projects, keeping in mind the following:

How to handle credentials for our accounts

Once resources are provisioned, you should save any and all credentials to Lastpass. Given that Vizzuality accounts will be needed for longer than the duration of a single project, you should check if the particular platform you are using supports having different user accounts per person. If it does, take your time to set up your own account, instead of using someone else’s. Be sure to follow the security best practices when it comes to things like password strength, storage and 2 factor authentication.

If you are creating a new account on a new service, or if the service does not allow or have more than one set of access credentials, be sure to store the credentials on Lastpass, so we are less exposed to the bus factor. Additionally, some credentials are only available when created, so if you don’t save them straight away, you may need to regenerate them, which means updating servers, etc.

When setting up a new login for a colleague, you may need to define roles and permissions. When doing so, talk with them about which tasks they will be carrying out, and grant them the minimum needed permissions to carry out those tasks. Hacks happen, so the less permissions an account has, the less damage is done in case its compromised.