Giter Site home page Giter Site logo

cyberark / conjur Goto Github PK

View Code? Open in Web Editor NEW
727.0 48.0 123.0 25.45 MB

CyberArk Conjur automatically secures secrets used by privileged users and machine identities

Home Page: https://conjur.org

License: Other

Ruby 73.42% Shell 5.36% Gherkin 20.75% CSS 0.08% HTML 0.12% PowerShell 0.02% Dockerfile 0.05% Python 0.20% Procfile 0.01%
secret-management secret-distribution machine-identity secrets conjur core dap conjbot-notify conjur-cloud

conjur's Introduction

Conjur

Conjur on DockerHub Maintainability Test Coverage

CyberArk Commons - ask Follow Conjur on Twitter

Conjur provides secrets management and application identity for modern infrastructure:

  • Machine Authorization Markup Language ("MAML"), a role-based access policy language to define system components & their roles, privileges and metadata
  • A REST web service to:
    • manage identity life cycles for humans and machines
    • organize and search roles and data in your secrets infrastructure
    • authorize access to resources using a sophisticated permission model
    • store secrets and make them available securely
  • Integrations throughout the cloud toolchain:
    • infrastructure as a service (IaaS)
    • configuration management
    • continuous integration and deployment (CI/CD)
    • container management and cloud orchestration

Note: our badges and social media buttons never track you.

Table of contents generated with markdown-toc

Getting Started

Please refer to our Quick Start Guide for detailed information on using Conjur Open Source for the first time, or, refer to the Conjur docs for specific guides relating to setup, integrations, administration, and more.

Compatibility

We strongly recommend choosing the version of this project to use from the latest Conjur Open_Source suite release. Conjur maintainers perform additional testing on the suite release versions to ensure compatibility. When possible, upgrade your Conjur version to match the latest suite release; when using integrations, choose the latest suite release that matches your Conjur version.

When upgrading your Conjur server running in a Docker Compose environment to the latest suite release version, please review the upgrade instructions. For any questions, please contact us on Discourse.

Community Support

Our primary channel for support is through our CyberArk Commons community here

Migrating to Conjur EE

Migrating data from Conjur Open Source to Conjur EE is simple using our migration guide

Architecture

Conjur is designed to run in a Docker container(s), using Postgresql as the backing data store. It's easy to run both Conjur and Postgresql in Docker; see the demo directory for an example.

Database

DATABASE_URL environment variable

Conjur uses the DATABASE_URL environment variable to connect to the database. Typical options for this URL are:

  • Local linked pg container
  • External managed database such as AWS RDS.

Database initialization

Conjur creates and/or updates the database schema automatically when it starts up. Migration scripts are located in the db/migrate directory.

Authenticators

Conjur makes it easy to:

  • Enable and disable built-in authenticators
  • Secure access to authenticators using policy files
  • Create custom authenticators

Detailed authenticator design documentation

Rotators

Conjur makes it easy to:

  • Rotate variables regularly using built-in rotators
  • Create custom rotators

Detailed rotator design documenation

Secrets and keys

Main article: Conjur Cryptography

Conjur uses industry-standard cryptography to protect your data.

Some operations require storage and management of encrypted data. For example:

  • Roles can have associated API keys, which are stored encrypted in the database
  • the authenticate function issues a signed JSON token; the signing key is a 2048 bit RSA key which is stored encrypted in the database

Data is encrypted in and out of the database using Slosilo, a library which provides:

  • symmetric encryption using AES-256-GCM
  • a Ruby class mixin for easy encryption of object attributes into the database
  • asymmetric encryption and signing
  • a keystore in a Postgresql database for easy storage and retrieval of keys

Slosilo has been verified by a professional cryptographic audit. Ask in our CyberArk Commons community for more details. (You can join here.)

Important: avoid data loss

When you start Conjur, you must provide a Base64-encoded master data key in the environment variable CONJUR_DATA_KEY. You can generate a data key using the following command:

$ docker run --rm conjur data-key generate

Do NOT lose the data key, or all the encrypted data will be unrecoverable.

Account management

Conjur supports the simultaneous operation of multiple separate accounts within the same database. In other words, it's multi-tenant.

Each account (also called "organization account") has its own token-signing private key. When a role is authenticated, the HMAC of the access token is computed using the signing key of the role's account.

Accounts can be listed, created, and deleted via the /accounts service. Permission to use this service is controlled by the built-in resource !:webservice:accounts. Note that ! is itself an organization account, and therefore privileges on the !:webservice:accounts can be managed via Conjur policies.

Versioning

Starting from version 0.1.0, this project follows Semantic Versioning.

Contributing

If you’re interested in running Conjur locally and learning about how it works, please see our Contributing Guide. It includes helpful instructions for Conjur development and debugging, including:

If you have any questions, please open an issue or ask us on Discourse.

License

The Conjur server (as in, the code within this repository) is licensed under the Free Software Foundation's GNU LGPL v3.0. This license was chosen to ensure that all contributions to the Conjur server are made available to the community. Commercial licenses are also available from CyberArk.

The Conjur API clients and other extensions are licensed under the Apache Software License v2.0.

Copyright (c) 2020 CyberArk Software Ltd. All rights reserved.

conjur's People

Contributors

aloncarmel111 avatar andytinkham avatar apotterri avatar dependabot[bot] avatar dividedmind avatar doodlesbykumbi avatar dustinmm80 avatar eranha avatar gl-johnson avatar h-artzi avatar hughsaunders avatar ismarc avatar izgeri avatar john-odonnell avatar jonahx avatar jtuttle avatar jvanderhoof avatar kgilpin avatar micahlee avatar mizziness avatar nessilahav avatar orenbm avatar ryanprior avatar sashacher avatar sgnn7 avatar sigalsax avatar telday avatar typaulhus avatar tzheleznyak avatar ucatu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

conjur's Issues

Links from the quick tour should open in a new tab

When a first-time user is going through the quick tour, we want them to retain context and not lose sight of their progress. If they have to hit Back to find the tour page again (and then make an effort to open the original link in a tab themselves), that's an obstacle to their learning.

It's probably fine to use the same tab for navigation elsewhere, but for the quick tour I think it's important.

Container based CLI tool instructions

Tutorials give the user the option of Docker container w/ CLI or install from source. As a developer, I'm far more likely to go the docker route out of simplicity. I got stuck setting up my container based CLI because I hadn't mounted a volume so I could load policy.

Proposed Solution : update the start command to something like:

$ docker run -v $(pwd):/policies -it conjurinc/cli5

Potentially, update the documentation to include the container based CLI syntax:

# conjur policy load bootstrap /policies/conjur.yml

Code examples we want people to copy should have clipboard functionality

We have a mix of code blocks throughout the site. We should have copy-to-clipboard functionality (preferable without Flash) to make it easy for people to copypasta.

That said, I noticed that we do have some code blocks that are 'explainers', we don't want people to copy them. The copy button could signify this difference.

Confused about the multiple policy files in delegation tutorial

https://possum-www.itci.conjur.net/tutorials/policy/delegation.html

We have 3 policy files in this tutorial: conjur.yml, backend.yml, frontend.yml. Can someone help me understand why this is a good pattern? For me, I'd just like to have one policy.yml file in my project repo that defines the application's Conjur setup.

That said, there are also consumable resources like AWS keys that multiple projects may need. I think we need to add some guidance to the site on how to place policy files, if that doesn't exist already.

Extended options are supported for listing resources

As a Possum API user, I want to be able to search, count, and paginate when I list resources.

GIVEN I pass search, count, limit, or offset
WHEN I list resources
THEN I see only the specified information

Dev notes:
Searching, counting, and pagination should work the same way they do in Conjur v4.

Loading a bootstrap policy documentation is confusing

I got really confused when I got to this section: https://possum-www.itci.conjur.net/tour.html#loading-the-bootstrap-policy

The first line:

To load the policy, use the CLI command conjur policy load <policy-id> <policy-file>

made me think I had to run a command, but had no idea what the policy-id should be. It might be helpful to either put bootstrap policy load command

# conjur policy load bootstrap conjur.yml

at the end of the previous section or at the top of the Loading the Bootstrap Policy section to reduce confusion.

Page TOC would be better as a floating sidebar on the right

For example, the TOC/prerequisites are taking up all the space above the fold for the Quick Tour

screen shot 2017-06-20 at 2 16 41 pm

Instead, I think we should have a floating right sidebar for the page TOC, like on our current devsite. The TOC can move with the page, so it's always easy to navigate. This also removes the need for a 'back to top' button.

CLI page on devsite, for example:

screen shot 2017-06-20 at 2 18 02 pm

Secrets can be retrieved in batches

As a user of the Possum API, I want to be able to retrieve batches of secret values efficiently.
GIVEN I request /secrets and pass multiple ids
WHEN I read the response
THEN I get the values of the secrets I asked for

Dev notes:

This needs to be implemented a la core in Conjur 4. The /secrets route isn't a hard requirement, but the route should be mappable from the v4 route (the same way other routes are).
Tasks:
implement batch retrieval
port/write cukes

Organization name does not permit whitespace or the colon ":" character

It's currently possible to create an conjur account that includes a space, like so:

export CONJUR_ACCOUNT='Awesome Org'

This appears to work when authenticating, but causes problems further down the line, for example when trying to show a variable:

root@9317596fe079:/# conjur show variable:db/password
error: bad URI(is not URI?): https://possum-ci-conjur.herokuapp.com/resources/Awesome Org/variable/db/password

We probably want to disallow spaces in account names. If not, we should identify commands that fail when there is a space in the account name and fix them.

"conjur policy load" throws a confusing message when passed an empty file

Steps to recreate:

  1. From CLI, create an empty file called foo.yml
  2. Attempt to load:
# conjur policy load foo foo.yml

Result is the following:

{
	"error": {
		"code": "validation_failed",
		"message": "policy_text is not present,policy_text undefined method `each_with_index' for nil:NilClass",
		"details": [{
			"code": "validation_failed",
			"target": "policy_text",
			"message": "is not present"
		}, {
			"code": "validation_failed",
			"target": "policy_text",
			"message": "undefined method `each_with_index' for nil:NilClass"
		}]
	}
}

Message is fine, but I don't think we should have Ruby specific errors bubbling up into error messages.

conjur policy list subcommand would be really helpful

After I had gone through and loaded policies I wanted to double-check my work (harder with no UI).
So I did conjur policy list, which isn't a command.

The command I was looking for was conjur policy list, but it's actually conjur list -i -k policy. Can we alias conjur policy list to that?

Extra space in Possum CPanel

In the possum-cpanel quickstart, the last step has an extra space after $:

$  conjur authn login -u admin -p 19fjyeh3kdeprx3g9bnnasz0mk31eza6yz28rbvvxed34mzf2q4th

should be:

$ conjur authn login -u admin -p 19fjyeh3kdeprx3g9bnnasz0mk31eza6yz28rbvvxed34mzf2q4th

Should -i be the default for listing objects with the CLI?

It seems like it should be, since the output using -i is much more human readable. What if instead we had a -v flag for verbose that spit out all the data? Then by default the command output is human-readable and you have to use -v for machines (which often don't use the CLI anyways).

Google analytics are running on the doc site

As a Conjur member, I want insight into how users are using the site and where they fall off.
GIVEN I'm on the Conjur CE site
WHEN I navigate around
THEN my actions are tracked on Google Analytics
AND a funnel is setup to track the percentage of users who complete the tutorial.

What to do after CPanel quickstart

Once I've completed the steps in the possum cpanel quickstart, it's not clear what I should do. It might be helpful to have a link that goes back to the documentation site or opens the documentation site in a new tab.

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.