Coder Social home page Coder Social logo

Comments (17)

sethvargo avatar sethvargo commented on July 20, 2024 4

Hey @theomessin

It's been discussed 😄. In short, it's challenging to re-implement the exact same crypto algorithms across languages. Other languages require binding to openssl or a system library, making them far less portable.

We're exploring the possibility of embedding the berglas binary inside of other clients, but the general recommendation today is to run berglas exec for non-Go apps. Sorry 😦

from berglas.

sethvargo avatar sethvargo commented on July 20, 2024 3

Hi @theomessin

Yes 😄 . Berglas doesn't just use KMS (see Implementation). In short, Berglas generates a unique key for each piece of data. That key encrypts the data locally on your machine. Then we use Cloud KMS to encrypt that key. As such, we'd have to replicate the envelope encryption in every language (hence my earlier comment about binding to openssl, etc).

from berglas.

sethvargo avatar sethvargo commented on July 20, 2024 2

There's a python one now: https://pypi.org/project/berglas-python/

from berglas.

theomessin avatar theomessin commented on July 20, 2024 1

Hey @sethvargo. Thanks for replying!

So, just to clarify: we like the CLI tool, we'd like to be able to use the Berglas managed secrets in our Python Google Cloud Functions. Are you saying that this would be quite hard to do?

Currently we use the Python library for Google Cloud KMS to decrypt ad-hoc stored secrets and the code is quite simple.

from berglas.

chrisbenincasa avatar chrisbenincasa commented on July 20, 2024 1

I've written a Node library similar to the Python one, which enables use of the NodeJS runtime in Cloud Functions with Berglas: https://github.com/chrisbenincasa/berglas-node

from berglas.

theomessin avatar theomessin commented on July 20, 2024

Fair enough. That makes more sense. Thanks! 😄

from berglas.

aausch avatar aausch commented on July 20, 2024

bump

from berglas.

maroux avatar maroux commented on July 20, 2024

I can add this support to berglas main once #43 is tested and merged. Then, at least for GAE flex we'd be able to move to library usage rather than exec - however not sure if all that is worth it.

from berglas.

maroux avatar maroux commented on July 20, 2024

I think pycryptodome supports everything berglas needs without using C extensions.

from berglas.

maroux avatar maroux commented on July 20, 2024

I have a working POC for the python library here - maroux/berglas-python#1..

@sethvargo let me know if you'd be interested in merging that repo here (not sure how Travis will work).

from berglas.

sethvargo avatar sethvargo commented on July 20, 2024

@maroux did you see the python one above? https://pypi.org/project/berglas-python/

from berglas.

maroux avatar maroux commented on July 20, 2024

@sethvargo just looked - it uses cryptography so binds to openssl etc and doesn't provide an auto resolver.

from berglas.

maroux avatar maroux commented on July 20, 2024

I created #46 that adds examples of using the python library.

from berglas.

cm-igarashi-ryosuke avatar cm-igarashi-ryosuke commented on July 20, 2024

As for App Engine (Standard), we were able to place berglas binaries by using Cloud Build in the previous stage.

pre_cloudbuild.yaml

Since App Engine cannot place a file named cloudbuild.yaml in the root directory, the name of cloudbuild.yaml is changed to pre_cloudbuild.yaml.

steps:
  - name: gcr.io/cloud-builders/curl
    args:
      - https://storage.googleapis.com/berglas/master/linux_amd64/berglas
      - --output
      - berglas
  - name: ubuntu
    args:
      - chmod
      - "777"
      - berglas
  - name: gcr.io/cloud-builders/gcloud
    args:
      - app
      - deploy
      - app.yaml

app.yaml

runtime: nodejs10
entrypoint: ./berglas exec -- npm start
env_variables:
  HOGE: berglas://{BUCKET_ID}/hoge

What do you think about this method?

Alternatively, if you deploy berglas binaries in the root directory in advance, the previous Cloud Build is not required.

from berglas.

PeteFein avatar PeteFein commented on July 20, 2024

it'd be nice to add a link to the python implementation to the README, i only found this ticket by chance

from berglas.

github-actions avatar github-actions commented on July 20, 2024

This issue is stale because it has been open for 14 days with no
activity. It will automatically close after 7 more days of inactivity.

from berglas.

github-actions avatar github-actions commented on July 20, 2024

This issue has been automatically locked since there has not been any
recent activity after it was closed. Please open a new issue for
related bugs.

from berglas.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.