Giter VIP home page Giter VIP logo

bcgov / essential-services-delivery Goto Github PK

View Code? Open in Web Editor NEW
6.0 15.0 8.0 842 KB

Essential Services credentials for workers to manage risks around entry to controlled facilities

License: Apache License 2.0

Groovy 13.80% Shell 47.56% JavaScript 10.93% HTML 27.71%
verifiable-credentials verifiable-organizations-network trust-over-ip hyperledger-indy von hyperledger indy aries-vcr covid-19 essential-service

essential-services-delivery's Introduction

Lifecycle:Stable License

Essential Services Delivery

Essential Services Delivery coordination using Digitally Verifiable Credentials.

This repository contains the build, deployment, and application configurations needed to pull a number of separate applications into a single environment and deploy them as a group of interrelated services.

The resulting services include:

Proof of Concept Registration applications:

Allowing Businesses and Citizen's to create "Safe Entry Points" that require the presentation and proof of a set of digitally verifiable credentials in order to authorize access.

This is an instance of bcgov/dts-esr-demo

Allowing Businesses to register as an Essential Service and in turn be able to issue Essential Service credentials to their employees.

This is an instance of bcgov/dts-safe-entry-demo

A Number of Credential Issuer Services

All of the Issuer Services are instances of bcgov/issuer-kit

An issuer used to obtain a digital identification credential that is used to authorize access to other services within the PoC.

An issuer used to obtain a personal health number credential that is used to authorize access to other services within the PoC.

An issuer used to obtain a business level essential services credential that is used to authorize access to other services within the PoC.

An issuer used to obtain an essential services access credential that is used to authorize access to other services within the PoC.

An issuer used to obtain a "lab result" credential that is used to authorize access to other services within the PoC.

A Sample Set of Safe Entry Points

Each Safe Entry Point is an instance of bcgov/vc-visual-verifier

Demonstrates how digitally verifiable credentials can be used to authorize access to or through a point of entry.

Demonstrates how digitally verifiable credentials can be used to provide essential services workers with authorized access to a location or facility.

Managing the Configurations

This repository contains a set of openshift-developer-tools compatible OpenShift configurations

For information on how to use these configurations with the openshift-developer-tools scripts please refer to the documentation; README.md.

Managing Profiles

The application components are managed using a set of profiles.

To list the profile and their descriptions run:

Wade@hvWin10x64 MINGW64 /c/essential-services-delivery/openshift
$ ./manage -p default -e null listProfiles

Loading settings ...
Loading settings from /c/essential-services-delivery/openshift/settings.sh ...

bc - settings.bc.sh
  - Safe Entry application profile
business-registration - settings.business-registration.sh
  - Essential Services Registry application profile
esr1 - settings.esr1.sh
  - Credential issuer profile
esr2 - settings.esr2.sh
  - Credential issuer profile
healthbc - settings.healthbc.sh
  - Credential issuer profile
medlab - settings.medlab.sh
  - Credential issuer profile
openvp - settings.openvp.sh
  - Credential issuer profile
safe-entry-c19 - settings.safe-entry-c19.sh
  - Visual verifier profile
safe-entry - settings.safe-entry.sh
  - Visual verifier profile
default - settings.sh

To get the details of a specific profile run:

Wade@hvWin10x64 MINGW64 /c/essential-services-delivery/openshift
$ ./manage -p healthbc -e null profileDetails

Loading settings ...
Loading settings from /c/essential-services-delivery/openshift/settings.sh ...
Loading settings from /c/essential-services-delivery/openshift/settings.healthbc.sh ...

healthbc - settings.healthbc.sh
  - Credential issuer profile
  - ../openshift/templates/agent/agent-build.json
  - ../openshift/templates/api/api-build.json
  - ../openshift/templates/db/db-build.json
  - ../openshift/templates/issuer-web/issuer-web-build.json
  - ../openshift/templates/issuer-web-base-image/issuer-web-base-image-build.json
  - ../openshift/templates/wallet/wallet-build.json
  - ../openshift/templates/agent/agent-deploy.yaml
  - ../openshift/templates/api/api-deploy.json
  - ../openshift/templates/db/db-deploy.json
  - ../openshift/templates/issuer-web/issuer-web-deploy.json
  - ../openshift/templates/wallet/wallet-deploy.json

We have moved to creating a single wallet pod across all essential services for greater resource sharing. The shared wallet is deployed from the default profile and used by all agents. Please ensure the wallet component is deployed BEFORE attempting to deploy any issuer agent

To publish or update the settings and configuration for all application profiles you can use the deployAllProfiles helper command in the manage script, for example;

Wade@hvWin10x64 MINGW64 /c/essential-services-delivery/openshift
$ ./manage -p default -e test -u deployAllProfiles
  • To update all profiles in the test environment.

To publish or update a given profile or a given component within a profile you would use the genDepls.sh script. for example;

Wade@hvWin10x64 MINGW64 /c/essential-services-delivery/openshift
$ genDepls.sh -p healthbc -e test -u -c issuer-web
  • To update the issuer-web component of the healthbc profile.

Generating New Profiles

For Credential issuer and Visual verifier there are helper commands that allow you to create the scaffolding for a new profile from an existing one; createNewIssuerProfile and createNewVerifierProfile. Examples of how to use these commands can be found in the help documentation for the manage script by running;

Wade@hvWin10x64 MINGW64 /c/essential-services-delivery/openshift
$ ./manage -h

Creating or Updating Proof Configurations

New or updated proof configurations need to be registered with the vc-authn-oidc-controller associated with the demo environment. The manage script includes a helper command to assist with this task, configureProof. Examples of how to use this command can be found in the help documentation for the manage script by running;

Wade@hvWin10x64 MINGW64 /c/essential-services-delivery/openshift
$ ./manage -h

Managing the Environments

The manage script includes a number of helper commands to help manage the environment. For a list of these commands and examples of how to use them run;

Wade@hvWin10x64 MINGW64 /c/essential-services-delivery/openshift
$ ./manage -h

Getting Help or Reporting an Issue

To report bugs/issues/feature requests, please file an issue.

How to Contribute

If you would like to contribute, please see our CONTRIBUTING guidelines.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

essential-services-delivery's People

Contributors

esune avatar ianco avatar repo-mountie[bot] avatar swcurran avatar wadebarnes avatar wadeking98 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

essential-services-delivery's Issues

It's Been a While Since This Repository has Been Updated

This issue is a kind reminder that your repository has been inactive for 483 days. Some repositories are maintained in accordance with business requirements that infrequently change thus appearing inactive, and some repositories are inactive because they are unmaintained.

To help differentiate products that are unmaintained from products that do not require frequent maintenance, repomountie will open an issue whenever a repository has not been updated in 180 days.

  • If this product is being actively maintained, please close this issue.
  • If this repository isn't being actively maintained anymore, please archive this repository. Also, for bonus points, please add a dormant or retired life cycle badge.

Thank you for your help ensuring effective governance of our open-source ecosystem!

Update Unverified Person Credential references

Deploy services to prod

The services need to be deployed to the prod namespace.

Wallets need to be migrated over from the OCP3 namespace, and for services using a *.vonx.io vanity URL DNS migration and certificate installation needs to be performed as well.

@wadeking98 please proceed with deploying all the issuers in read only mode, using the wallets and secret values from OCP3.
Once ready, coordinate with @WadeBarnes to add the vonx.io routes and certificates, and switch the DNS entry to point to the new cluster.

Add missing topics

TL;DR

Topics greatly improve the discoverability of repos; please add the short code from the table below to the topics of your repo so that ministries can use GitHub's search to find out what repos belong to them and other visitors can find useful content (and reuse it!).

Why Topic

In short order we'll add our 800th repo. This large number clearly demonstrates the success of using GitHub and our Open Source initiative. This huge success means its critical that we work to make our content as discoverable as possible; Through discoverability, we promote code reuse across a large decentralized organization like the Government of British Columbia as well as allow ministries to find the repos they own.

What to do

Below is a table of abbreviation a.k.a short codes for each ministry; they're the ones used in all @gov.bc.ca email addresses. Please add the short codes of the ministry or organization that "owns" this repo as a topic.

add a topic

That's in, you're done!!!

How to use

Once topics are added, you can use them in GitHub's search. For example, enter something like org:bcgov topic:citz to find all the repos that belong to Citizens' Services. You can refine this search by adding key words specific to a subject you're interested in. To learn more about searching through repos check out GitHub's doc on searching.

Pro Tip ๐Ÿค“

  • If your org is not in the list below, or the table contains errors, please create an issue here.

  • While you're doing this, add additional topics that would help someone searching for "something". These can be the language used javascript or R; something like opendata or data for data only repos; or any other key words that are useful.

  • Add a meaningful description to your repo. This is hugely valuable to people looking through our repositories.

  • If your application is live, add the production URL.

Ministry Short Codes

Short Code Organization Name
AEST Advanced Education, Skills & Training
AGRI Agriculture
ALC Agriculture Land Commission
AG Attorney General
MCF Children & Family Development
CITZ Citizens' Services
DBC Destination BC
EMBC Emergency Management BC
EAO Environmental Assessment Office
EDUC Education
EMPR Energy, Mines & Petroleum Resources
ENV Environment & Climate Change Strategy
FIN Finance
FLNR Forests, Lands, Natural Resource Operations & Rural Development
HLTH Health
FLNR Indigenous Relations & Reconciliation
JEDC Jobs, Economic Development & Competitiveness
LBR Labour Policy & Legislation
LDB BC Liquor Distribution Branch
MMHA Mental Health & Addictions
MAH Municipal Affairs & Housing
BCPC Pension Corporation
PSA Public Safety & Solicitor General & Emergency B.C.
SDPR Social Development & Poverty Reduction
TCA Tourism, Arts & Culture
TRAN Transportation & Infrastructure

NOTE See an error or omission? Please create an issue here to get it remedied.

Update Visual Verifier deployment configurations

Following the recent updates to vc-visual-verifier, we should update the deployment configurations so that content from a configmap can be mounted on the container to customize the landing page.

The pattern to follow would be similar to what we already do for the components deployed using issuer-kit code, allowing the overrides to be defined by profile.

Issuer agent instances being heavily throttled in Demo Apps (a99fd4) environments

Several of the issuer agent instances are being throttled at >50% on average. Review and adjust the CPU resource allocations, primarily the CPU limit to reduce or eliminate the throttling. The goal should be to reduce throttling to <25% on average. For production an even lower average may be desirable.

These metrics can be easily reviewed using the Namespace Monitoring dashboard available through Grafana in our new monitoring stack.

Affected instances:

  • Open VP
  • Open VP CANdy

Deploy a sequence of Issuers and a Verifier for the ISED Business Banking Initiative Flow

<This is a work in progress -- details are still being added>

We need to deploy three standard issuers and a verifier in sequence as a stand in for the BC Registries issuer as part of the ISED Business Banking Initiative. That initiative has a business owner receiving three credentials about their business from BC Registries and then using those credentials to open a business bank account.

@esune -- I'll describe this using features we have today, but something to consider. Can we have the issuing happen from a single issuer using the same connection? No problem if not, but that would be neat :-)

The flow we'll be using is the following:

  • Use the test services card to get into a "BC registries verified person" credential
  • Use the "BC Registries verified person" VC to get a "registration" credential (about the business)
  • Use the "BC Registries verified person" and the "registration" credential to get a "Verified Relationship" credential (the person to the business)
  • Have "Visual Verifier" for the Bank that checks for all three VCs -- all data

The VCs we can start with are all defined here: https://github.com/bcgov/von-bc-registries-agent/blob/master/bcreg-aca/config/schemas.yml. We want to use:

  • demo.verified_person.registries.ca
  • registration.registries.ca
  • demo.person_relationship.registries.ca

For a first cut, the Visual Verifier can grab interesting ones from all three -- registration_id, entity_name, entity_status (registration), First Name, Last Name, email address, phone number (verfied person) and Registration ID, Associated registration name, relationship_description, relationship_status (verified person relationship).

Migrate OpenVP-CANdy services to use the BC Endorser Service

Dev:

  • DID: Ui6HA36FvN83cEtmYYHxrn rooted on CANdy-Dev
  • Update the DID with and Alias: CANdy - Unverified Person Issuer (Dev)
  • Ensure the author's agent is configured to be an author on the ledger (role=null)
  • Make sure all services connected to the author's agent, other than the wallet, are shutdown; controllers, apis, web interfaces.
  • Ensure the author's agent configuration has been updated to support the endorser protocol settings.
  • Update the author's agent settings to enable the endorser protocol.
  • Ensure READ_ONLY_LEDGER=false on the author's agent.
  • Accept TAA though the author's agent if needed. Switching to multi-ledger breaks existing TAAs
  • Ensure the author's public endpoint has been written to the ledger.
  • Register the agent with the BC Endorser Service using the ./manage registerAuthor script.
  • Restart all services connected to the author's agent.

Test:

  • Old DID: XZQpyaFa9hBUdJXfKHUvVg rooted on CANdy-Dev
    • Demote
  • New DID: HTkhhCW1bAXWnxC1u3YVoa rooted on CANdy-Test
  • Start out with ACAPY_READ_ONLY_LEDGER=true
  • Migrate the OpenVP-CANdy DID to CANdy-Test. Create a new DID, the existing one is on CANdy-Dev as it pre-dates the CANdy-Test ledger. Use the CANdy-Test - Government of British Columbia - Endorser to write the new DID.
  • Set the alias to CANdy - Unverified Person Issuer (Test)
  • Ensure the author's agent is configured to be an author on the ledger (role=null)
  • Make sure all services connected to the author's agent, other than the wallet, are shutdown; controllers, apis, web interfaces.
  • Ensure the author's agent configuration has been updated to support the endorser protocol settings.
  • Update the author's agent settings to enable the endorser protocol.
  • Ensure READ_ONLY_LEDGER=false on the author's agent.
  • Accept TAA though the author's agent if needed. Switching to multi-ledger breaks existing TAAs
  • Ensure the author's public endpoint has been written to the ledger.
  • Register the agent with the BC Endorser Service using the ./manage registerAuthor script.
  • Restart all services connected to the author's agent.
  • Ensure Schemas and Cred-Defs get written to the ledger.

"Prod":

  • Old DID: 9wVuYYDEDtpZ6CYMqSiWop rooted on CANdy-Dev
    • Demote
  • New DID: 4eCXHS79ykiMv2PoBxPK23 rooted on CANdy-Test
  • Start out with ACAPY_READ_ONLY_LEDGER=true
  • Migrate the OpenVP-CANdy DID to CANdy-Test (NOT CANdy-Prod). Create a new DID, the existing one is on CANdy-Dev as it pre-dates the CANdy-Test ledger. This VC is meant for testing purposes only. Such DIDs do not get written to production ledgers. Use the CANdy-Test - Government of British Columbia - Endorser to write the new DID.
  • Set the alias to CANdy - Unverified Person Issuer (Prod)
  • Ensure the author's agent is configured to be an author on the ledger (role=null)
  • Make sure all services connected to the author's agent, other than the wallet, are shutdown; controllers, apis, web interfaces.
  • Ensure the author's agent configuration has been updated to support the endorser protocol settings.
  • Update the author's agent settings to enable the endorser protocol.
  • Ensure READ_ONLY_LEDGER=false on the author's agent.
  • Accept TAA though the author's agent if needed. Switching to multi-ledger breaks existing TAAs
  • Ensure the author's public endpoint has been written to the ledger.
  • Register the agent with the BC Endorser Service using the ./manage registerAuthor script.
  • Restart all services connected to the author's agent.
  • Ensure Schemas and Cred-Defs get written to the ledger.

Update dependent services and references:

Test - XZQpyaFa9hBUdJXfKHUvVg => HTkhhCW1bAXWnxC1u3YVoa

"Prod" - 9wVuYYDEDtpZ6CYMqSiWop => 4eCXHS79ykiMv2PoBxPK23

Update URL for "PROD" environment

Add a new Unverified Person deployment that uses CANdy Dev as its ledger

Please deploy a new instance of the Unverified Person instance of Identity Kit, but anchored on the CANdy Dev network.

We will need to get an Endorser DID for this, and ideally have an automated way to create and execute transactions. However, for now, we can manually endorse (e.g., have Wade B do them with the Indy CLI) create, endorse and execute the necessary transactions.

For the URL, I suggest that we use "unvp-candy.dev" and then plan on later having a test versions of the URL.

Let me know what else is needed to get this done.

It's Been a While Since This Repository has Been Updated

This issue is a kind reminder that your repository has been inactive for 180 days. Some repositories are maintained in accordance with business requirements that infrequently change thus appearing inactive, and some repositories are inactive because they are unmaintained.

To help differentiate products that are unmaintained from products that do not require frequent maintenance, repomountie will open an issue whenever a repository has not been updated in 180 days.

  • If this product is being actively maintained, please close this issue.
  • If this repository isn't being actively maintained anymore, please archive this repository. Also, for bonus points, please add a dormant or retired life cycle badge.

Thank you for your help ensuring effective governance of our open-source ecosystem!

Update vc-authn URLs with OCP4 ones

The project contains a number of deployments of both issuer-web and visual-verifier that use vc-authn directly as authentication method.

Please update the configurations (either value in a secret or config.json) to use the new OCP4 URLs, paying attention to use the correct instance of vc-authn for each one.

Add project lifecycle badge

No Project Lifecycle Badge found in your readme!

Hello! I scanned your readme and could not find a project lifecycle badge. A project lifecycle badge will provide contributors to your project as well as other stakeholders (platform services, executive) insight into the lifecycle of your repository.

What is a Project Lifecycle Badge?

It is a simple image that neatly describes your project's stage in its lifecycle. More information can be found in the project lifecycle badges documentation.

What do I need to do?

I suggest you make a PR into your README.md and add a project lifecycle badge near the top where it is easy for your users to pick it up :). Once it is merged feel free to close this issue. I will not open up a new one :)

It's Been a While Since This Repository has Been Updated

This issue is a kind reminder that your repository has been inactive for 181 days. Some repositories are maintained in accordance with business requirements that infrequently change thus appearing inactive, and some repositories are inactive because they are unmaintained.

To help differentiate products that are unmaintained from products that do not require frequent maintenance, repomountie will open an issue whenever a repository has not been updated in 180 days.

  • If this product is being actively maintained, please close this issue.
  • If this repository isn't being actively maintained anymore, please archive this repository. Also, for bonus points, please add a dormant or retired life cycle badge.

Thank you for your help ensuring effective governance of our open-source ecosystem!

Update essential services delivery instances to use ACA-Py 0.7.3(-rc0 or not) and two ledgers

Please update the "essential services" delivery instances to all use two ledgers for reading - Sovrin Staging (current) and CANdy-Dev (new). All of the existing instances should continue to write to Sovrin Staging (if necessary at all -- only those with revocation should need that). In doing this, all instances of ACA-Py need to be upgraded to 0.7.3-RC0 (for now) and 0.7.3 when available.

Per #108 -- please add a new deployment to this repo for a new unverified person, where that instance using both Sovrin Staging and CANdy-Dev (per the others), but that writes to CANdy-Dev.

In implementing these changes, please consider what improvements could be made to the management. What would change if we use a multi-tenant ACA-Py instance? What if we were using the (being designed) Traction API?

Review resource limits

Agent deployments in the namespace seem to be affected by reaching the compute - long running quota, which causes new deployments to not roll-out.

Review and adjust resources as necessary.

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.