├── .assets
└── forseti-visualizer-example.gif
├── .github
├── stale.yaml
└── workflows
│ ├── codeql-analysis.yml
│ └── nodejs.yml
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── forseti-api
├── .babelrc
├── .dockerignore
├── .eslintrc
├── .gitignore
├── .jshintrc
├── Dockerfile
├── LICENSE
├── README.md
├── VERSION
├── WINDOWS.md
├── app.yaml
├── package-lock.json
├── package.json
├── protos
│ └── explain.proto
├── public
│ ├── cached_data
│ │ ├── resources.json
│ │ └── violations.json
│ ├── images
│ │ ├── cloud-sql-icon.png
│ │ └── forseti-visibility-icon.svg
│ └── styles
│ │ └── style.css
├── server.js
├── server
│ ├── api
│ │ ├── forseti.js
│ │ ├── index.js
│ │ └── user.js
│ ├── db.js
│ ├── middleware
│ │ └── index.js
│ ├── render-helpers
│ │ └── index.js
│ └── services
│ │ ├── database-service-base.js
│ │ ├── forseti-service-cache.js
│ │ ├── forseti-service-factory.js
│ │ ├── forseti-service.js
│ │ ├── mysql-db-connection.js
│ │ └── spanner-service.js
├── source.env.tpl
├── source.ps1.tpl
├── test
│ ├── server.test.js
│ └── server
│ │ ├── api
│ │ └── forseti.test.js
│ │ └── services
│ │ ├── database-service-base.test.js
│ │ ├── forseti-service.test.js
│ │ └── gcs-service.test.js
└── views
│ ├── error.pug
│ └── index.pug
├── forseti-visualizer-ui
├── .eslintrc.json
├── .gitignore
├── .jsbeautifyrc
├── .jshintrc
├── .prettierrc.json
├── Dockerfile
├── README.md
├── babel.config.js
├── package-lock.json
├── package.json
├── public
│ ├── Products & Services
│ │ ├── API Platform & Ecosystems
│ │ │ ├── API Analytics.png
│ │ │ ├── API Analytics.svg
│ │ │ ├── API Monetization.png
│ │ │ ├── API Monetization.svg
│ │ │ ├── Apigee API Platform.png
│ │ │ ├── Apigee API Platform.svg
│ │ │ ├── Apigee Sense.png
│ │ │ ├── Apigee Sense.svg
│ │ │ ├── Cloud Endpoints.png
│ │ │ ├── Cloud Endpoints.svg
│ │ │ ├── Developer Portal.png
│ │ │ └── Developer Portal.svg
│ │ ├── Big Data
│ │ │ ├── BigQuery.png
│ │ │ ├── BigQuery.svg
│ │ │ ├── Cloud Composer.png
│ │ │ ├── Cloud Composer.svg
│ │ │ ├── Cloud Dataflow.png
│ │ │ ├── Cloud Dataflow.svg
│ │ │ ├── Cloud Datalab.png
│ │ │ ├── Cloud Datalab.svg
│ │ │ ├── Cloud Dataprep.png
│ │ │ ├── Cloud Dataprep.svg
│ │ │ ├── Cloud Dataproc.png
│ │ │ ├── Cloud Dataproc.svg
│ │ │ ├── Cloud PubSub.png
│ │ │ ├── Cloud PubSub.svg
│ │ │ ├── Data Studio.png
│ │ │ ├── Data Studio.svg
│ │ │ ├── Genomics.png
│ │ │ └── Genomics.svg
│ │ ├── Cloud AI
│ │ │ ├── Advanced Solutions Lab.png
│ │ │ ├── Advanced Solutions Lab.svg
│ │ │ ├── Cloud AutoML.png
│ │ │ ├── Cloud AutoML.svg
│ │ │ ├── Cloud Jobs API.png
│ │ │ ├── Cloud Jobs API.svg
│ │ │ ├── Cloud Machine Learning.png
│ │ │ ├── Cloud Machine Learning.svg
│ │ │ ├── Cloud Natural Language API.png
│ │ │ ├── Cloud Natural Language API.svg
│ │ │ ├── Cloud Speech API.png
│ │ │ ├── Cloud Speech API.svg
│ │ │ ├── Cloud TPU.png
│ │ │ ├── Cloud TPU.svg
│ │ │ ├── Cloud Text-to-Speech.png
│ │ │ ├── Cloud Text-to-Speech.svg
│ │ │ ├── Cloud Translation API.png
│ │ │ ├── Cloud Translation API.svg
│ │ │ ├── Cloud Video Intelligence API.png
│ │ │ ├── Cloud Video Intelligence API.svg
│ │ │ ├── Cloud Vision API.png
│ │ │ ├── Cloud Vision API.svg
│ │ │ ├── Dialogflow Enterprise Edition.png
│ │ │ └── Dialogflow Enterprise Edition.svg
│ │ ├── Compute
│ │ │ ├── App Engine.png
│ │ │ ├── App Engine.svg
│ │ │ ├── Cloud Functions.png
│ │ │ ├── Cloud Functions.svg
│ │ │ ├── Compute Engine.png
│ │ │ ├── Compute Engine.svg
│ │ │ ├── Container Engine.png
│ │ │ ├── Container Engine.svg
│ │ │ ├── Container-Optimized OS.png
│ │ │ ├── Container-Optimized OS.svg
│ │ │ ├── GPU.png
│ │ │ └── GPU.svg
│ │ ├── Data Transfer
│ │ │ ├── Transfer Appliance.png
│ │ │ └── Transfer Appliance.svg
│ │ ├── Developer Tools
│ │ │ ├── Cloud Deployment Manager.png
│ │ │ ├── Cloud Deployment Manager.svg
│ │ │ ├── Cloud SDK.png
│ │ │ ├── Cloud SDK.svg
│ │ │ ├── Cloud Source Repositories.png
│ │ │ ├── Cloud Source Repositories.svg
│ │ │ ├── Cloud Test Lab.png
│ │ │ ├── Cloud Test Lab.svg
│ │ │ ├── Cloud Tools for Android Studio.png
│ │ │ ├── Cloud Tools for Android Studio.svg
│ │ │ ├── Cloud Tools for IntelliJ.png
│ │ │ ├── Cloud Tools for IntelliJ.svg
│ │ │ ├── Cloud Tools for PowerShell.png
│ │ │ ├── Cloud Tools for PowerShell.svg
│ │ │ ├── Cloud Tools for Visual Studio.png
│ │ │ ├── Cloud Tools for Visual Studio.svg
│ │ │ ├── Container Builder.png
│ │ │ ├── Container Builder.svg
│ │ │ ├── Container Registry.png
│ │ │ ├── Container Registry.svg
│ │ │ ├── Google Plugin for Eclipse.png
│ │ │ └── Google Plugin for Eclipse.svg
│ │ ├── Extras
│ │ │ ├── Blue Hexagon.png
│ │ │ ├── Blue Hexagon.svg
│ │ │ ├── Expanded Product Card Icons
│ │ │ │ ├── App-Engine.png
│ │ │ │ ├── App-Engine.svg
│ │ │ │ ├── Cloud-Dataflow.png
│ │ │ │ ├── Cloud-Dataflow.svg
│ │ │ │ ├── Cloud-Dataproc.png
│ │ │ │ ├── Cloud-Dataproc.svg
│ │ │ │ ├── Compute-Engine.png
│ │ │ │ ├── Compute-Engine.svg
│ │ │ │ ├── Container-Engine.png
│ │ │ │ ├── Container-Engine.svg
│ │ │ │ ├── modifiers_autoscaling.png
│ │ │ │ ├── modifiers_autoscaling.svg
│ │ │ │ ├── modifiers_custom-virtual-machine.png
│ │ │ │ ├── modifiers_custom-virtual-machine.svg
│ │ │ │ ├── modifiers_high-CPU-machine.png
│ │ │ │ ├── modifiers_high-CPU-machine.svg
│ │ │ │ ├── modifiers_high-memory-machine.png
│ │ │ │ ├── modifiers_high-memory-machine.svg
│ │ │ │ ├── modifiers_preemptable-vm.png
│ │ │ │ ├── modifiers_preemptable-vm.svg
│ │ │ │ ├── modifiers_shared-core-machine-F1.png
│ │ │ │ ├── modifiers_shared-core-machine-F1.svg
│ │ │ │ ├── modifiers_shared-core-machine-G1.png
│ │ │ │ ├── modifiers_shared-core-machine-G1.svg
│ │ │ │ ├── modifiers_standard-machine.png
│ │ │ │ ├── modifiers_standard-machine.svg
│ │ │ │ ├── modifiers_storage.png
│ │ │ │ └── modifiers_storage.svg
│ │ │ ├── Generic GCP.png
│ │ │ ├── Generic GCP.svg
│ │ │ ├── Google Cloud Platform.png
│ │ │ ├── Google Cloud Platform.svg
│ │ │ ├── Google Cloud Platform_lockup.png
│ │ │ ├── Google Cloud Platform_lockup.svg
│ │ │ ├── Open Source Icons
│ │ │ │ ├── Forseti_lockup.png
│ │ │ │ ├── Forseti_lockup.svg
│ │ │ │ ├── Forseti_logo.png
│ │ │ │ ├── Forseti_logo.svg
│ │ │ │ ├── Istio_logo.png
│ │ │ │ ├── Istio_logo.svg
│ │ │ │ ├── Kubernetes_logo.png
│ │ │ │ ├── Kubernetes_logo.svg
│ │ │ │ ├── Kubernetes_name.png
│ │ │ │ ├── Kubernetes_name.svg
│ │ │ │ ├── TensorFlow_lockup.png
│ │ │ │ ├── TensorFlow_logo.png
│ │ │ │ └── TensorFlow_logo.svg
│ │ │ ├── Prediction API.png
│ │ │ └── Prediction API.svg
│ │ ├── Identity & Security
│ │ │ ├── BeyondCorp.png
│ │ │ ├── BeyondCorp.svg
│ │ │ ├── Cloud IAM.png
│ │ │ ├── Cloud IAM.svg
│ │ │ ├── Cloud Resource Manager.png
│ │ │ ├── Cloud Resource Manager.svg
│ │ │ ├── Cloud Security Command Center.png
│ │ │ ├── Cloud Security Command Center.svg
│ │ │ ├── Cloud Security Scanner.png
│ │ │ ├── Cloud Security Scanner.svg
│ │ │ ├── Data Loss Prevention API.png
│ │ │ ├── Data Loss Prevention API.svg
│ │ │ ├── Identity-Aware Proxy.png
│ │ │ ├── Identity-Aware Proxy.svg
│ │ │ ├── Key Management Service.png
│ │ │ ├── Key Management Service.svg
│ │ │ ├── Security Key Enforcement.png
│ │ │ └── Security Key Enforcement.svg
│ │ ├── Internet of Things
│ │ │ ├── Cloud IoT Core.png
│ │ │ └── Cloud IoT Core.svg
│ │ ├── Management Tools
│ │ │ ├── Cloud APIs.png
│ │ │ ├── Cloud APIs.svg
│ │ │ ├── Cloud Billing API.png
│ │ │ ├── Cloud Billing API.svg
│ │ │ ├── Cloud Console.png
│ │ │ ├── Cloud Console.svg
│ │ │ ├── Cloud Deployment Manager.png
│ │ │ ├── Cloud Deployment Manager.svg
│ │ │ ├── Cloud Mobile App.png
│ │ │ ├── Cloud Mobile App.svg
│ │ │ ├── Cloud Shell.png
│ │ │ ├── Cloud Shell.svg
│ │ │ ├── Debugger.png
│ │ │ ├── Debugger.svg
│ │ │ ├── Error Reporting.png
│ │ │ ├── Error Reporting.svg
│ │ │ ├── Logging.png
│ │ │ ├── Logging.svg
│ │ │ ├── Monitoring.png
│ │ │ ├── Monitoring.svg
│ │ │ ├── Stackdriver.png
│ │ │ ├── Stackdriver.svg
│ │ │ ├── Trace.png
│ │ │ └── Trace.svg
│ │ ├── Networking
│ │ │ ├── Cloud Armor.png
│ │ │ ├── Cloud Armor.svg
│ │ │ ├── Cloud CDN.png
│ │ │ ├── Cloud CDN.svg
│ │ │ ├── Cloud DNS.png
│ │ │ ├── Cloud DNS.svg
│ │ │ ├── Cloud External IP Addresses.png
│ │ │ ├── Cloud External IP Addresses.svg
│ │ │ ├── Cloud Firewall Rules.png
│ │ │ ├── Cloud Firewall Rules.svg
│ │ │ ├── Cloud Load Balancing.png
│ │ │ ├── Cloud Load Balancing.svg
│ │ │ ├── Cloud Network.png
│ │ │ ├── Cloud Network.svg
│ │ │ ├── Cloud Router.png
│ │ │ ├── Cloud Router.svg
│ │ │ ├── Cloud Routes.png
│ │ │ ├── Cloud Routes.svg
│ │ │ ├── Cloud VPN.png
│ │ │ ├── Cloud VPN.svg
│ │ │ ├── Dedicated Interconnect.png
│ │ │ ├── Dedicated Interconnect.svg
│ │ │ ├── Partner Interconnect.png
│ │ │ ├── Partner Interconnect.svg
│ │ │ ├── Premium Network Tier.png
│ │ │ ├── Premium Network Tier.svg
│ │ │ ├── Standard Network Tier.png
│ │ │ ├── Standard Network Tier.svg
│ │ │ ├── Virtual Private Cloud.png
│ │ │ └── Virtual Private Cloud.svg
│ │ ├── README.md
│ │ ├── Storage & Databases
│ │ │ ├── Cloud Bigtable.png
│ │ │ ├── Cloud Bigtable.svg
│ │ │ ├── Cloud Datastore.png
│ │ │ ├── Cloud Datastore.svg
│ │ │ ├── Cloud Memorystore.png
│ │ │ ├── Cloud Memorystore.svg
│ │ │ ├── Cloud SQL.png
│ │ │ ├── Cloud SQL.svg
│ │ │ ├── Cloud Spanner.png
│ │ │ ├── Cloud Spanner.svg
│ │ │ ├── Cloud Storage.png
│ │ │ ├── Cloud Storage.svg
│ │ │ ├── Persistent Disk.png
│ │ │ └── Persistent Disk.svg
│ │ ├── _Other_Imported
│ │ │ ├── cloud_logo.png
│ │ │ ├── folder_logo.png
│ │ │ └── project_logo.png
│ │ ├── public
│ │ │ ├── API Analytics.png
│ │ │ ├── API Monetization.png
│ │ │ ├── Advanced Solutions Lab.png
│ │ │ ├── Apigee API Platform.png
│ │ │ ├── Apigee Sense.png
│ │ │ ├── App Engine.png
│ │ │ ├── App-Engine.png
│ │ │ ├── BeyondCorp.png
│ │ │ ├── BigQuery.png
│ │ │ ├── Blue Hexagon.png
│ │ │ ├── Cloud APIs.png
│ │ │ ├── Cloud Armor.png
│ │ │ ├── Cloud AutoML.png
│ │ │ ├── Cloud Bigtable.png
│ │ │ ├── Cloud Billing API.png
│ │ │ ├── Cloud CDN.png
│ │ │ ├── Cloud Composer.png
│ │ │ ├── Cloud Console.png
│ │ │ ├── Cloud DNS.png
│ │ │ ├── Cloud Dataflow.png
│ │ │ ├── Cloud Datalab.png
│ │ │ ├── Cloud Dataprep.png
│ │ │ ├── Cloud Dataproc.png
│ │ │ ├── Cloud Datastore.png
│ │ │ ├── Cloud Deployment Manager.png
│ │ │ ├── Cloud Endpoints.png
│ │ │ ├── Cloud External IP Addresses.png
│ │ │ ├── Cloud Firewall Rules.png
│ │ │ ├── Cloud Functions.png
│ │ │ ├── Cloud IAM.png
│ │ │ ├── Cloud IoT Core.png
│ │ │ ├── Cloud Jobs API.png
│ │ │ ├── Cloud Load Balancing.png
│ │ │ ├── Cloud Machine Learning.png
│ │ │ ├── Cloud Memorystore.png
│ │ │ ├── Cloud Mobile App.png
│ │ │ ├── Cloud Natural Language API.png
│ │ │ ├── Cloud Network.png
│ │ │ ├── Cloud PubSub.png
│ │ │ ├── Cloud Resource Manager.png
│ │ │ ├── Cloud Router.png
│ │ │ ├── Cloud Routes.png
│ │ │ ├── Cloud SDK.png
│ │ │ ├── Cloud SQL.png
│ │ │ ├── Cloud Security Command Center.png
│ │ │ ├── Cloud Security Scanner.png
│ │ │ ├── Cloud Shell.png
│ │ │ ├── Cloud Source Repositories.png
│ │ │ ├── Cloud Spanner.png
│ │ │ ├── Cloud Speech API.png
│ │ │ ├── Cloud Storage.png
│ │ │ ├── Cloud TPU.png
│ │ │ ├── Cloud Test Lab.png
│ │ │ ├── Cloud Text-to-Speech.png
│ │ │ ├── Cloud Tools for Android Studio.png
│ │ │ ├── Cloud Tools for IntelliJ.png
│ │ │ ├── Cloud Tools for PowerShell.png
│ │ │ ├── Cloud Tools for Visual Studio.png
│ │ │ ├── Cloud Translation API.png
│ │ │ ├── Cloud VPN.png
│ │ │ ├── Cloud Video Intelligence API.png
│ │ │ ├── Cloud Vision API.png
│ │ │ ├── Cloud-Dataflow.png
│ │ │ ├── Cloud-Dataproc.png
│ │ │ ├── Compute Engine.png
│ │ │ ├── Compute-Engine.png
│ │ │ ├── Container Builder.png
│ │ │ ├── Container Engine.png
│ │ │ ├── Container Registry.png
│ │ │ ├── Container-Engine.png
│ │ │ ├── Container-Optimized OS.png
│ │ │ ├── Data Loss Prevention API.png
│ │ │ ├── Data Studio.png
│ │ │ ├── Debugger.png
│ │ │ ├── Dedicated Interconnect.png
│ │ │ ├── Developer Portal.png
│ │ │ ├── Dialogflow Enterprise Edition.png
│ │ │ ├── Error Reporting.png
│ │ │ ├── Forseti_lockup.png
│ │ │ ├── Forseti_logo.png
│ │ │ ├── GPU.png
│ │ │ ├── Generic GCP.png
│ │ │ ├── Genomics.png
│ │ │ ├── Google Cloud Platform.png
│ │ │ ├── Google Cloud Platform_lockup.png
│ │ │ ├── Google Plugin for Eclipse.png
│ │ │ ├── Identity-Aware Proxy.png
│ │ │ ├── Istio_logo.png
│ │ │ ├── Key Management Service.png
│ │ │ ├── Kubernetes_logo.png
│ │ │ ├── Kubernetes_name.png
│ │ │ ├── Logging.png
│ │ │ ├── Monitoring.png
│ │ │ ├── Partner Interconnect.png
│ │ │ ├── Persistent Disk.png
│ │ │ ├── Prediction API.png
│ │ │ ├── Premium Network Tier.png
│ │ │ ├── Security Key Enforcement.png
│ │ │ ├── Stackdriver.png
│ │ │ ├── Standard Network Tier.png
│ │ │ ├── TensorFlow_lockup.png
│ │ │ ├── TensorFlow_logo.png
│ │ │ ├── Trace.png
│ │ │ ├── Transfer Appliance.png
│ │ │ ├── Virtual Private Cloud.png
│ │ │ ├── cloud_logo.png
│ │ │ ├── folder_logo.png
│ │ │ ├── modifiers_autoscaling.png
│ │ │ ├── modifiers_custom-virtual-machine.png
│ │ │ ├── modifiers_high-CPU-machine.png
│ │ │ ├── modifiers_high-memory-machine.png
│ │ │ ├── modifiers_preemptable-vm.png
│ │ │ ├── modifiers_shared-core-machine-F1.png
│ │ │ ├── modifiers_shared-core-machine-G1.png
│ │ │ ├── modifiers_standard-machine.png
│ │ │ ├── modifiers_storage.png
│ │ │ └── project_logo.png
│ │ └── upload.sh
│ ├── favicon.ico
│ └── index.html
├── src
│ ├── App.vue
│ ├── assets
│ │ ├── logo.png
│ │ ├── logo.svg
│ │ └── logo2.png
│ ├── components
│ │ ├── BottomDetailsView.vue
│ │ ├── BottomDetailsViolations.vue
│ │ ├── Navbar.vue
│ │ ├── ResourceNavbar.vue
│ │ ├── Resources.vue
│ │ └── Visualizer.vue
│ ├── constants
│ │ ├── ColorConfig.js
│ │ ├── Orientation.js
│ │ ├── ResourceType.js
│ │ └── VisualizerConfig.js
│ ├── main.js
│ ├── plugins
│ │ └── vuetify.js
│ ├── services
│ │ ├── D3Helpers.js
│ │ ├── DataService.js
│ │ ├── DataServiceFactory.js
│ │ ├── Filters.js
│ │ ├── ForsetiResourceConverter.js
│ │ ├── ForsetiSetParentService.js
│ │ ├── GoogleCloudImageService.js
│ │ ├── JSONBeautifier.js
│ │ ├── ResourceDataServiceHandler.js
│ │ ├── Sorters.js
│ │ └── TooltipRenderer.js
│ └── stores
│ │ ├── Counter.js
│ │ └── ResourceArray.js
└── test
│ ├── App.test.js
│ ├── bundle.test.js
│ ├── services
│ ├── AllTests.js
│ ├── D3Helpers.test.js
│ └── JSONBeautifier.test.js
│ └── webpack.test.config.js
├── infrastructure
├── README.md
├── VERSION
├── build-images.sh
├── cluster-template
│ ├── certificate.yaml
│ ├── cleanup.sh
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── forseti-security-1e88-app-50dd3d26
│ │ ├── certificate.yaml
│ │ ├── configmap.yaml
│ │ ├── deployment.yaml
│ │ ├── ingress-tls.yaml
│ │ ├── ingress.yaml
│ │ ├── letsencrypt-issuer.yaml
│ │ ├── openapi.yaml
│ │ └── service.yaml
│ ├── forseti-security-1e88-app-66c1ab27
│ │ ├── certificate.yaml
│ │ ├── configmap.yaml
│ │ ├── deployment.yaml
│ │ ├── ingress-tls.yaml
│ │ ├── ingress.yaml
│ │ ├── letsencrypt-issuer.yaml
│ │ ├── openapi.yaml
│ │ └── service.yaml
│ ├── forseti-security-1e88-app-85b0ffbc
│ │ ├── certificate.yaml
│ │ ├── cleanup.sh
│ │ ├── configmap.yaml
│ │ ├── deployment.yaml
│ │ ├── ingress-tls.yaml
│ │ ├── ingress.yaml
│ │ ├── letsencrypt-issuer.yaml
│ │ ├── openapi.yaml
│ │ └── service.yaml
│ ├── get_helm.sh
│ ├── ingress-tls.yaml
│ ├── ingress.yaml
│ ├── letsencrypt-issuer.yaml
│ ├── openapi.yaml
│ ├── replace_and_deploy.sh
│ ├── service.yaml
│ └── templates
│ │ ├── certificate.yaml
│ │ ├── configmap.yaml
│ │ ├── deployment.yaml
│ │ ├── ingress-tls.yaml
│ │ ├── ingress.yaml
│ │ ├── letsencrypt-issuer.yaml
│ │ ├── openapi.yaml
│ │ └── service.yaml
├── deployments
│ ├── deploy-cloudrun.sh
│ ├── deploy-gce.sh
│ ├── deploy-gke.sh
│ ├── teardown-cloudrun.sh
│ └── teardown-gce.sh
└── utils
│ ├── get_helm.sh
│ └── version_utils.sh
├── sandbox
└── grpc-testing
│ ├── grpc.js
│ ├── package-lock.json
│ ├── package.json
│ ├── protos
│ └── explain.proto
│ ├── xargs.js
│ └── yargs.js
└── tools
├── start_cloud_sql_proxy.sample.sh
└── start_cloud_sql_proxy_fs-2-23.sh
/.assets/forseti-visualizer-example.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/.assets/forseti-visualizer-example.gif
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to Contribute
2 |
3 | We'd love to accept your patches and contributions to this project. There are
4 | just a few small guidelines you need to follow.
5 |
6 | ## Contributor License Agreement
7 |
8 | Contributions to this project must be accompanied by a Contributor License
9 | Agreement. You (or your employer) retain the copyright to your contribution;
10 | this simply gives us permission to use and redistribute your contributions as
11 | part of the project. Head over to to see
12 | your current agreements on file or to sign a new one.
13 |
14 | You generally only need to submit a CLA once, so if you've already submitted one
15 | (even if it was for a different project), you probably don't need to do it
16 | again.
17 |
18 | ## Code reviews
19 |
20 | All submissions, including submissions by project members, require review. We
21 | use GitHub pull requests for this purpose. Consult
22 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
23 | information on using pull requests.
24 |
25 | ## Community Guidelines
26 |
27 | This project follows
28 | [Google's Open Source Community Guidelines](https://opensource.google.com/conduct/).
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | Use this section to tell people about which versions of your project are
6 | currently being supported with security updates.
7 |
8 | | Version | Supported |
9 | | ------- | ------------------ |
10 | | 5.1.x | :white_check_mark: |
11 | | 5.0.x | :x: |
12 | | 4.0.x | :white_check_mark: |
13 | | < 4.0 | :x: |
14 |
15 | ## Reporting a Vulnerability
16 |
17 | Use this section to tell people how to report a vulnerability.
18 |
19 | Tell them where to go, how often they can expect to get an update on a
20 | reported vulnerability, what to expect if the vulnerability is accepted or
21 | declined, etc.
22 |
--------------------------------------------------------------------------------
/forseti-api/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["@babel/preset-env"]
3 | }
--------------------------------------------------------------------------------
/forseti-api/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | npm-debug.log
3 |
4 |
--------------------------------------------------------------------------------
/forseti-api/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "vue-eslint-parser",
3 | "parserOptions": {
4 | "ecmaVersion": 6,
5 | "sourceType": "module",
6 | "ecmaFeatures": {
7 | "jsx": true,
8 | "legacyDecorators": true,
9 | "modules": true,
10 | "experimentalObjectRestSpread": true
11 | }
12 | },
13 | "rules": {
14 | "semi": "error",
15 | "no-console": 0
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/forseti-api/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .token
3 |
--------------------------------------------------------------------------------
/forseti-api/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "esversion": 6
3 | }
--------------------------------------------------------------------------------
/forseti-api/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:8
2 |
3 | # Create app directory
4 | WORKDIR /usr/src/app
5 |
6 | # Install app dependencies
7 | # A wildcard is used to ensure both package.json AND package-lock.json are copied
8 | # where available (npm@5+)
9 | COPY package*.json ./
10 |
11 | RUN npm install
12 | # If you are building your code for production
13 | # RUN npm install --only=production
14 |
15 | # Bundle app source
16 | COPY . .
17 |
18 | EXPOSE 8080
19 | CMD [ "npm", "start" ]
20 |
--------------------------------------------------------------------------------
/forseti-api/VERSION:
--------------------------------------------------------------------------------
1 | v1
2 |
--------------------------------------------------------------------------------
/forseti-api/WINDOWS.md:
--------------------------------------------------------------------------------
1 | # WINDOWS Notes
2 |
3 | To source in environment variables on a Windows Operating System, run the following command within the PS1 Terminal:
4 |
5 | ```ps1
6 | $env:API_HOST="0.0.0.1"
7 | $env:API_PORT="8083"
8 | $env:CLOUDSQL_HOSTNAME="127.0.0.1"
9 | $env:CLOUDSQL_USERNAME="forseti_security_user"
10 | $env:CLOUDSQL_PASSWORD=""
11 | $env:CLOUDSQL_SCHEMA="forseti_security"
12 | $env:FORSETI_SERVER_VM_CHANNEL="35.232.70.205:50051"
13 | $env:FORSETI_DATA_MODEL_HANDLE="1d11c1d62a7e589153f10512d09710fe"
14 | $env:PROJECT_ID="forseti-analytics"
15 | $env:CACHE_ENABLED="true"
16 | ```
17 |
18 | Alternatively, you can run the following
19 |
20 | ```ps1
21 | $EnvVars = Get-Content source.ps1.tpl
22 | $EnvVars | foreach {
23 | $name, $value = $_.split('=')
24 | Set-Content env:\$name $value
25 | }
26 | ```
--------------------------------------------------------------------------------
/forseti-api/public/images/cloud-sql-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-api/public/images/cloud-sql-icon.png
--------------------------------------------------------------------------------
/forseti-api/public/styles/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | font-family: Roboto,Helvetica,Arial,sans-serif;
3 | }
4 |
5 | h3 {
6 | font-size: 36px;
7 | font-weight: 300;
8 | color: #1976d2;
9 | }
10 |
11 | p {
12 | font-size: 130%;
13 | font-weight: 300;
14 | }
--------------------------------------------------------------------------------
/forseti-api/server/db.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | export default callback => {
16 | // connect to a database if needed, then pass it to `callback`:
17 | callback();
18 | }
--------------------------------------------------------------------------------
/forseti-api/server/middleware/index.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import { Router } from 'express';
16 |
17 | export default ({ config, db }) => {
18 | let routes = Router();
19 |
20 | // add middleware here
21 |
22 | return routes;
23 | }
--------------------------------------------------------------------------------
/forseti-api/server/render-helpers/index.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | const title = 'Forseti Visualizer';
16 | export default {
17 | renderIndex: function (res, version, canConnectToCloudSql) {
18 | res.render('index', {
19 | title: title,
20 | version: version,
21 | canConnectToCloudSql: canConnectToCloudSql
22 | });
23 | },
24 | renderError: function (res, version, errorMsg) {
25 | res.render('error', {
26 | title: title,
27 | version: version,
28 | errorMsg: errorMsg
29 | });
30 | }
31 | };
--------------------------------------------------------------------------------
/forseti-api/server/services/database-service-base.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | /* database-service-base */
16 | import MySQLDbConnection from './mysql-db-connection';
17 |
18 | class DatabaseServiceBase {
19 | constructor() {}
20 |
21 | getMySqlDbConnection(hostname, user, pass, schema) {
22 | return new MySQLDbConnection(hostname, user, pass, schema);
23 | }
24 | }
25 |
26 | export default DatabaseServiceBase;
--------------------------------------------------------------------------------
/forseti-api/server/services/spanner-service.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-api/server/services/spanner-service.js
--------------------------------------------------------------------------------
/forseti-api/source.env.tpl:
--------------------------------------------------------------------------------
1 | export API_HOST="0.0.0.0"
2 | export API_PORT="8080"
3 | export CLOUDSQL_HOSTNAME="127.0.0.1"
4 | export CLOUDSQL_USERNAME="forseti_security_user"
5 | export CLOUDSQL_PASSWORD=""
6 | export CLOUDSQL_SCHEMA="forseti_security"
7 | export FORSETI_SERVER_VM_CHANNEL="35.232.70.205:50051"
8 | export FORSETI_DATA_MODEL_HANDLE="1d11c1d62a7e589153f10512d09710fe"
9 | export PROJECT_ID="forseti-analytics"
10 | export CACHE_ENABLED=true
11 |
--------------------------------------------------------------------------------
/forseti-api/source.ps1.tpl:
--------------------------------------------------------------------------------
1 | API_HOST=0.0.0.0
2 | API_PORT=8083
3 | CLOUDSQL_HOSTNAME=127.0.0.1
4 | CLOUDSQL_USERNAME=forseti_security_user
5 | CLOUDSQL_PASSWORD=
6 | CLOUDSQL_SCHEMA=forseti_security
7 | FORSETI_SERVER_VM_CHANNEL=35.232.70.205:50051
8 | FORSETI_DATA_MODEL_HANDLE=1d11c1d62a7e589153f10512d09710fe
9 | PROJECT_ID=forseti-analytics
10 | CACHE_ENABLED=true
11 |
--------------------------------------------------------------------------------
/forseti-api/test/server/services/gcs-service.test.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | /* forseti-service */
16 | import {
17 | assert
18 | } from 'chai'
19 | import chai from 'chai'
20 | import sinon from 'sinon'
21 | import sinonChai from 'sinon-chai'
22 | chai.use(sinonChai)
23 |
24 | import regeneratorRuntime from "regenerator-runtime";
25 | const {Storage} = require('@google-cloud/storage');
26 |
27 | describe('gcs-service.js', async () => {
28 | let sut
29 | let initEventSpy
30 |
31 | beforeEach(async () => {
32 |
33 | })
34 | })
35 |
--------------------------------------------------------------------------------
/forseti-api/views/error.pug:
--------------------------------------------------------------------------------
1 | html
2 | head
3 | title= title
4 |
5 | link(href='https://fonts.googleapis.com/icon?family=Material+Icons', rel='stylesheet')
6 | link(href='https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/css/materialize.min.css', rel='stylesheet')
7 | style
8 | include ../public/styles/style.css
9 | body
10 |
11 | div(class="container-fluid")
12 | div(class="row")
13 | div(class="col s12 m12", style={'text-align': 'center' })
14 | h3 Forseti Visualizer API Error v#{version}
15 | p(style={ color: 'red' }) An error has occurred. Please confirm that you have run `source source.env` and that the environment variables are properly set.
16 | img(src="/images/forseti-visibility-icon.svg", style={'text-align': 'center', height: '176px', width: '176px', 'border-radius': '50%'})
17 |
18 | script(src="https://code.jquery.com/jquery-3.5.0.min.js")
19 | script(src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/js/materialize.min.js")
20 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "vue-eslint-parser",
3 | "parserOptions": {
4 | "ecmaVersion": 6,
5 | "sourceType": "module",
6 | "ecmaFeatures": {
7 | "jsx": true,
8 | "legacyDecorators": true,
9 | "modules": true,
10 | "experimentalObjectRestSpread": true
11 | }
12 | },
13 | "rules": {
14 | "semi": "error",
15 | "no-console": 0
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw*
22 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/.jsbeautifyrc:
--------------------------------------------------------------------------------
1 | {
2 | "indent_size": 2,
3 | "indent_char": " ",
4 | "indent_level": 0,
5 | "end-with-newline": true,
6 | "indent_with_tabs": false,
7 | "preserve_newlines": true,
8 | "max_preserve_newlines": 10,
9 | "jslint_happy": false,
10 | "space_after_anon_function": false,
11 | "brace_style": "collapse,preserve-inline",
12 | "keep_array_indentation": false,
13 | "keep_function_indentation": false,
14 | "space_before_conditional": true,
15 | "break_chained_methods": false,
16 | "eval_code": false,
17 | "unescape_strings": false,
18 | "wrap_line_length": 0,
19 | "css": {
20 | "selector_separator_newline": false
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "esversion": 6
3 | }
--------------------------------------------------------------------------------
/forseti-visualizer-ui/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "trailingComma": "es5",
3 | "tabWidth": 4,
4 | "semi": true,
5 | "singleQuote": true
6 | }
7 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google LLC
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # https://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | FROM node:9.11.1-alpine
16 |
17 | # install simple http server for serving static content
18 | RUN npm install -g http-server
19 |
20 | # make the 'app' folder the current working directory
21 | WORKDIR .
22 |
23 | # copy both 'package.json' and 'package-lock.json' (if available)
24 | COPY package*.json ./
25 |
26 | # install project dependencies
27 | RUN npm install
28 |
29 | # copy project files and folders to the current working directory (i.e. 'app' folder)
30 | COPY . .
31 |
32 | # build app for production with minification
33 | RUN npm run build
34 |
35 | EXPOSE 8081
36 | CMD [ "http-server", "dist", "-p", "8081" ]
37 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/README.md:
--------------------------------------------------------------------------------
1 | # Forseti Visualizer UI
2 |
3 | Forseti Visualizer is the frontend aspect to visualize and communicate policy violation, via providing an interactive, visual user experience integrated with Forseti Security.
4 |
5 | ## Pre-Requisites
6 |
7 | Forseti Visualizer is written in D3v5, Node.js v10.0.0+ and Vue.js 2.5+. The application leverages babel for transpilation.
8 |
9 | ## Getting Started
10 |
11 | Navigate to the forseti-visualizer-ui/ directory, install packages and run the app.
12 |
13 | ```bash
14 | cd forseti-visualizer-ui/
15 | npm install
16 | npm start # app served on :8081
17 | ```
18 |
19 | ## Connecting to Visualizer API
20 |
21 | ```bash
22 | # If Mac OSX/Linux
23 | npm run build
24 | rm -rf ../forseti-api/dist-forseti-visualizer-ui && cp -R dist/ ../forseti-api/dist-forseti-visualizer-ui
25 |
26 | # If Windows
27 | npm run build-windows
28 | rmdir -r ../forseti-api/dist-forseti-visualizer-ui && cp -R dist/ ../forseti-api/dist-forseti-visualizer-ui
29 |
30 | ```
31 |
32 | ## Testing
33 |
34 | Tests written in jest.
35 |
36 | ```bash
37 | # execute tests
38 | npm run test
39 | ```
40 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/babel.config.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | module.exports = {
16 | presets: [
17 | '@vue/app'
18 | ]
19 | };
20 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/API Analytics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/API Analytics.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/API Monetization.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/API Monetization.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Apigee API Platform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Apigee API Platform.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Apigee Sense.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Apigee Sense.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Cloud Endpoints.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Cloud Endpoints.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Developer Portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/API Platform & Ecosystems/Developer Portal.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/BigQuery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/BigQuery.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Composer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Composer.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Composer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Dataflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Dataflow.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Datalab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Datalab.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Dataprep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Dataprep.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Dataproc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud Dataproc.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud PubSub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Cloud PubSub.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Data Studio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Data Studio.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Data Studio.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Big Data/Genomics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Big Data/Genomics.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Advanced Solutions Lab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Advanced Solutions Lab.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud AutoML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud AutoML.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud AutoML.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Jobs API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Jobs API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Jobs API.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Machine Learning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Machine Learning.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Natural Language API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Natural Language API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Natural Language API.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Speech API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Speech API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Speech API.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud TPU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud TPU.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Text-to-Speech.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Text-to-Speech.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Translation API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Translation API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Video Intelligence API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Video Intelligence API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Vision API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Vision API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Cloud Vision API.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Dialogflow Enterprise Edition.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Cloud AI/Dialogflow Enterprise Edition.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Cloud AI/Dialogflow Enterprise Edition.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/App Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Compute/App Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/Cloud Functions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Compute/Cloud Functions.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/Cloud Functions.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/Compute Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Compute/Compute Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/Container Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Compute/Container Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/Container Engine.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/Container-Optimized OS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Compute/Container-Optimized OS.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/Container-Optimized OS.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Compute/GPU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Compute/GPU.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Data Transfer/Transfer Appliance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Data Transfer/Transfer Appliance.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Deployment Manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Deployment Manager.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud SDK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud SDK.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud SDK.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Source Repositories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Source Repositories.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Source Repositories.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Test Lab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Test Lab.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Test Lab.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for Android Studio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for Android Studio.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for Android Studio.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for IntelliJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for IntelliJ.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for IntelliJ.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for PowerShell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for PowerShell.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for Visual Studio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Cloud Tools for Visual Studio.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Container Builder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Container Builder.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Container Registry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Container Registry.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Google Plugin for Eclipse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Developer Tools/Google Plugin for Eclipse.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Developer Tools/Google Plugin for Eclipse.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Blue Hexagon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Blue Hexagon.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Blue Hexagon.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/App-Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/App-Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/App-Engine.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Cloud-Dataflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Cloud-Dataflow.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Cloud-Dataflow.svg:
--------------------------------------------------------------------------------
1 |
17 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Cloud-Dataproc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Cloud-Dataproc.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Cloud-Dataproc.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Compute-Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Compute-Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Container-Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Container-Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/Container-Engine.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_autoscaling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_autoscaling.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_autoscaling.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_custom-virtual-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_custom-virtual-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_custom-virtual-machine.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_high-CPU-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_high-CPU-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_high-CPU-machine.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_high-memory-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_high-memory-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_high-memory-machine.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_preemptable-vm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_preemptable-vm.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_preemptable-vm.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_shared-core-machine-F1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_shared-core-machine-F1.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_shared-core-machine-F1.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_shared-core-machine-G1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_shared-core-machine-G1.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_shared-core-machine-G1.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_standard-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_standard-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_standard-machine.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_storage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_storage.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Expanded Product Card Icons/modifiers_storage.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Generic GCP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Generic GCP.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Generic GCP.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Google Cloud Platform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Google Cloud Platform.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Google Cloud Platform_lockup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Google Cloud Platform_lockup.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Forseti_lockup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Forseti_lockup.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Forseti_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Forseti_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Forseti_logo.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Istio_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Istio_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Istio_logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Kubernetes_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Kubernetes_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Kubernetes_name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/Kubernetes_name.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/TensorFlow_lockup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/TensorFlow_lockup.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/TensorFlow_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Open Source Icons/TensorFlow_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Extras/Prediction API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Extras/Prediction API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/BeyondCorp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/BeyondCorp.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud IAM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud IAM.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud IAM.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Resource Manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Resource Manager.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Resource Manager.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Security Command Center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Security Command Center.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Security Command Center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Security Scanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Cloud Security Scanner.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Data Loss Prevention API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Data Loss Prevention API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Identity-Aware Proxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Identity-Aware Proxy.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Key Management Service.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Key Management Service.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Security Key Enforcement.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Identity & Security/Security Key Enforcement.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Identity & Security/Security Key Enforcement.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Internet of Things/Cloud IoT Core.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Internet of Things/Cloud IoT Core.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud APIs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud APIs.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud APIs.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Billing API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Billing API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Billing API.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Console.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Console.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Console.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Deployment Manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Deployment Manager.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Mobile App.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Mobile App.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Mobile App.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Shell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Shell.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Cloud Shell.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Debugger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Debugger.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Error Reporting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Error Reporting.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Logging.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Logging.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Monitoring.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Monitoring.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Stackdriver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Stackdriver.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Stackdriver.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Trace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Management Tools/Trace.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Management Tools/Trace.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Armor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Armor.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud CDN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud CDN.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud CDN.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud DNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud DNS.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud External IP Addresses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud External IP Addresses.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud External IP Addresses.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Firewall Rules.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Firewall Rules.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Load Balancing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Load Balancing.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Network.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Router.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Router.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Router.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Routes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud Routes.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Cloud VPN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Cloud VPN.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Dedicated Interconnect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Dedicated Interconnect.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Dedicated Interconnect.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Partner Interconnect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Partner Interconnect.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Premium Network Tier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Premium Network Tier.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Premium Network Tier.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Standard Network Tier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Standard Network Tier.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Networking/Virtual Private Cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Networking/Virtual Private Cloud.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/README.md:
--------------------------------------------------------------------------------
1 | # Google Cloud Icons
2 |
3 | [Icons URL](https://cloud.google.com/icons/)
4 |
5 | ## Uploading files to GCS
6 |
7 | ```bash
8 | gsutil mb gs://forseti-visualizer-icons
9 |
10 | ```
11 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Bigtable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Bigtable.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Datastore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Datastore.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Memorystore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Memorystore.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Memorystore.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud SQL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud SQL.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud SQL.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Spanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Spanner.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Spanner.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Storage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Storage.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Cloud Storage.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Persistent Disk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Persistent Disk.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/Storage & Databases/Persistent Disk.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/_Other_Imported/cloud_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/_Other_Imported/cloud_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/_Other_Imported/folder_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/_Other_Imported/folder_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/_Other_Imported/project_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/_Other_Imported/project_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/API Analytics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/API Analytics.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/API Monetization.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/API Monetization.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Advanced Solutions Lab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Advanced Solutions Lab.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Apigee API Platform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Apigee API Platform.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Apigee Sense.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Apigee Sense.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/App Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/App Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/App-Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/App-Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/BeyondCorp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/BeyondCorp.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/BigQuery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/BigQuery.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Blue Hexagon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Blue Hexagon.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud APIs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud APIs.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Armor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Armor.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud AutoML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud AutoML.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Bigtable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Bigtable.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Billing API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Billing API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud CDN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud CDN.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Composer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Composer.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Console.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Console.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud DNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud DNS.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Dataflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Dataflow.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Datalab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Datalab.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Dataprep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Dataprep.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Dataproc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Dataproc.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Datastore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Datastore.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Deployment Manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Deployment Manager.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Endpoints.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Endpoints.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud External IP Addresses.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud External IP Addresses.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Firewall Rules.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Firewall Rules.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Functions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Functions.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud IAM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud IAM.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud IoT Core.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud IoT Core.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Jobs API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Jobs API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Load Balancing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Load Balancing.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Machine Learning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Machine Learning.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Memorystore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Memorystore.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Mobile App.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Mobile App.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Natural Language API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Natural Language API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Network.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud PubSub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud PubSub.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Resource Manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Resource Manager.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Router.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Router.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Routes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Routes.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud SDK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud SDK.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud SQL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud SQL.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Security Command Center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Security Command Center.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Security Scanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Security Scanner.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Shell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Shell.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Source Repositories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Source Repositories.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Spanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Spanner.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Speech API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Speech API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Storage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Storage.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud TPU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud TPU.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Test Lab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Test Lab.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Text-to-Speech.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Text-to-Speech.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for Android Studio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for Android Studio.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for IntelliJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for IntelliJ.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for PowerShell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for PowerShell.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for Visual Studio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Tools for Visual Studio.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Translation API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Translation API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud VPN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud VPN.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Video Intelligence API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Video Intelligence API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud Vision API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud Vision API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud-Dataflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud-Dataflow.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Cloud-Dataproc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Cloud-Dataproc.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Compute Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Compute Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Compute-Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Compute-Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Container Builder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Container Builder.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Container Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Container Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Container Registry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Container Registry.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Container-Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Container-Engine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Container-Optimized OS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Container-Optimized OS.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Data Loss Prevention API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Data Loss Prevention API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Data Studio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Data Studio.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Debugger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Debugger.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Dedicated Interconnect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Dedicated Interconnect.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Developer Portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Developer Portal.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Dialogflow Enterprise Edition.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Dialogflow Enterprise Edition.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Error Reporting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Error Reporting.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Forseti_lockup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Forseti_lockup.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Forseti_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Forseti_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/GPU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/GPU.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Generic GCP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Generic GCP.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Genomics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Genomics.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Google Cloud Platform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Google Cloud Platform.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Google Cloud Platform_lockup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Google Cloud Platform_lockup.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Google Plugin for Eclipse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Google Plugin for Eclipse.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Identity-Aware Proxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Identity-Aware Proxy.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Istio_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Istio_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Key Management Service.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Key Management Service.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Kubernetes_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Kubernetes_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Kubernetes_name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Kubernetes_name.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Logging.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Logging.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Monitoring.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Monitoring.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Partner Interconnect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Partner Interconnect.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Persistent Disk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Persistent Disk.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Prediction API.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Prediction API.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Premium Network Tier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Premium Network Tier.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Security Key Enforcement.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Security Key Enforcement.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Stackdriver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Stackdriver.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Standard Network Tier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Standard Network Tier.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/TensorFlow_lockup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/TensorFlow_lockup.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/TensorFlow_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/TensorFlow_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Trace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Trace.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Transfer Appliance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Transfer Appliance.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/Virtual Private Cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/Virtual Private Cloud.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/cloud_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/cloud_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/folder_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/folder_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_autoscaling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_autoscaling.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_custom-virtual-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_custom-virtual-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_high-CPU-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_high-CPU-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_high-memory-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_high-memory-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_preemptable-vm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_preemptable-vm.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_shared-core-machine-F1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_shared-core-machine-F1.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_shared-core-machine-G1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_shared-core-machine-G1.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_standard-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_standard-machine.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/modifiers_storage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/modifiers_storage.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/public/project_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/Products & Services/public/project_logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/Products & Services/upload.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | export TEMP_DIR="public"
17 | export BUCKET_NAME="gs://forseti-visualizer-icons"
18 |
19 | mkdir $TEMP_DIR
20 |
21 | find . -name "*.png" -exec cp {} $TEMP_DIR \; -print
22 |
23 | gsutil cp -R $TEMP_DIR $BUCKET_NAME
24 |
25 | gsutil iam ch allUsers:objectViewer $BUCKET_NAME
26 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/public/favicon.ico
--------------------------------------------------------------------------------
/forseti-visualizer-ui/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Forseti-Visualizer
10 |
11 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/src/assets/logo.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/assets/logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forseti-security/forseti-visualizer/31d472512f94ec0c6cc72e21aa5af704e7449b1d/forseti-visualizer-ui/src/assets/logo2.png
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/constants/ColorConfig.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | /**
16 | * ColorConfig
17 | * @description the color config constants shared across the app for Forseti Visualizer
18 | */
19 | const ColorConfig = {
20 | DANGER: '#ff8c84', // light red
21 | WARNING: '#DB4437',
22 | SUCCESS: '#b3d4fc', // green
23 | INFO: '#999999', // GRAY
24 | WHITE: '#fefefe', // white
25 | BLACK: '#222222', // light black
26 | NODE_BG_COLOR: '#b3d4fc', //'lightsteelblue'
27 | NONE: 'none', // 'none'' is NOT a CSS color (valid only in D3.js)
28 | };
29 |
30 | export default ColorConfig;
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/constants/Orientation.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | /**
16 | * Orientation
17 | * @description the orientation of the D3 Tree (Vertical or Horizontal)
18 | */
19 | const Orientation = {
20 | Horizontal: 'Horizontal',
21 | Vertical: 'Vertical'
22 | };
23 |
24 | export default Orientation;
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/plugins/vuetify.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import Vue from 'vue';
16 | import Vuetify from 'vuetify/lib';
17 | import 'vuetify/src/stylus/app.styl';
18 | import '@fortawesome/fontawesome-free/css/all.css'; // Ensure you are using css-loader
19 | import Vuex from 'vuex';
20 | /**
21 | * @description initialize Vuetify and font-awesome icon font
22 | */
23 | Vue.use(Vuetify, {
24 | iconfont: 'fa',
25 | });
26 |
27 | Vue.use(Vuex);
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/services/D3Helpers.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import $ from "jquery";
16 |
17 | class D3Helpers {
18 | /**
19 | * @function getDocumentSize
20 | * @description gets the document window width/height and document width/height
21 | */
22 | getDocumentSize() {
23 | return {
24 | window: {
25 | width: $(window).width(),
26 | height: $(window).height()
27 | },
28 | document: {
29 | width: $(document).width(),
30 | height: $(document).height()
31 | }
32 | };
33 | }
34 | }
35 |
36 | export default new D3Helpers();
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/services/DataServiceFactory.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import DataService from './DataService';
16 |
17 | /**
18 | * @class DataServiceFactory
19 | * @desc returns the DataServiceFactory
20 | */
21 | class DataServiceFactory {
22 | /**
23 | * @function constructor
24 | */
25 | constructor() {
26 |
27 | }
28 |
29 | /**
30 | * @function getDataServiceFactory
31 | * @description returns the data service factory type depending on flags
32 | * @return the proper data service factory
33 | */
34 | getDataServiceFactory() {
35 | return new DataService();
36 | }
37 | }
38 |
39 | export default new DataServiceFactory();
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/services/Filters.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | let Filters = {
16 | nonNullAndActive: function (data) {
17 | if (data.lifecycle_state === null || data.lifecycle_state === 'ACTIVE') return true;
18 | return false;
19 | },
20 | /**
21 | * @function capitalize
22 | * @description Capitalizes the first letter
23 | * @returns the capitalized string
24 | */
25 | capitalize: function (str) {
26 | if (str.length > 0) {
27 | return str.substr(0, 1).toUpperCase() + str.substr(1);
28 | }
29 | return str;
30 | },
31 | };
32 |
33 | export default Filters;
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/services/Sorters.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | let Sorters = {
16 | sortAscendingCaseInsensitive: function (a, b) {
17 | if (a.resource_name.toLowerCase() < b.resource_name.toLowerCase())
18 | return -1;
19 | if (a.resource_name.toLowerCase() < b.resource_name.toLowerCase())
20 | return 1;
21 | return 0;
22 | },
23 | };
24 |
25 |
26 | export default Sorters;
--------------------------------------------------------------------------------
/forseti-visualizer-ui/src/stores/Counter.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import Vuex from 'vuex';
16 |
17 | export default new Vuex.Store({
18 | state: {
19 | count: 0
20 | },
21 | mutations: {
22 | increment(state) {
23 | state.count++;
24 | },
25 | decrement(state, amount) {
26 | if (!amount) amount = 1;
27 | state.count = state.count - amount;
28 | }
29 | }
30 | });
--------------------------------------------------------------------------------
/forseti-visualizer-ui/test/App.test.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | describe("App.test.js", () => {
16 | it('test runs', () => {
17 | expect('test').toEqual('test');
18 | });
19 | });
--------------------------------------------------------------------------------
/forseti-visualizer-ui/test/services/AllTests.js:
--------------------------------------------------------------------------------
1 | // Copyright 2020 Google LLC
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | import "./JSONBeautifier.test";
16 | import "./D3Helpers.test";
--------------------------------------------------------------------------------
/forseti-visualizer-ui/test/services/D3Helpers.test.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-undef */
2 | // Copyright 2020 Google LLC
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | import D3Helpers from "../../src/services/D3Helpers";
17 |
18 | describe("D3Helpers.test", () => {
19 | let sut;
20 | beforeEach(() => {
21 | sut = D3Helpers;
22 | });
23 |
24 | it('getDocumentSize returns element with document and window height', () => {
25 | let res = sut.getDocumentSize();
26 | let expected = {
27 | "document": {
28 | "height": 0,
29 | "width": 0,
30 | },
31 | "window": {
32 | "height": 0,
33 | "width": 0,
34 | },
35 | };
36 | expect(res).toEqual(expected);
37 | });
38 | });
--------------------------------------------------------------------------------
/forseti-visualizer-ui/test/webpack.test.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | module.exports = {
4 | entry: "./test/services/AllTests.js",
5 | output: {
6 | path: path.resolve(__dirname, "."),
7 | filename: "bundle.test.js"
8 | },
9 | mode: "none"
10 | };
--------------------------------------------------------------------------------
/infrastructure/VERSION:
--------------------------------------------------------------------------------
1 | 2.0.6
2 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/certificate.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: certmanager.k8s.io/v1alpha1
2 | kind: Certificate
3 | metadata:
4 | name: esp-tls
5 | namespace: default
6 | spec:
7 | secretName: esp-tls
8 | issuerRef:
9 | name: letsencrypt-prod
10 | kind: ClusterIssuer
11 | commonName: api.endpoints.forseti-security-1e88.cloud.goog
12 | dnsNames:
13 | - api.endpoints.forseti-security-1e88.cloud.goog
14 | acme:
15 | config:
16 | - http01:
17 | ingress: esp-ingress
18 | domains:
19 | - api.endpoints.forseti-security-1e88.cloud.goog
20 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/cleanup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | gcloud container clusters delete forsetivisualizer-app-gke --region us-central1 -q
17 | gcloud compute addresses delete forsetivisualizer-app-endpoints-ip --region us-central1 -q
18 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/configmap.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: env-var
5 | labels:
6 | type: endpoints-app
7 | data:
8 | JWT_AUDIENCE: "api.endpoints.forseti-security-1e88.cloud.goog"
9 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-50dd3d26/certificate.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: certmanager.k8s.io/v1alpha1
2 | kind: Certificate
3 | metadata:
4 | name: esp-tls
5 | namespace: default
6 | spec:
7 | secretName: esp-tls
8 | issuerRef:
9 | name: letsencrypt-prod
10 | kind: ClusterIssuer
11 | commonName: api.endpoints.forseti-security-1e88.cloud.goog
12 | dnsNames:
13 | - api.endpoints.forseti-security-1e88.cloud.goog
14 | acme:
15 | config:
16 | - http01:
17 | ingress: esp-ingress
18 | domains:
19 | - api.endpoints.forseti-security-1e88.cloud.goog
20 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-50dd3d26/configmap.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: env-var
5 | labels:
6 | type: endpoints-app
7 | data:
8 | JWT_AUDIENCE: "api.endpoints.forseti-security-1e88.cloud.goog"
9 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-50dd3d26/ingress-tls.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | kubernetes.io/tls-acme: “true”
8 | certmanager.k8s.io/cluster-issuer: letsencrypt-prod
9 | labels:
10 | type: endpoints-app
11 | spec:
12 | tls:
13 | - hosts:
14 | - api.endpoints.forseti-security-1e88.cloud.goog
15 | secretName: esp-tls
16 | rules:
17 | - host: api.endpoints.forseti-security-1e88.cloud.goog
18 | http:
19 | paths:
20 | - backend:
21 | serviceName: esp-srv
22 | servicePort: 80
23 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-50dd3d26/ingress.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | nginx.ingress.kubernetes.io/ssl-redirect: "false"
8 | labels:
9 | type: endpoints-app
10 | spec:
11 | rules:
12 | - host: api.endpoints.forseti-security-1e88.cloud.goog
13 | http:
14 | paths:
15 | - backend:
16 | serviceName: esp-srv
17 | servicePort: 80
18 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-50dd3d26/letsencrypt-issuer.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # https://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | apiVersion: certmanager.k8s.io/v1alpha1
15 | kind: ClusterIssuer
16 | metadata:
17 | name: letsencrypt-staging
18 | spec:
19 | acme:
20 | server: https://acme-staging-v02.api.letsencrypt.org/directory
21 | email: ''
22 | privateKeySecretRef:
23 | name: letsencrypt-staging
24 | http01: {}
25 | ---
26 | apiVersion: certmanager.k8s.io/v1alpha1
27 | kind: ClusterIssuer
28 | metadata:
29 | name: letsencrypt-prod
30 | spec:
31 | acme:
32 | server: https://acme-v02.api.letsencrypt.org/directory
33 | email: ''
34 | privateKeySecretRef:
35 | name: letsencrypt-prod
36 | http01: {}
37 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-50dd3d26/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: esp-srv
5 | labels:
6 | type: esp-srv
7 | spec:
8 | type: NodePort
9 | ports:
10 | - port: 80
11 | protocol: TCP
12 | name: http
13 | targetPort: http
14 | selector:
15 | app: forseti-security-1e88-app
16 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-66c1ab27/certificate.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: certmanager.k8s.io/v1alpha1
2 | kind: Certificate
3 | metadata:
4 | name: esp-tls
5 | namespace: default
6 | spec:
7 | secretName: esp-tls
8 | issuerRef:
9 | name: letsencrypt-prod
10 | kind: ClusterIssuer
11 | commonName: api.endpoints.forseti-security-1e88.cloud.goog
12 | dnsNames:
13 | - api.endpoints.forseti-security-1e88.cloud.goog
14 | acme:
15 | config:
16 | - http01:
17 | ingress: esp-ingress
18 | domains:
19 | - api.endpoints.forseti-security-1e88.cloud.goog
20 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-66c1ab27/configmap.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: env-var
5 | labels:
6 | type: endpoints-app
7 | data:
8 | JWT_AUDIENCE: "api.endpoints.forseti-security-1e88.cloud.goog"
9 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-66c1ab27/ingress-tls.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | kubernetes.io/tls-acme: “true”
8 | certmanager.k8s.io/cluster-issuer: letsencrypt-prod
9 | labels:
10 | type: endpoints-app
11 | spec:
12 | tls:
13 | - hosts:
14 | - api.endpoints.forseti-security-1e88.cloud.goog
15 | secretName: esp-tls
16 | rules:
17 | - host: api.endpoints.forseti-security-1e88.cloud.goog
18 | http:
19 | paths:
20 | - backend:
21 | serviceName: esp-srv
22 | servicePort: 80
23 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-66c1ab27/ingress.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | nginx.ingress.kubernetes.io/ssl-redirect: "false"
8 | labels:
9 | type: endpoints-app
10 | spec:
11 | rules:
12 | - host: api.endpoints.forseti-security-1e88.cloud.goog
13 | http:
14 | paths:
15 | - backend:
16 | serviceName: esp-srv
17 | servicePort: 80
18 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-66c1ab27/letsencrypt-issuer.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # https://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | apiVersion: certmanager.k8s.io/v1alpha1
15 | kind: ClusterIssuer
16 | metadata:
17 | name: letsencrypt-staging
18 | spec:
19 | acme:
20 | server: https://acme-staging-v02.api.letsencrypt.org/directory
21 | email: ''
22 | privateKeySecretRef:
23 | name: letsencrypt-staging
24 | http01: {}
25 | ---
26 | apiVersion: certmanager.k8s.io/v1alpha1
27 | kind: ClusterIssuer
28 | metadata:
29 | name: letsencrypt-prod
30 | spec:
31 | acme:
32 | server: https://acme-v02.api.letsencrypt.org/directory
33 | email: ''
34 | privateKeySecretRef:
35 | name: letsencrypt-prod
36 | http01: {}
37 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-66c1ab27/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: esp-srv
5 | labels:
6 | type: esp-srv
7 | spec:
8 | type: NodePort
9 | ports:
10 | - port: 80
11 | protocol: TCP
12 | name: http
13 | targetPort: http
14 | selector:
15 | app: forseti-security-1e88-app
16 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-85b0ffbc/certificate.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: certmanager.k8s.io/v1alpha1
2 | kind: Certificate
3 | metadata:
4 | name: esp-tls
5 | namespace: default
6 | spec:
7 | secretName: esp-tls
8 | issuerRef:
9 | name: letsencrypt-prod
10 | kind: ClusterIssuer
11 | commonName: api.endpoints.forseti-security-1e88.cloud.goog
12 | dnsNames:
13 | - api.endpoints.forseti-security-1e88.cloud.goog
14 | acme:
15 | config:
16 | - http01:
17 | ingress: esp-ingress
18 | domains:
19 | - api.endpoints.forseti-security-1e88.cloud.goog
20 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-85b0ffbc/cleanup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | gcloud container clusters delete forseti-security-1e88-app-gke --region us-central1 -q
17 | gcloud compute addresses delete forseti-security-1e88-app-endpoints-ip --region us-central1 -q
18 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-85b0ffbc/configmap.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: env-var
5 | labels:
6 | type: endpoints-app
7 | data:
8 | JWT_AUDIENCE: "api.endpoints.forseti-security-1e88.cloud.goog"
9 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-85b0ffbc/ingress-tls.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | kubernetes.io/tls-acme: “true”
8 | certmanager.k8s.io/cluster-issuer: letsencrypt-prod
9 | labels:
10 | type: endpoints-app
11 | spec:
12 | tls:
13 | - hosts:
14 | - api.endpoints.forseti-security-1e88.cloud.goog
15 | secretName: esp-tls
16 | rules:
17 | - host: api.endpoints.forseti-security-1e88.cloud.goog
18 | http:
19 | paths:
20 | - backend:
21 | serviceName: esp-srv
22 | servicePort: 80
23 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-85b0ffbc/ingress.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | nginx.ingress.kubernetes.io/ssl-redirect: "false"
8 | labels:
9 | type: endpoints-app
10 | spec:
11 | rules:
12 | - host: api.endpoints.forseti-security-1e88.cloud.goog
13 | http:
14 | paths:
15 | - backend:
16 | serviceName: esp-srv
17 | servicePort: 80
18 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-85b0ffbc/letsencrypt-issuer.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # https://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | apiVersion: certmanager.k8s.io/v1alpha1
15 | kind: ClusterIssuer
16 | metadata:
17 | name: letsencrypt-staging
18 | spec:
19 | acme:
20 | server: https://acme-staging-v02.api.letsencrypt.org/directory
21 | email: ''
22 | privateKeySecretRef:
23 | name: letsencrypt-staging
24 | http01: {}
25 | ---
26 | apiVersion: certmanager.k8s.io/v1alpha1
27 | kind: ClusterIssuer
28 | metadata:
29 | name: letsencrypt-prod
30 | spec:
31 | acme:
32 | server: https://acme-v02.api.letsencrypt.org/directory
33 | email: ''
34 | privateKeySecretRef:
35 | name: letsencrypt-prod
36 | http01: {}
37 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/forseti-security-1e88-app-85b0ffbc/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: esp-srv
5 | labels:
6 | type: esp-srv
7 | spec:
8 | type: NodePort
9 | ports:
10 | - port: 80
11 | protocol: TCP
12 | name: http
13 | targetPort: http
14 | selector:
15 | app: forseti-security-1e88-app
16 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/ingress-tls.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | kubernetes.io/tls-acme: “true”
8 | certmanager.k8s.io/cluster-issuer: letsencrypt-prod
9 | labels:
10 | type: endpoints-app
11 | spec:
12 | tls:
13 | - hosts:
14 | - api.endpoints.forseti-security-1e88.cloud.goog
15 | secretName: esp-tls
16 | rules:
17 | - host: api.endpoints.forseti-security-1e88.cloud.goog
18 | http:
19 | paths:
20 | - backend:
21 | serviceName: esp-srv
22 | servicePort: 80
23 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/ingress.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | nginx.ingress.kubernetes.io/ssl-redirect: "false"
8 | labels:
9 | type: endpoints-app
10 | spec:
11 | rules:
12 | - host: api.endpoints.forseti-security-1e88.cloud.goog
13 | http:
14 | paths:
15 | - backend:
16 | serviceName: esp-srv
17 | servicePort: 80
18 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/letsencrypt-issuer.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # https://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | apiVersion: certmanager.k8s.io/v1alpha1
15 | kind: ClusterIssuer
16 | metadata:
17 | name: letsencrypt-staging
18 | spec:
19 | acme:
20 | server: https://acme-staging-v02.api.letsencrypt.org/directory
21 | email: ''
22 | privateKeySecretRef:
23 | name: letsencrypt-staging
24 | http01: {}
25 | ---
26 | apiVersion: certmanager.k8s.io/v1alpha1
27 | kind: ClusterIssuer
28 | metadata:
29 | name: letsencrypt-prod
30 | spec:
31 | acme:
32 | server: https://acme-v02.api.letsencrypt.org/directory
33 | email: ''
34 | privateKeySecretRef:
35 | name: letsencrypt-prod
36 | http01: {}
37 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: esp-srv
5 | labels:
6 | type: esp-srv
7 | spec:
8 | type: NodePort
9 | ports:
10 | - port: 80
11 | protocol: TCP
12 | name: http
13 | targetPort: http
14 | selector:
15 | app: forseti-security-1e88-app
16 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/templates/certificate.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: certmanager.k8s.io/v1alpha1
2 | kind: Certificate
3 | metadata:
4 | name: esp-tls
5 | namespace: default
6 | spec:
7 | secretName: esp-tls
8 | issuerRef:
9 | name: letsencrypt-prod
10 | kind: ClusterIssuer
11 | commonName: api.endpoints.[MY-PROJECT].cloud.goog
12 | dnsNames:
13 | - api.endpoints.[MY-PROJECT].cloud.goog
14 | acme:
15 | config:
16 | - http01:
17 | ingress: esp-ingress
18 | domains:
19 | - api.endpoints.[MY-PROJECT].cloud.goog
--------------------------------------------------------------------------------
/infrastructure/cluster-template/templates/configmap.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: env-var
5 | labels:
6 | type: endpoints-app
7 | data:
8 | JWT_AUDIENCE: "api.endpoints.[MY-PROJECT].cloud.goog"
--------------------------------------------------------------------------------
/infrastructure/cluster-template/templates/deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Deployment
3 | metadata:
4 | name: [APP-NAME]
5 | labels:
6 | type: endpoints-app
7 | spec:
8 | replicas: 1
9 | template:
10 | metadata:
11 | labels:
12 | app: [APP-NAME]
13 | spec:
14 | containers:
15 | - name: esp
16 | image: gcr.io/endpoints-release/endpoints-runtime:1
17 | args: [
18 | "--http_port=8081",
19 | "--backend=127.0.0.1:8080",
20 | "--service=$(JWT_AUDIENCE)",
21 | "--rollout_strategy=managed",
22 | ]
23 | livenessProbe:
24 | httpGet:
25 | path: /
26 | port: 8081
27 | scheme: HTTP
28 | readinessProbe:
29 | httpGet:
30 | path: /
31 | scheme: HTTP
32 | port: 8081
33 | ports:
34 | - name: http
35 | containerPort: 8081
36 | env:
37 | - name: JWT_AUDIENCE
38 | valueFrom:
39 | configMapKeyRef:
40 | name: env-var
41 | key: JWT_AUDIENCE
42 | - name: [APP-NAME]
43 | image: [GCR-IMAGE]
44 | imagePullPolicy: Always
45 | ports:
46 | - containerPort: 8080
47 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/templates/ingress-tls.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | kubernetes.io/tls-acme: “true”
8 | certmanager.k8s.io/cluster-issuer: letsencrypt-prod
9 | labels:
10 | type: endpoints-app
11 | spec:
12 | tls:
13 | - hosts:
14 | - api.endpoints.[MY-PROJECT].cloud.goog
15 | secretName: esp-tls
16 | rules:
17 | - host: api.endpoints.[MY-PROJECT].cloud.goog
18 | http:
19 | paths:
20 | - backend:
21 | serviceName: esp-srv
22 | servicePort: 80
23 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/templates/ingress.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: extensions/v1beta1
2 | kind: Ingress
3 | metadata:
4 | name: esp-ingress
5 | annotations:
6 | kubernetes.io/ingress.class: nginx
7 | nginx.ingress.kubernetes.io/ssl-redirect: "false"
8 | labels:
9 | type: endpoints-app
10 | spec:
11 | rules:
12 | - host: api.endpoints.[MY-PROJECT].cloud.goog
13 | http:
14 | paths:
15 | - backend:
16 | serviceName: esp-srv
17 | servicePort: 80
18 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/templates/letsencrypt-issuer.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2020 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # https://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | apiVersion: certmanager.k8s.io/v1alpha1
15 | kind: ClusterIssuer
16 | metadata:
17 | name: letsencrypt-staging
18 | spec:
19 | acme:
20 | server: https://acme-staging-v02.api.letsencrypt.org/directory
21 | email: ''
22 | privateKeySecretRef:
23 | name: letsencrypt-staging
24 | http01: {}
25 | ---
26 | apiVersion: certmanager.k8s.io/v1alpha1
27 | kind: ClusterIssuer
28 | metadata:
29 | name: letsencrypt-prod
30 | spec:
31 | acme:
32 | server: https://acme-v02.api.letsencrypt.org/directory
33 | email: ''
34 | privateKeySecretRef:
35 | name: letsencrypt-prod
36 | http01: {}
37 |
--------------------------------------------------------------------------------
/infrastructure/cluster-template/templates/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: esp-srv
5 | labels:
6 | type: esp-srv
7 | spec:
8 | type: NodePort
9 | ports:
10 | - port: 80
11 | protocol: TCP
12 | name: http
13 | targetPort: http
14 | selector:
15 | app: [APP-NAME]
16 |
--------------------------------------------------------------------------------
/infrastructure/deployments/teardown-cloudrun.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #
4 | # Copyright 2020 Google LLC
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 |
18 | # this script is intended to be run in the infrastructure/ folder
19 |
20 | source source.env
21 |
22 | REGION="us-central1"
23 | ENV_VARS="API_HOST=0.0.0.0,API_PORT=8080,CLOUDSQL_HOSTNAME=$CLOUDSQL_HOSTNAME,CLOUDSQL_USERNAME=$CLOUDSQL_USERNAME,CLOUDSQL_PASSWORD=$CLOUDSQL_PASSWORD,CLOUDSQL_SCHEMA=$CLOUDSQL_SCHEMA"
24 |
25 | gcloud config set run/region $REGION
26 |
27 | gcloud beta run services delete forseti-visualizer-cr \
28 | --platform managed --quiet
29 |
30 | gcloud iam service-accounts delete cloud-run@$PROJECT_ID.iam.gserviceaccount.com
31 |
32 |
--------------------------------------------------------------------------------
/infrastructure/utils/version_utils.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Copyright 2020 Google LLC
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 |
17 | # increment_version bumps the VERSION file
18 | # example: `increment_version 1.0.0 2` - the second parameter indicates which VERSION number to bump
19 | # 0 = Major
20 | # 1 = Minor
21 | # 2 = Minor Minor
22 | function increment_version() {
23 | local VERSION="$1"
24 | local PLACE="$2"
25 |
26 | IFS='.' read -r -a a <<< "$VERSION"
27 | ((a[PLACE]++))
28 | echo "${a[0]}.${a[1]}.${a[2]}"
29 | }
--------------------------------------------------------------------------------
/sandbox/grpc-testing/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "grpc-testing",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "grpc.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "Apache-2.0",
11 | "devDependencies": {
12 | "@grpc/proto-loader": "^0.5.4",
13 | "grpc": "^1.24.10",
14 | "xargs": "^1.1.3",
15 | "yargs": "^15.3.1"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/sandbox/grpc-testing/xargs.js:
--------------------------------------------------------------------------------
1 | #!/usr/local/bin/node
2 |
3 | // usage: node xargs.js hello world
4 |
5 | var streamify = require('stream-array');
6 | var xargs = require('xargs');
7 |
8 | streamify(process.argv)
9 | .pipe(xargs(['echo']))
10 | .pipe(process.stdout); // outputs: /usr/local/bin/node ${FULL_PATH}/xargs.js hello world
11 |
--------------------------------------------------------------------------------
/sandbox/grpc-testing/yargs.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | // usage: ./yargs.js --hello morning --goodbye evening
4 | // Reference: https://github.com/yargs/yargs/blob/HEAD/docs/api.md
5 |
6 |
7 | // BASIC:
8 | // const argv = require('yargs').argv
9 |
10 | // if (argv.hello) {
11 | // console.log('command line arguments');
12 | // }
13 |
14 | // console.log(argv.hello);
15 | // console.log(argv.goodbye);
16 |
17 | // option/coerce
18 | var argv = require('yargs')
19 | .option('user')
20 | .coerce('user', opt => {
21 | opt.name = opt.name.toLowerCase()
22 | opt.password = '[SECRET]'
23 | return opt
24 | })
25 |
26 | .option('name')
27 | .argv
28 |
29 | console.log(argv)
30 |
31 |
32 | // WEB SERVER EXAMPLE:
33 | // node yargs.js serve --port 7070 -v
34 | require('yargs') // eslint-disable-line
35 | .command('serve [port]', 'start the server', (yargs) => {
36 | yargs
37 | .positional('port', {
38 | describe: 'port to bind on',
39 | default: 5000
40 | })
41 | }, (argv) => {
42 | if (argv.verbose) console.info(`start server on :${argv.port}`)
43 |
44 | // serve(argv.port)
45 | })
46 | .option('verbose', {
47 | alias: 'v',
48 | type: 'boolean',
49 | description: 'Run with verbose logging'
50 | })
51 | .argv
--------------------------------------------------------------------------------
/tools/start_cloud_sql_proxy.sample.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | INSTANCE_CONNECTION_NAME="[PROJECT_ID]:[CLOUDSQL_REGION]:[CLOUDSQL_INSTANCE_ID]"
4 |
5 | ./cloud_sql_proxy -instances=$INSTANCE_CONNECTION_NAME=tcp:3306
--------------------------------------------------------------------------------
/tools/start_cloud_sql_proxy_fs-2-23.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | INSTANCE_CONNECTION_NAME="fs-2-23:us-west1:forseti-server-db-d4bc233d"
4 |
5 | ./cloud_sql_proxy -instances=$INSTANCE_CONNECTION_NAME=tcp:3306
--------------------------------------------------------------------------------