├── .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 | Cloud Composer -------------------------------------------------------------------------------- /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 | 2 | Data Studio 3 | 4 | 5 | 6 | 7 | 8 | 9 | 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 | Cloud AutoML -------------------------------------------------------------------------------- /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 | 2 | Cloud Jobs API 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 2 | Cloud Natural Language API 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 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 | 2 | Cloud Speech API 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 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 | 2 | Cloud Vision API 3 | 4 | 5 | 6 | 7 | 8 | 9 | 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 | Dialogflow Enterprise Edition -------------------------------------------------------------------------------- /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 | 2 | Cloud Functions 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 2 | Container Engine 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 2 | Container-Optimized OS 3 | 4 | 5 | 6 | 7 | 8 | 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 | 2 | Cloud SDK 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Source Repositories 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Test Lab 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Tools for Android Studio 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Tools for IntelliJ 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Google Plugin for Eclipse 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Blue-Hexagon 3 | 4 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 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 | 2 | Cloud-Dataproc44 3 | 4 | 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 | 2 | 3 | 4 | 5 | 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 | 2 | Modifiers 3 | 4 | 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 | 2 | modifiers_custom-virtual-machine 3 | 4 | 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 | 2 | Modifiers_ 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 2 | modifiers_high-memory-machine 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 2 | modifiers_preemptable-vm 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 2 | Modifiers_ 3 | 4 | 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 | 2 | Modifiers_ 3 | 4 | 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 | 2 | Modifiers_ 3 | 4 | 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 | 2 | Modifiers_ 3 | 4 | 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 | 2 | Generic-GCP 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Asset 1 3 | 4 | 5 | 6 | 7 | 8 | 9 | 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 | 5 | 8 | 9 | 10 | 11 | 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 | 2 | Cloud IAM 3 | 4 | 5 | 6 | 7 | 8 | 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 | 2 | Cloud Resource Manager 3 | 4 | 5 | 6 | 7 | 8 | 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 | Cloud Security Command Center -------------------------------------------------------------------------------- /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 | 2 | Security Key Enforcement 3 | 4 | 5 | 6 | 7 | 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 | 2 | Cloud APIs 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 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 | 2 | Cloud Billing API 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Console 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Mobile App 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Shell 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Stackdriver 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 2 | Trace 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 2 | Cloud CDN 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 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 | 2 | Cloud External IP Addresses 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | 2 | Cloud Router 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 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 | 2 | Cloud Interconnect 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | Network Service Tiers_Premium -------------------------------------------------------------------------------- /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 | Cloud Memorystore -------------------------------------------------------------------------------- /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 | 2 | Cloud SQL 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 2 | Cloud Spanner 3 | 4 | 5 | 6 | 7 | 8 | 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 | 2 | Cloud Storage 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 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 | 2 | Persistent Disk 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | Artboard 46 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 --------------------------------------------------------------------------------