diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..6f778feb8 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,5 @@ +### mondoohq/docs CODEOWNERS + +# Markdown updates should be reviewed by an editor +*.md @mondoohq/mondoo-editors +*.mdx @mondoohq/mondoo-editors diff --git a/.github/ISSUE_TEMPLATE/content-issue.md b/.github/ISSUE_TEMPLATE/content-issue.md new file mode 100644 index 000000000..9392630f1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/content-issue.md @@ -0,0 +1,35 @@ +--- +name: Content issue +about: Info in the docs is incorrect, missing, or problematic +title: "" +labels: "" +assignees: "" +--- + +#### Summarize the content issue + +For example, write "Can't find info on xxx " or "Required permissions for Azure scan are out of date." + +#### URL(s) + +Provide the URL(s) for the page(s) where the issue exists. + +#### What the docs say + +If there's existing, incorrect content, paste it here. + +#### What the docs SHOULD say + +Provide the correct info here (if you know it). + +#### Screenshots + +If applicable, add screenshots to demonstrate the problem. + +#### References + +If applicable, provide links to relevant sources of info. + +#### Notes + +Add any other info you want to provide. diff --git a/.github/ISSUE_TEMPLATE/functional-bug.md b/.github/ISSUE_TEMPLATE/functional-bug.md new file mode 100644 index 000000000..7b10cb5f6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/functional-bug.md @@ -0,0 +1,42 @@ +--- +name: Functional bug report +about: Something in the docs is functionally broken +title: "" +labels: "" +assignees: "" +--- + +#### Describe what function in the docs is broken + +For example, write "Broken link on Google Container Registry page" or "Long resource names are cut off in left navigation pane." + +#### Provide steps to reproduce + +Steps to reproduce the behavior: + +1. Go to [URL] +2. Scroll to [xxx] section +3. Select [xxx] + +#### Expected behavior + +Write a clear and concise description of what you expect to happen. + +#### Actual behavior + +Write a clear and concise description of what actually happens. + +#### Screenshots + +If applicable, add screenshots to demonstrate the problem. + +#### System info + +- OS: [e.g., macOS] +- OS version: [e.g., 13.0] +- Browser if applicable: [e.g., Chrome, Firefox] +- Browser version: [e.g., 106] + +#### Notes + +Add any other info you want to provide. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..4ad0dc0fc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ + + +#### Description + + + +#### Related issue + + + +#### Types of changes + + + +- [ ] Functional documentation bug fix (i.e., broken link or some other busted behavior) +- [ ] New functional doc capabilities (i.e., filter search results) +- [ ] New content +- [ ] Revision to existing content +- [ ] Chore (non-breaking change that does not add functionality or fix an issue) + +#### Checklist + + + + +- [ ] I have read the **README** document about contributing to this repo. +- [ ] I have tested my changes locally and there are no issues. +- [ ] All commits are signed. diff --git a/.github/actions/PREview-data/action.yaml b/.github/actions/PREview-data/action.yaml new file mode 100644 index 000000000..892b9a2eb --- /dev/null +++ b/.github/actions/PREview-data/action.yaml @@ -0,0 +1,38 @@ +## NOTE: THIS IS A COMPOSABLE ACTION, NOT A WORKFLOW. +name: "PREview: Data" +description: "Caluculate branch, bucket, and PREview URL." + +outputs: + url: + description: "PREview URL" + value: ${{ steps.data.outputs.url }} + branch: + description: "Branch Name" + value: ${{ steps.data.outputs.branch }} + bucket: + description: "Bucket for PREview" + value: ${{ steps.data.outputs.bucket }} + +runs: + using: "composite" + steps: + - name: Determine branch shortname, bucket name and URL. + id: data + shell: bash + run: | + BRANCH=`echo ${GITHUB_HEAD_REF} | sed 's/.*\///'` + echo "::set-output name=branch::${BRANCH}" + echo "::set-output name=bucket::mondoo-pre-docs-${BRANCH}/docs" + echo "::set-output name=url::https://mondoo-pre-docs-${BRANCH}.storage.googleapis.com/docs/index.html" + - name: Determine branch shortname and bucket name + shell: bash + run: | + BRANCH=`echo ${GITHUB_HEAD_REF} | sed 's/.*\///'` + echo BRANCH=${BRANCH} >> $GITHUB_ENV + echo BUCKET=mondoo-pre-docs-${BRANCH} >> $GITHUB_ENV + echo URL=https://mondoo-pre-docs-${BRANCH}.storage.googleapis.com/docs/index.html >> $GITHUB_ENV + - name: Verify env variables + shell: bash + id: env + run: | + env diff --git a/.github/actions/spelling/README.md b/.github/actions/spelling/README.md new file mode 100644 index 000000000..562091eda --- /dev/null +++ b/.github/actions/spelling/README.md @@ -0,0 +1,15 @@ +# check-spelling/check-spelling configuration + +| File | Purpose | Format | Info | +| -------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| [allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow) | +| [reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject) | +| [excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes) | +| [only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only) | +| [patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) | +| [line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) | +| [expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect) | +| [advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice) | + +Note: you can replace any of these files with a directory by the same name (minus the suffix) +and then include multiple files inside that directory (with that suffix) to merge multiple files together. diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md new file mode 100644 index 000000000..cea808b11 --- /dev/null +++ b/.github/actions/spelling/advice.md @@ -0,0 +1,23 @@ + +
If the flagged items are false positives + +If items relate to a ... + +- binary file (or some other file you wouldn't want to check at all). + + Please add a file path to the `excludes.txt` file matching the containing file. + + File paths are Perl 5 Regular Expressions - you can [test](https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files. + + `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude README.md (on whichever branch you're using). + +- well-formed pattern. + + If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it, + try adding it to the `patterns.txt` file. + + Patterns are Perl 5 Regular Expressions - you can [test](https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines. + + Note that patterns can't match multiline strings. + +
diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt new file mode 100644 index 000000000..c013ab542 --- /dev/null +++ b/.github/actions/spelling/excludes.txt @@ -0,0 +1,50 @@ +# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes +(?:^|/)(?i)COPYRIGHT +(?:^|/)(?i)LICEN[CS]E +(?:^|/)go\.sum$ +(?:^|/)package(?:-lock|)\.json$ +(?:^|/)vendor/ +ignore$ +\.a$ +\.ai$ +\.avi$ +\.bmp$ +\.bz2$ +\.crt$ +\.dll$ +\.DS_Store$ +\.eot$ +\.exe$ +\.gif$ +\.gitattributes$ +\.graffle$ +\.gz$ +\.icns$ +\.ico$ +\.jar$ +\.jpe?g$ +\.key$ +\.lib$ +\.lock$ +\.map$ +\.min\.. +\.mod$ +\.mp[34]$ +\.o$ +\.ocf$ +\.otf$ +\.pdf$ +\.pem$ +\.png$ +\.psd$ +\.s$ +\.svg$ +\.tiff?$ +\.ttf$ +\.wav$ +\.webm$ +\.webp$ +\.woff2?$ +\.zip$ +^\.github/actions/spelling/ +^\Q.github/workflows/spelling.yml\E$ diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt new file mode 100644 index 000000000..7a89c207c --- /dev/null +++ b/.github/actions/spelling/expect.txt @@ -0,0 +1,409 @@ +aaaaaaaabnjfuyr +aaaaaaaavixjk +AAAAB +abcbcada +abelhju +acr +activitylog +adduser +aea +afe +AKIAI +AKIAIOSFODNN +alswrv +amazonses +AMIIBCg +ampl +anya +APK +apparmor +appengine +applicationinsight +appsettings +appstore +ashburn +assetid +ASUSTe +atlassian +auths +autodisconnect +autoremove +autoscaler +backupconfiguration +badssm +baf +BAQEFAAOCAQ +bba +bbeb +bccbcb +bdc +bdn +BGhg +Bgkqhki +bigquery +BJHy +BMDH +BNdp +bqthk +bsdutils +BUGZILLA +BVWP +byh +bytematchstatement +CABTk +cavium +cbc +CBYq +ccl +cdn +cdzrr +Ceph +certificatechains +cfee +cffae +cim +classname +clientid +cloudlinux +Clw +cmek +CODENAME +codeql +computeservice +connectionstrings +Cooldown +coreutils +cosmosdb +cpe +crcsmnky +credentialreport +crowdsource +cryptokey +currencyservice +customresources +cvmsroot +cyclonedx +CYEXAMPLEKEY +datacompute +datapath +dbf +dcea +Ddos +debconf +dfw +dgrrz +DHE +DLken +Dlp +dlq +eae +Ecn +eddqq +EDE +efbe +efc +efcfc +Ehd +eig +EIP +EKfj +ekm +Ekoslaq +enableforcedlogoff +enablesecuritysignature +ENM +ERXy +Eso +euleros +EXAMPLEKEY +exo +EXTERNALID +externalsender +EZel +FAgb +falsey +fbcaaa +FBTJf +FCAHd +fcb +Fdq +FEMI +Fgi +fromjson +FURSBLR +Fwa +Fwc +Fxo +gcfs +geomatchstatement +GFj +GGJXG +Ghpcn +gistfile +gmail +googleusercontent +gpu +guncl +gvnic +hashs +Hcz +headerorder +heu +HHq +hostkeys +hvm +iac +iap +Iavfv +Iiwic +Ijoi +IKTK +ilb +ingresstls +installassistant +ipsetforwardedipconfig +ipsetreferencestatement +Jalr +JDAOZ +jdata +jdiaz +jdp +jglt +Jhb +jira +Jivv +jjnhz +joq +jsonbody +JTi +KCAQEAx +kembe +KEYFILE +keyout +kidgu +KKBABCDE +KKBUGHG +Kuwyd +KVZv +KXI +labelmatchstatement +lappy +libwebsockets +linux +linuxmint +logd +logfiles +loggingservice +Lqc +LQp +LThh +LTU +lun +managedrulegroupstatement +managedzone +MANIFESTFILE +manjaro +marsrover +maxbackup +maxsize +Mbeze +MDENG +messagestoragepolicy +Metasploit +mfs +MFx +MHNy +MIIBIj +Mjk +MKGQ +mmvv +moids +mpim +MSsqm +multani +multistring +mwezi +myemail +mypro +mypwd +mysupernotexistingbucket +mysystem +mytarget +myuser +nameterraform +NDdh +NDgz +netsh +networkservice +newkey +nginx +Nlcy +noarch +nodepool +NSIs +NSUl +nsurlsessiond +Nsxr +NTk +nvb +ocid +OFafff +openssh +openssl +opensuse +oraclelinux +orstatement +osoverview +OTIy +PACKNAME +pagerduty +pcx +Pesoa +PGbf +Phl +Pids +pki +pkr +pmh +Pmwtt +postgre +PROFILENAME +PROJECTID +pushconfig +pytz +QHONv +QIDAQAB +Qls +QQO +querypack +QUERYUID +Qwm +ratebasedstatement +regexmatchstatement +regexpatternsetreferencestatement +requiresecuritysignature +resourcegroup +restrictnullsessaccess +Rfi +rhcos +rhel +RLBUE +rmcfv +rmi +Robl +ROLEARN +Ronacher +rrfqiu +RRQo +rulegroup +rulegroupreferencestatement +saasure +Sas +sbom +scim +scsd +Scz +sdc +SECRETID +SECRETVALUE +securetty +securityimages +SEfirewall +serviceprincipals +shm +singlequeryargument +sizeconstraintstatement +skype +sle +Snat +SOgp +spdx +spo +sqli +sqlimatchstatement +sqlserver +srvsvc +stdevel +Stupakov +sudolog +suki +SXp +Tdej +teamsmeetingpolicyconfig +tenantfederationconfig +testcase +testname +testring +testsuite +tfblock +tmg +tmpkqyme +toplevel +tpu +tsuki +TYb +UFJJVk +uksouth +UNeh +unversioned +uppercasing +Utk +UWl +Vadym +VAULTNAME +vdcs +vjtestpriv +Vkt +Vlc +Vnet +vnic +Vtpm +Vtz +vulnerabilityassessment +vulnerabilityassessmentsettings +vulnmgmt +vyeygprgjtgg +webserver +westeurope +WEx +Wib +widescale +wil +winhttp +winsock +WNl +wordpress +wpe +WTY +xmna +Xnp +xoxb +XPgk +xrl +XRu +Xsf +xssmatchstatement +XUtn +XWZG +XXXXXX +XXXXXXXXX +YAMLFILE +yast +yescrypt +yiesxpwx +YOHu +YWlu +YWNl +YXB +YXBw +ZFW +ZGMx +ZRg +ZUXg +ZWl +ZWRl +ZXIt +ZXJz +zxkk +Zzd +zzg diff --git a/.github/actions/spelling/line_forbidden.patterns b/.github/actions/spelling/line_forbidden.patterns new file mode 100644 index 000000000..03d870382 --- /dev/null +++ b/.github/actions/spelling/line_forbidden.patterns @@ -0,0 +1,619 @@ +# Detect common combinations of valid words that are in fact invalid. +# Useful for brand capitalizations + +# Catch PR links left in the release notes +\bhttps:\/\/github.com\/mondoohq\/.*\/pull\/\d* + +# +# Terms to avoid +# + +# s.b. Allow list +\swhitelist\b +\swhitelisting\b +\swhitelisted\b +\swhite list\b +\swhite listing\b +\swhite listed\b + +# s.b. Block list +\sblacklist\b +\sblacklisting\b +\sblacklisted\b +\sblack list\b +\sblack listing\b +\sblack listed\b + +# +# Our Terms +# + +# s.b. Mondoo Platform +\sMondoo platform\b + +# s.b. Compliance Hub +\scompliance hub\b +\sCompliance hubplatform\b + +# +# Industry Terms +# + +# s.b. Side scanning +\bSidescanning\b +\bsidescanning\b + +# s.b. DevOps +\bDev Ops\b +\bDevops\b + +# s.b. SaaS +\bSaas\b +\bsaas\b + +# s.b. Docker Hub +\bDockerHub\b +\bDockerhub\b + +# s.b. REST API +\bRest API\b +\brest API\b +\brest api\b + +# s.b. DevSecOps +\bDevsecops\b + +# s.b. on-premises +\bon-premise\b + +# s.b. email +\be-mail\b + +# +# Product Names +# + +# s.b. Jira +\bJIRA\b + +# s.b. MariaDB +\bMaria DB\b +\bmariaDB\b +# \bmariaDb\b causes failures in MQL queries + +# s.b. PostgreSQL +\bPostgreSql\b + +# s.b. Firefox +\bFireFox\b + +# s.b. CentOS +\bCentos\b +\bCent OS\b +\bcentOS\b + +# s.b. macOS +\bOS X\b +\bMacOS\b +\bMac OS\b + +# s.b. Okta +\bOcta\b + +# s.b. Elasticsearch +\bElasticSearch\b + +# s.b. DocuSign +\bDocu Sign\b + +# s.b. DocuSign +\bDocu Sign\b + +# s.b. DocuSign +\bDocu Sign\b +\bDocusign\b + +# s.b. MongoDB +\bMongo DB\b +\bMongoDb\b + +# s.b. MySQL +\bMysql\b +\bMySql\b + +# s.b. OpenStack +\bOpen Stack\b +\bOpenstack\b + +# s.b. Red Hat +\bRedHat\b +\bRedhat\b + +# s.b. EuroLinux +\bEurolinux\b +\bEuro Linux\b + +# s.b. AlmaLinux +\bAlma Linux\b + +# s.b. openSUSE +\bOpenSUSE\b + +# s.b. openSUSE +\bopenSuse\b + +# s.b. CircleCI +\bCircleCi\b +\bCircle CI\b + +# s.b. AppArmor +\bApparmor\b +\bApp Armor\b + +# s.b. SELinux +\bSeLinux\b +\bSelinux\b + +# s.b. InSpec +\b[Ii]nspec\b + +# s.b. GitHub +\bGithub\b + +# s.b. GitLab +\bGitlab\b + +# s.b. JavaScript +\bJavascript\b + +# s.b. OpenSSL +\bOpenssl\b +\bopenSSL\b + +# s.b. CloudBees +\bCloudbees\b + +# s.b. System76 +\bSystem 76\b + +# s.b. VirtualBox +\bvirtualbox\b +\bVirtualbox\b +\bVirtual Box\b + +# +# HashiCorp Products +# + +# s.b. HashiCorp +\bHashicorp\b + +# s.b. Terraform +\bTerraForm\b + +# s.b. Vagrantfile +\bVagrant file\b +\bVagrantFile\b + +# +# Microsoft Products +# + +# s.b. Microsoft +\bMicroSoft\b + +# s.b. PowerPoint +\bPower Point\b +\bPowerpoint\b + +# s.b. OneNote +\bOne Note\b +\bOnenote\b + +# s.b. Windows Server +\bWindows server\b + +# s.b. Team Foundation Server +\bTeam foundation server\b +\bteam foundation server\b + +# s.b. Active Directory +\bActive directory\b +\bactive directory\b + +# s.b. Group Policy Object +\bGroup policy object\b +\bgroup policy object\b +\bGroup Policy object\b + +# s.b. Power BI +\bPowerBI\b + +# s.b. SharePoint +\bSharepoint\b +\bShare Point\b + +# s.b. BitLocker +\bBitlocker\b +\bbitLocker\b + +# s.b. VS Code +\bVSCode\b +\bVScode\b + +# s.b. LinkedIn +\bLinked In\b +\bLinkedin\b + +# +# VMware Products +# + +# s.b. VMware +\bVmware\b +\bVMWare\b + +# s.b. vCenter +\bVcenter\b +\bVCenter\b + +# s.b. vSphere +\bVsphere\b +\bVSphere\b + +# s.b. ESXi +\bEsxi\b + +# +# AWS Products +# + +# s.b. App2Container +\bApp2container\b + +# s.b. AppFlow +\bAppflow\b + +# s.b. AppSync +\bAppsync\b + +# s.b. CloudEnsure +\bCloudensure\b + +# s.b. CloudFormation +\bCloudformation\b +\bCloud Formation\b + +# s.b. CloudFront +\bCloudfront\b + +# s.b. CloudHSM +\bCloudHsm\b +\bCloudhsm\b + +# s.b. CloudSearch +\bCloudsearch\b + +# s.b. CloudShell +# we can't check for Cloud Shell since that's what Azure calls it +\bCloudshell\b +# cloudshell results in false positives + +# s.b. CloudTrail +\bCloudtrail\b + +# s.b. CloudWatch +\bCloudwatch\b + +# s.b. CodeArtifact +\bCodeartifact\b + +# s.b. CodeBuild +\bCodebuild\b + +# s.b. CodeCommit +\bCodecommit\b + +# s.b. CodeDeploy +\bCodedeploy\b + +# s.b. CodeGuru +\bCodeguru\b + +# s.b. CodePipeline +\bCodepipeline\b + +# s.b. CodeStar +\bCodestar\b + +# s.b. Copilot +\bCoPilot\b + +# s.b. DeepRacer +\bDeepracer\b + +# s.b. DocumentDB +\bDocument DB\b +\bDocumentDb\b + +# s.b. DynamoDB +\bDynamo DB\b +\bDynamoDb\b + +# s.b. ElastiCache +\bElasticache\b + +# s.b. EventBridge +\bEventbridge\b + +# s.b. Fargate +\bFarGate\b +\bFar Gate\b + +# s.b. FinSpace +\bFinSpace\b + +# s.b. FSx +\bFSX\b + +# s.b. GameLift +\bGamelift\b + +# s.b. GuardDuty +\bGuardduty\b + +# s.b. Honeycode +\bHoneyCode\b + +# s.b. Lambda +\bLamba\b + +# s.b. Lightsail +\bLightSail\b + +# s.b. MXNet +\bMxnet\b +\bMXnet\b + +# s.b. OpenSearch +\bOpensearch\b + +# s.b. OpenShift +\bOpenshift\b + +# s.b. PrivateLink +\bPrivatelink\b + +# s.b. QuickSight +\bQuicksight\b + +# s.b. Redshift +\bRedShift\b + +# s.b. RoboMaker +\bRobomaker\b + +# s.b. Route 53 +\bRoute53\b + +# s.b. SageMaker +\bSagemaker\b + +# s.b. SiteWise +\bSitewise\b + +# s.b. StackSets +\bStacksets\b + +# s.b. WorkDocs +\bWorkdocs\b + +# s.b. WorkMail +\bWorkmail\b + +# +# GCP Products +# + +# s.b. AlloyDB +\bAlloy DB\b + +# s.b. AppEngine +\bApp Engine\b + +# s.b. BigLake +\bBig Lake\b + +# s.b. BigQuery +\bBig Query\b + +# s.b. Cloud Build +\bCloudBuild\b +\bCloud build\b + +# s.b. Cloud CDN +\bCloudCDN\b + +# s.b. Cloud Functions +\bCloud functions\b + +# disabled for now in this repo due to false positives +# s.b. Cloud Run +# \bCloudRun\b +# \bCloud run\b + +# s.b. Cloud SQL +\bCloudSQL\b + +# s.b. Compute Engine +\bComputeEngine\b +\bCompute engine\b + +# s.b. Dataplex +\bDataPlex\b + +# s.b. Datastream +\bDataStream\b +\bData Stream\b + +# s.b. Dialogflow +\bDialogFlow\b + +# s.b. Firestore +\bFireStore\b + +# s.b. gVNIC +\bGVNIC\b + +# s.b. Knative +\bKNative\b + +# s.b. Memorystore +\bMemoryStore\b +\bMemory Store\b + +# s.b. Pub/Sub +\bPubSub\b + +# s.b. TensorFlow +\bTensor Flow\b + +# s.b. Vertex AI +\bVertexAI\b + +# s.b. VMware Engine +\bVMware engine\b +\bVMWare Engine\b + +# +# Azure Products +# + +# s.b. Azure Pipelines +\bAzure DevOps Pipelines\b + +# s.b. Key Vault +\bKey vault\b +# \bKeyVault\b # disabled for now in this repo due to false positives + +# s.b. Ampere +\bampere\b + +# s.b. Azure DevOps Server +\bAzure DevOps server\b + +# s.b. Synapse Analytics +\bSynapse analytics\b +\bsynapse analytics\b + +# s.b. Cognitive Services +\bCognitive services\b +\bcognitive services\b + +# s.b. Event Hubs +\bEvent hubs\b +\bevent hubs\b + +# s.b. CloudOps +\bCloud Ops\b +\bCloud ops\b +\bcloud ops\b + +# s.b. Batch Service +\bBatch service\b +\bbatch service\b + +# s.b. Service Fabric Cluster +\bservice fabric cluster\b + +# s.b. Azure Kubernetes Service +\bAzure Kubernetes service\b + +# s.b. Cosmos DB +\bCosmosDB\b +\bCosmoDB\b +\bCosmo DB\b + +# s.b. SignalR Service +\bSignalR service\b +\bSignal R Service\b + +# s.b. App Service Certificate +\bapp service certificate\b + +# s.b. Privileged Identity Management +\bprivileged identity management\b + +# s.b. BizTalk Service +\bBizTalk service\b +\bBiztalk service\b +\bBiz Talk service\b +\bBiz Talk Service\b + +# s.b. Data Box +\bdata box\b + +# s.b. Database Migration Service +\bdatabase migration service\b + +# s.b. Internet Analyzer +\bInternet analyzer\b +\binternet analyzer\b + +# s.b. Web Application Firewall +\bWeb application firewall\b +\bweb Application Firewall\b + +# s.b. SQL Vulnerability Assessment +\bSQL vulnerability assessment\b + +# s.b. StorSimple +\bStor Simple\b + +# +# Common Typos +# + +# s.b. another +\ban[- ]other\b + +# s.b. greater than +\bgreater then\b + +# s.b. less than +\bless then\b + +# s.b. otherwise +\bother[- ]wise\b + +# s.b. nonexistent +\bnon existing\b +\b[Nn]o[nt][- ]existent\b + +# s.b. preexisting +[Pp]re-existing + +# s.b. preempt +[Pp]re-empt\b + +# s.b. preemptively +[Pp]re-emptively + +# s.b. reentrancy +[Rr]e-entrancy + +# s.b. reentrant +[Rr]e-entrant + +# s.b. policies +[Pp]olices + +# s.b. ID +# \bId\b # disabled in this repo due to false positives + +# s.b. CSV +\bCVS\b + +# Reject duplicate words +\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s + diff --git a/.github/actions/spelling/only.txt b/.github/actions/spelling/only.txt new file mode 100644 index 000000000..91e0c2f9f --- /dev/null +++ b/.github/actions/spelling/only.txt @@ -0,0 +1,3 @@ +^README\.md$ +(?:^|/)docs/ +(?:^|/)releases/ diff --git a/.github/actions/spelling/patterns.txt b/.github/actions/spelling/patterns.txt new file mode 100644 index 000000000..7eb4c3cbf --- /dev/null +++ b/.github/actions/spelling/patterns.txt @@ -0,0 +1,91 @@ +# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns + +# acceptable duplicates +# ls directory listings +[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+ + +# Commit message -- Signed-off-by and friends +^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$ + +# Autogenerated revert commit message +^This reverts commit [0-9a-f]{40}\.$ + +# ignore long runs of a single character: +\b([A-Za-z])\g{-1}{3,}\b + +# ignore funky space IDs that blow up spell checking +api\.mondoo\.app\/space.*\b +console\.mondoo\.com\/space.*\b + +# azure subscription ID +[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12} + +# azure subscriptions URL +\/subscriptions\/\S* + +# docker container +\b[a-z,0-9]{12}\b + +# URLs in markdown links / images +]\(.*\) + +# Azure Key Vault Vault. It feels wrong, but it's technically right +Key Vault Vault + +# luna containers in scan output +\bluna/.*\b + +# this comes up in permissions and is valid +\broot root\b + +# AWS resources +(ami|subnet|vpc|sg)-[0-9a-fA-F]{17} + +# http and https URLs +https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*) + +# registry key paths +HKEY_[\w\\]* + +# Container digests +\bsha256:\w* + +# mime types +\bapplication\/\S* + +# skip mql uids +uid:\s.*$ + +# ARN values +\barn:\S* + +# mac user dir path +\/Users\/\S* + +# AWS Token, ID access key, etc +aws_session_token\s+\=(\s+)?.+ +aws_access_key_id\s+\=(\s+)?.+ +aws_secret_access_key\s+\=(\s+)?.+ + +# PGP +\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b +# GPG keys +\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b + +# uuid +\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b + +# curl arguments +\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* + +# set arguments +\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)* + +# tar arguments +\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+ + +# file permissions +['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s] + +# score score is valid in MQL docs +score score diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt new file mode 100644 index 000000000..a2d814de9 --- /dev/null +++ b/.github/actions/spelling/reject.txt @@ -0,0 +1,12 @@ +ad-hoc +^attache$ +benefitting +occurences? +^dependan.* +^oer$ +Sorce +^[Ss]pae.* +^untill$ +^untilling$ +^wether.* +deets diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..d487a0c2c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,15 @@ +--- +version: 2 +updates: + - package-ecosystem: npm + directory: / + schedule: + interval: daily + - package-ecosystem: docker + directory: / + schedule: + interval: daily + - package-ecosystem: github-actions + directory: / + schedule: + interval: daily diff --git a/.github/workflows/PREview-create.yaml b/.github/workflows/PREview-create.yaml new file mode 100644 index 000000000..e91f1fad6 --- /dev/null +++ b/.github/workflows/PREview-create.yaml @@ -0,0 +1,87 @@ +name: "PREview: Create" + +on: + pull_request: + types: [opened, reopened] + +jobs: + create-preview: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: mshick/add-pr-comment@v2 + with: + message: | + **Starting creation of the PREview environment...** + repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token-user-login: "github-actions[bot]" + allow-repeats: true + - name: Obtain Bucket Name + uses: ./.github/actions/PREview-data + - name: Authenticate with Google Cloud + uses: "google-github-actions/auth@v2" + with: + credentials_json: "${{secrets.GCP_SERVICE_ACCOUNT}}" + - name: "Set up Cloud SDK" + uses: "google-github-actions/setup-gcloud@v2" + - name: Create PReview bucket + run: gsutil mb gs://${BUCKET} + - name: Configure bucket for public access + run: gsutil iam ch allUsers:legacyObjectReader gs://${BUCKET} + - name: Configure bucket web properties + run: gsutil web set -m index.html -e 404.html gs://${BUCKET} + - uses: mshick/add-pr-comment@v2 + if: success() + with: + message: | + **PREview is ready at [${{ env.URL }}](${{ env.URL }})** + repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token-user-login: "github-actions[bot]" + allow-repeats: true + + data: + runs-on: ubuntu-latest + outputs: + branch: ${{ steps.data.outputs.branch }} + bucket: ${{ steps.data.outputs.bucket }} + url: ${{ steps.data.outputs.url }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Determine branch shortname, bucket name and URL. + id: data + shell: bash + run: | + BRANCH=`echo ${GITHUB_HEAD_REF} | sed 's/.*\///'` + echo "::set-output name=branch::${BRANCH}" + echo "::set-output name=bucket::mondoo-pre-docs-${BRANCH}/docs" + echo "::set-output name=url::https://mondoo-pre-docs-${BRANCH}.storage.googleapis.com/docs/index.html" + env + + build: + uses: ./.github/workflows/_build.yaml + with: + output_dir: build + secrets: inherit + + deploy-update: + needs: [data, build] + uses: ./.github/workflows/_deploy.yaml + with: + src_dir: build + bucket: ${{ needs.data.outputs.bucket }} + secrets: inherit + + notify: + runs-on: ubuntu-latest + needs: [deploy-update, data] + steps: + - uses: mshick/add-pr-comment@v2 + if: success() + with: + message: | + **PREview has been updated at ${{ needs.data.outputs.url }}** + repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token-user-login: "github-actions[bot]" + allow-repeats: true diff --git a/.github/workflows/PREview-delete.yaml b/.github/workflows/PREview-delete.yaml new file mode 100644 index 000000000..5a67e9c7c --- /dev/null +++ b/.github/workflows/PREview-delete.yaml @@ -0,0 +1,37 @@ +name: "PREview: Delete" + +on: + pull_request: + types: [closed] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: mshick/add-pr-comment@v2 + with: + message: | + **Cleaning up PREview environment...** + repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token-user-login: "github-actions[bot]" + allow-repeats: true + - name: Obtain Bucket Name + uses: ./.github/actions/PREview-data + - name: Authenticate with Google Cloud + uses: "google-github-actions/auth@v2" + with: + credentials_json: "${{secrets.GCP_SERVICE_ACCOUNT}}" + - name: "Set up Cloud SDK" + uses: "google-github-actions/setup-gcloud@v2" + - name: Delete PReview bucket + run: gsutil rm -r gs://${BUCKET} + - uses: mshick/add-pr-comment@v2 + if: success() + with: + message: | + **PREview environment deleted.** + repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token-user-login: "github-actions[bot]" + allow-repeats: true diff --git a/.github/workflows/PREview-update.yaml b/.github/workflows/PREview-update.yaml new file mode 100644 index 000000000..c171eaa67 --- /dev/null +++ b/.github/workflows/PREview-update.yaml @@ -0,0 +1,51 @@ +name: "PREview: Update" + +on: + pull_request: + types: [synchronize] + +jobs: + data: + runs-on: ubuntu-latest + outputs: + branch: ${{ steps.data.outputs.branch }} + bucket: ${{ steps.data.outputs.bucket }} + url: ${{ steps.data.outputs.url }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Determine branch shortname, bucket name and URL. + id: data + shell: bash + run: | + BRANCH=`echo ${GITHUB_HEAD_REF} | sed 's/.*\///'` + echo "::set-output name=branch::${BRANCH}" + echo "::set-output name=bucket::mondoo-pre-docs-${BRANCH}/docs" + echo "::set-output name=url::https://mondoo-pre-docs-${BRANCH}.storage.googleapis.com/docs/index.html" + + build: + uses: ./.github/workflows/_build.yaml + with: + output_dir: build + secrets: inherit + + deploy-update: + needs: [data, build] + uses: ./.github/workflows/_deploy.yaml + with: + src_dir: build + bucket: ${{ needs.data.outputs.bucket }} + secrets: inherit + + notify: + runs-on: ubuntu-latest + needs: [deploy-update, data] + steps: + - uses: mshick/add-pr-comment@v2 + if: success() + with: + message: | + **PREview has been updated at ${{ needs.data.outputs.url }}** + repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token-user-login: "github-actions[bot]" + allow-repeats: true diff --git a/.github/workflows/_build.yaml b/.github/workflows/_build.yaml new file mode 100644 index 000000000..c16e3b7d3 --- /dev/null +++ b/.github/workflows/_build.yaml @@ -0,0 +1,42 @@ +name: Build Static Site + +on: + workflow_call: + inputs: + output_dir: + description: "The directory to use for static content build output" + default: "build" + required: false + type: string + secrets: + ALGOLIA_API_KEY: + description: "The Algolia API key to use for indexing" + ALGOLIA_APP_ID: + description: "The Algolia App ID to use for indexing" + HS_ACCOUNTID: + description: "The HubSpot Account ID to use for tracking" + +jobs: + build-static: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Setup Node v20 + uses: actions/setup-node@v4 + with: + node-version: 20 + - name: Install YARN dependencies + run: yarn install + - name: Replace secrets + run: | + sed -i "s/ALGOLIA_API_KEY/${{ secrets.ALGOLIA_API_KEY }}/g" docusaurus.config.js + sed -i "s/ALGOLIA_APP_ID/${{ secrets.ALGOLIA_APP_ID }}/g" docusaurus.config.js + sed -i "s/HS_ACCOUNTID/${{ secrets.HS_ACCOUNTID }}/g" docusaurus.config.js + - name: Build site + run: yarn build + - name: Cache Content + uses: actions/cache@v4 + with: + path: ${{ inputs.output_dir }}/* + key: ${{ github.sha }} diff --git a/.github/workflows/_deploy.yaml b/.github/workflows/_deploy.yaml new file mode 100644 index 000000000..a3628246e --- /dev/null +++ b/.github/workflows/_deploy.yaml @@ -0,0 +1,34 @@ +name: Deploy Static Site to GCS + +on: + workflow_call: + inputs: + src_dir: + description: "The directory containing static content" + default: "build" + required: false + type: string + bucket: + description: "The GCS Bucket to write to" + required: true + type: string + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Recall Cache Content + uses: actions/cache@v4 + with: + path: ${{ inputs.src_dir }}/* + key: ${{ github.sha }} + - name: Authenticate with Google Cloud + uses: "google-github-actions/auth@v2" + with: + credentials_json: "${{ secrets.GCP_SERVICE_ACCOUNT }}" + - name: "Set up Cloud SDK" + uses: "google-github-actions/setup-gcloud@v2" + - name: Upload static content to buckets + run: gsutil -m -h "Cache-control:public, max-age=60" rsync -r -c -C -d ${{ inputs.src_dir }}/ gs://${{ inputs.bucket }} diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml new file mode 100644 index 000000000..6774453a4 --- /dev/null +++ b/.github/workflows/cla.yaml @@ -0,0 +1,26 @@ +name: "CLA Assistant" +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +jobs: + CLAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the Mondoo CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: contributor-assistant/github-action@v2.3.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_ACCESS_TOKEN }} + with: + path-to-signatures: "signatures/version1/cla.json" + path-to-document: "https://github.com/mondoohq/.github/blob/master/CLA.md" + custom-pr-sign-comment: "I have read the Mondoo CLA Document and I hereby sign the CLA" + custom-notsigned-prcomment: "Thank you for your submission. We really appreciate it. Before we can accept your contribution, we ask that you sign the [Mondoo Contributor License Agreement](https://github.com/mondoohq/.github/blob/master/CLA.md). You can sign the CLA by adding a new comment to this pull request and pasting exactly the following text." + remote-repository-name: cla + remote-organization-name: mondoohq + branch: "main" + allowlist: mondoo-tools,github-actions[bot],dependabot[bot] diff --git a/.github/workflows/deploy-mondoo-com.yaml b/.github/workflows/deploy-mondoo-com.yaml new file mode 100644 index 000000000..38f9eed32 --- /dev/null +++ b/.github/workflows/deploy-mondoo-com.yaml @@ -0,0 +1,19 @@ +name: Publish Mondoo.com/docs (Prod) + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + build: + uses: ./.github/workflows/_build.yaml + secrets: inherit + + deploy-production: + needs: build + uses: ./.github/workflows/_deploy.yaml + with: + src_dir: build + bucket: mondoo-io-docs/docs + secrets: inherit diff --git a/.github/workflows/deploy-mondoo-love.yaml b/.github/workflows/deploy-mondoo-love.yaml new file mode 100644 index 000000000..0a491ff41 --- /dev/null +++ b/.github/workflows/deploy-mondoo-love.yaml @@ -0,0 +1,36 @@ +name: Publish Mondoo.love (Staging) + +on: + pull_request: + types: + - closed + workflow_dispatch: + +jobs: + build: + uses: ./.github/workflows/_build.yaml + if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' + secrets: inherit + + deploy-staging: + needs: build + uses: ./.github/workflows/_deploy.yaml + with: + src_dir: build + bucket: mondoo-docs-edge/docs + secrets: inherit + + notify: + needs: deploy-staging + runs-on: ubuntu-latest + steps: + - name: Update PR with Status (Completed Success) + if: success() + uses: mshick/add-pr-comment@v2 + with: + message: | + **Deployment to mondoo.love/docs complete!** + [https://mondoo.love/docs](https://mondoo.love/docs) + repo-token: ${{ secrets.GITHUB_TOKEN }} + repo-token-user-login: "github-actions[bot]" + allow-repeats: false diff --git a/.github/workflows/image-optimize.yaml b/.github/workflows/image-optimize.yaml new file mode 100644 index 000000000..166fe77ca --- /dev/null +++ b/.github/workflows/image-optimize.yaml @@ -0,0 +1,25 @@ +name: "Optimize Images" + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - "**.jpg" + - "**.jpeg" + - "**.png" + - "**.gif" + - "**.svg" + - "**.webp" + +jobs: + imgcmp: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - uses: 9sako6/imgcmp@v2.0.4 + with: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/spell-check.yaml b/.github/workflows/spell-check.yaml new file mode 100644 index 000000000..57be00a2d --- /dev/null +++ b/.github/workflows/spell-check.yaml @@ -0,0 +1,53 @@ +--- +name: Spell Checking + +on: + pull_request: + types: [opened, reopened, synchronize] + +jobs: + spelling: + name: Run spell check + permissions: + contents: read + pull-requests: read + actions: read + outputs: + followup: ${{ steps.spelling.outputs.followup }} + runs-on: ubuntu-latest + if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'" + concurrency: + group: spelling-${{ github.event.pull_request.number || github.ref }} + # note: If you use only_check_changed_files, you do not want cancel-in-progress + cancel-in-progress: true + steps: + - name: check-spelling + id: spelling + uses: check-spelling/check-spelling@v0.0.22 + with: + disable_checks: noisy-file + suppress_push_for_open_pull_request: 1 + checkout: true + post_comment: 0 + dictionary_source_prefixes: '{"mondoo": "https://raw.githubusercontent.com/mondoohq/spellcheck-dictionary/main/", "cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20230509/dictionaries/"}' + extra_dictionaries: cspell:aws/aws.txt + cspell:filetypes/filetypes.txt + cspell:software-terms/src/software-terms.txt + cspell:software-terms/src/software-tools.txt + cspell:companies/src/companies.txt + mondoo:mondoo_dictionary.txt + + comment: + name: Report + runs-on: ubuntu-latest + needs: spelling + permissions: + contents: write + pull-requests: write + if: (success() || failure()) && needs.spelling.outputs.followup + steps: + - name: comment + uses: check-spelling/check-spelling@v0.0.22 + with: + checkout: true + task: ${{ needs.spelling.outputs.followup }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..b2d6de306 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..50a48e9b3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true +} diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 000000000..968213ef0 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,30 @@ +:{$PORT} { + + header { + Access-Control-Allow-Origin "*" + Access-Control-Request-Method "GET" + Access-Control-Request-Headers "Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, Accept-Encoding, X-Requested-With, User-Agent" + } + + encode zstd gzip + root * {$ROOT_DIR} + file_server + + redir /references/cli/mondoo_agents /references/cli/mondoo_client + redir /references/cli/mondoo_agents/ /references/cli/mondoo_client + redir /references/cli/mondoo_agents_generate-credentials* /references/cli/mondoo_client_generate-credentials + redir /references/cli/mondoo_agents_generate-token* /references/cli/mondoo_client_generate-token + redir /getstarted/introduction_mql_shell* /platform/console/policies/policy-as-code + redir /policies/overview* /platform/console/policies/overview + redir /policies/* /platform/console/policies/overview + redir /installation/operating_systems/installation /cnspec/ + redir /installation/operating_systems* /cnspec/cnspec-adv-install/overview + + handle_errors { + @404 { + expression {http.error.status_code} == 404 + } + rewrite @404 /404.html + file_server + } +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..4a092e8e3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM caddy:2.7.6-alpine +ADD build /usr/share/caddy +ADD Caddyfile /etc/caddy/Caddyfile diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..14e2f777f --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..6395905b7 --- /dev/null +++ b/Makefile @@ -0,0 +1,53 @@ +.PHONY: yarn +yarn: + yarn install + +.PHONY: fmt +fmt: yarn + yarn prettier --write . + +.PHONY: test/fmt +test/fmt: yarn + yarn prettier --check . + +.PHONY: build +build: yarn fmt + yarn build + +.PHONY: serve +serve: yarn fmt build + yarn run serve + +### +### Caddy +### +.PHONY: caddy/run +caddy/run: build + PORT=8080 ROOT_DIR=./build caddy run + +### +### Dockerized for Cloud Run +### +.PHONY: container/build +container/build: build + docker build --no-cache --platform linux/amd64 -t mondoo/docs . + +.PHONY: container/serve +container/serve: + docker run -d --rm -p 8080:8080 -e PORT=8080 -e ROOT_DIR=/usr/share/caddy mondoo/docs + +DOCS_SERVICE_NAME=docs +SERVICE_REGION=us-central1 +container/deploy/staging: container/build + docker tag mondoo/docs gcr.io/mondoo-dev-262313/docs + docker push gcr.io/mondoo-dev-262313/docs + gcloud run deploy "${DOCS_SERVICE_NAME}" --project mondoo-dev-262313 --concurrency=1 --memory=512Mi --image gcr.io/mondoo-dev-262313/docs --platform managed --region ${SERVICE_REGION} --set-env-vars=ROOT_DIR=/usr/share/caddy + +DOCS_SERVICE_NAME=docs +SERVICE_REGION=us-central1 +container/deploy/production: container/build + docker tag mondoo/docs gcr.io/mondoo-base-infra/docs + docker push gcr.io/mondoo-base-infra/docs + gcloud run deploy "${DOCS_SERVICE_NAME}" --project mondoo-base-infra --concurrency=1 --memory=512Mi --image gcr.io/mondoo-base-infra/docs --platform managed --region ${SERVICE_REGION} --set-env-vars=ROOT_DIR=/usr/share/caddy + + diff --git a/README.md b/README.md index 1dc6372f7..15845bc78 100644 --- a/README.md +++ b/README.md @@ -1 +1,64 @@ -# docs \ No newline at end of file +# Mondoo documentation + +This repo contains the open source Mondoo documentation, which includes Mondoo, cnspec, cnquery, and MQL. It's built using [Docusaurus 3](https://docusaurus.io/), deployed to a Google Cloud Storage bucket, and published at [mondoo.com/docs](https://mondoo.com/docs/). + +## Want to contribute to the Mondoo docs? + +Great! If you're just fixing a typo or making a small change to an existing topic, just submit a merge request in this repo. For larger contributions, please create a GitHub issue in this repo to discuss the changes before you begin. + +## Install Docusaurus locally + +Install Docusaurus environment so you can build and test your contributions. + +### Install Node and Yarn + +This project uses Node.js version 20 and the Yarn package manager. If you don't already have these installed: + +- [Get Node.js](https://nodejs.org/en/download/) +- [Get Yarn](https://yarnpkg.com/getting-started/install) + +Note: Make sure to follow the instructions to update your shell's profile for Node. + +### Install Docusaurus and other dependencies + +To set up Docusaurus and its dependencies, run this command: + +```bash +yarn install +``` + +## Make changes + +To make a small fix, just find the source file and go for it! For larger changes, please create an issue here in GitHub so we can discuss it before you begin. + +### Find the files + +The markdown files that form the content of the docs are in the `/docs` directory. The Releases blog is in the `/releases` directory. Find images in `/static/img`. + +Note: We programmatically generate MQL resource and cnspec/cnquery command line reference topics from .lr and .yaml files in the [mondoohq/cnquery](https://github.com/mondoohq/cnquery) codebase. To make changes to those references docs, you must change the source content in the cnquery repo. Our tools regularly overwrite any changes made to that content the docs repo. + +### Follow our style + +Until we make our documentation style guide public, please try to follow the [Google +developer documentation style guide](https://developers.google.com/style). With a few exceptions, that's what we do. + +## Locally build and test the Mondoo docs + +To generate a local build of the Mondoo docs, run this command: + +```bash +make serve +``` + +Docusaurus generates the static content in the `build/` directory and launches a preview in your default web browser on a local development server (by default http://localhost:3000). + +## Request to merge + +Submit a request to merge your branch. We accept only [signed Git commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). + +Thank you for your contribution! + +## Legal + +- **Copyright:** 2018-2024, Mondoo, Inc. +- **License:** MPL 2.0 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 000000000..bfd75dbdf --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve("@docusaurus/core/lib/babel/preset")], +}; diff --git a/docs/cnquery/README.md b/docs/cnquery/README.md new file mode 100644 index 000000000..7a49b640c --- /dev/null +++ b/docs/cnquery/README.md @@ -0,0 +1,120 @@ +--- +title: Get Started with cnquery +id: cnquery-get-started +sidebar_label: Get Started with cnquery +displayed_sidebar: cnquery +sidebar_position: 2 +description: cnquery is Mondoo's open source, cloud-native tool that answers every question about your infrastructure. Install, and get up and running with cnquery. +image: /img/featured_img/mondoo-feature.jpg +--- + +Welcome to cnquery, an open source project created by [Mondoo](https://mondoo.com)! + +-> [Learn about cnquery](/cnquery/cnquery-about) + +## Download and install cnquery​ + +Install cnquery with our installation script: + +### Linux and macOS + +```bash +bash -c "$(curl -sSL https://install.mondoo.com/sh)" +``` + +(You can read the [Linux/macOS installation script](https://install.mondoo.com/sh).) + +### Windows + +```powershell +Set-ExecutionPolicy Unrestricted -Scope Process -Force; +[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; +iex ((New-Object System.Net.WebClient).DownloadString('https://install.mondoo.com/ps1/cnquery')); +Install-Mondoo -Product cnquery; +``` + +(You can read the [Windows installation script](https://install.mondoo.com/ps1/cnquery).) + +### Install manually + +Manual installation packages are available on [GitHub releases](https://github.com/mondoohq/cnquery/releases/latest). + +:::note + +If you install cnquery on machines that can't download and install updates (because they're air-gapped or don't give cnquery write access), you must install cnquery providers. To learn more, read [Manage cnquery Providers](/cnquery/providers/). + +::: + +## Run queries in the cnquery shell​ + +The easiest way to discover cnquery's capabilities is to use the interactive shell, which has auto-complete to guide you: + +``` +cnquery shell +``` + +Once inside the shell, you can enter MQL queries. For example, this query returns the name of the current machine and the platform it's running: + +```coffee +asset { name title } +``` + +### Get help in the cnquery shell​ + +To see what information cnquery can retrieve, use the `help` command. These are some examples of how the help can guide you: + +| This command... | Describes the queryable resources for... | +| ---------------------- | ---------------------------------------- | +| `help` | All of cnquery | +| `help k8s` | Kubernetes | +| `help k8s.statefulset` | Kubernetes Cluster StatefulSets | +| `help azure` | Azure | +| `help terraform` | Terraform | + +### Exit the cnquery shell​ + +To exit cnquery shell, either press `Ctrl + D` or type `exit`. + +## Run queries in your own shell​ + +To run standalone queries in your shell, use the cnquery run command: + +```bash +cnquery run TARGET -c "QUERY" +``` + +| For... | Substitute... | +| -------- | ----------------------------------------------------------------------- | +| `TARGET` | The asset to query, such as `local` or a transport to a remote machine. | +| `QUERY` | The MQL query that specifies the information you want. | + +For example, this command runs a query against your local system. It lists the services installed and whether each service is running: + +```bash +cnquery run local -c "services.list { name running }" +``` + +For a list of supported targets, use the help command: + +```bash +cnquery help run +``` + +## Explore your infrastructure in Mondoo Platform​ + +To more easily explore your infrastructure, sign up for a free Mondoo Platform account. Mondoo's web-based console allows you to navigate, search, and inspect all of your assets. + +To learn about Mondoo Platform, read the [Mondoo Platform docs](../intro.md) or visit [mondoo.com](https://mondoo.com). + +To learn how to sign up for a free Mondoo account and register cnquery, read [Log into Mondoo Platform for More Capabilities](/cnquery/cnquery-platform/). + +## Learn more​ + +- To get started with AWS, read [Query AWS](/cnquery/cnquery-aws/). +- To get started with Google Cloud, read [Query Google Cloud](/cnquery/cnquery-gcp/) +- To get started with Kubernetes, read [Query Kubernetes](/cnquery/cnquery-k8s/) +- To explore cnquery commands, read [CLI Reference](/cnquery/cli/cnquery). +- To explore the capabilities of the MQL language, read the [MQL docs](/mql/resources). +- To learn what technologies cnquery integrates with, read [Supported Query Targets](/cnquery/cnquery-supported). + +--- diff --git a/docs/cnquery/_cnquery-distribute.md b/docs/cnquery/_cnquery-distribute.md new file mode 100644 index 000000000..8b63b171d --- /dev/null +++ b/docs/cnquery/_cnquery-distribute.md @@ -0,0 +1,37 @@ +--- +title: Distribute Queries Across Your Infrastructure +id: cnquery-distribute +sidebar_label: Distribute Across Your Infrastructure +displayed_sidebar: cnquery +sidebar_position: 7 +description: Share cnquery query packs across your infrastructure using the Mondoo Query Hub. +image: /img/featured_img/mondoo-feature.jpg +--- + +:::note + +This feature is in development. + +::: + +You can share query packs across your infrastructure using the Mondoo Query Hub. The Query Hub creates a secure, private environment in your account that stores data about your assets. You can make all assets report on query packs, and you can define custom rules for your infrastructure. + +To use the Query Hub: + +```bash +cnquery auth login +``` + +Once set up, you can collect your asset's data: + +```bash +cnquery scan local +``` + +To add custom query packs, you can upload them: + +```bash +cnquery pack upload mypack.mql.yaml +``` + +--- diff --git a/docs/cnquery/_cnquery-explore.md b/docs/cnquery/_cnquery-explore.md new file mode 100644 index 000000000..1879080ce --- /dev/null +++ b/docs/cnquery/_cnquery-explore.md @@ -0,0 +1,43 @@ +--- +title: Explore Your Infrastructure +id: cnquery-explore +sidebar_label: Explore Your Infrastructure +displayed_sidebar: cnquery +sidebar_position: 7 +description: Explore the assets in your infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Use the `cnquery scan` command to explore an asset's configuration based on a query pack. This command retrieves an asset's configuration details. For example, you can scan the local system with its pre-configured query pack. + +```bash +cnquery scan local +``` + + + +## Explore your infrastructure in Mondoo Platform​ + +To more easily explore your infrastructure, sign up for a free Mondoo Platform account. Mondoo's web-based console allows you to navigate, search, and arrange all of your assets. + +Go to [console.mondoo.com](https://console.mondoo.com) to sign up. + +To learn about Mondoo Platform, read the [Mondoo Platform docs](../intro.md) or visit [mondoo.com](https://mondoo.com). + +--- diff --git a/docs/cnquery/_cnquery-install.mdx b/docs/cnquery/_cnquery-install.mdx new file mode 100644 index 000000000..da3dbb88c --- /dev/null +++ b/docs/cnquery/_cnquery-install.mdx @@ -0,0 +1,18 @@ +## Install cnquery on Linux or macOS + +```bash +bash -c "$(curl -sSL https://install.mondoo.com/sh)" +``` + +## Install cnquery on Windows + +```powershell +Set-ExecutionPolicy Unrestricted -Scope Process -Force; +[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; +iex ((New-Object System.Net.WebClient).DownloadString('https://install.mondoo.com/ps1/cnquery')); +Install-Mondoo -Product cnquery; +``` + +## Package install + +If you prefer a package, find it on [GitHub releases](https://github.com/mondoohq/cnquery/releases). diff --git a/docs/cnquery/_cnquery-output.md b/docs/cnquery/_cnquery-output.md new file mode 100644 index 000000000..ac6cad484 --- /dev/null +++ b/docs/cnquery/_cnquery-output.md @@ -0,0 +1,31 @@ +--- +title: Manage Query Output +id: cnquery-format-results +sidebar_label: Manage Query Output +displayed_sidebar: cnquery +sidebar_position: 5 +description: Learn what you can do with the output of cnquery queries +image: /img/featured_img/mondoo-feature.jpg +--- + +You can see verbose query results, output results to JSON, and share results with your team. + +## See verbose query results​ + +To see detailed progress as the query runs, use `-v` or `--verbose`. For example: + +```bash +cnquery run local -c "services.list{*}" -v +``` + +## Output results to JSON​ + +To convert the output of your query to JSON, use `-j` or `--json`. For example: + +```bash +cnquery run local -c "services.list{*}" -j +``` + +You can then pipe the output to jq or other applications. + +--- diff --git a/docs/cnquery/cli/_category_.json b/docs/cnquery/cli/_category_.json new file mode 100644 index 000000000..41757f5f1 --- /dev/null +++ b/docs/cnquery/cli/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "CLI Commands" +} diff --git a/docs/cnquery/cli/cnquery.md b/docs/cnquery/cli/cnquery.md new file mode 100644 index 000000000..2f9fa37f4 --- /dev/null +++ b/docs/cnquery/cli/cnquery.md @@ -0,0 +1,35 @@ +--- +id: cnquery +title: cnquery +--- + +cnquery CLI + +### Synopsis + +cnquery is a cloud-native tool for querying your entire infrastructure. + +### Options + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + -h, --help help for cnquery + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery bundle](cnquery_bundle.md) - Create, upload, and validate query packs +- [cnquery login](cnquery_login.md) - Register with Mondoo Platform +- [cnquery logout](cnquery_logout.md) - Log out from Mondoo Platform +- [cnquery providers](cnquery_providers.md) - Providers add connectivity to all assets +- [cnquery run](cnquery_run.md) - Run an MQL query +- [cnquery sbom](cnquery_sbom.md) - Experimental: Generate a software bill of materials (SBOM) for a given asset +- [cnquery scan](cnquery_scan.md) - Scan assets with one or more query packs +- [cnquery shell](cnquery_shell.md) - Interactive query shell for MQL +- [cnquery status](cnquery_status.md) - Verify access to Mondoo Platform +- [cnquery vault](cnquery_vault.md) - Manage vault environments +- [cnquery version](cnquery_version.md) - Display the cnquery version diff --git a/docs/cnquery/cli/cnquery_bundle.md b/docs/cnquery/cli/cnquery_bundle.md new file mode 100644 index 000000000..b1de64e0e --- /dev/null +++ b/docs/cnquery/cli/cnquery_bundle.md @@ -0,0 +1,29 @@ +--- +id: cnquery_bundle +title: cnquery bundle +--- + +Create, upload, and validate query packs + +### Options + +``` + -h, --help help for bundle +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI +- [cnquery bundle init](cnquery_bundle_init.md) - Create an example query pack +- [cnquery bundle lint](cnquery_bundle_lint.md) - Apply style formatting to a query pack +- [cnquery bundle publish](cnquery_bundle_publish.md) - Add a user-owned query pack to the Mondoo Security Registry diff --git a/docs/cnquery/cli/cnquery_bundle_init.md b/docs/cnquery/cli/cnquery_bundle_init.md new file mode 100644 index 000000000..798488adf --- /dev/null +++ b/docs/cnquery/cli/cnquery_bundle_init.md @@ -0,0 +1,34 @@ +--- +id: cnquery_bundle_init +title: cnquery bundle init +--- + +Create an example query pack + +### Synopsis + +Create an example query pack that you can use as a starting point. If you don't provide a filename, cnquery uses `example-pack.mql.yaml`. + +``` +cnquery bundle init [path] [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery bundle](cnquery_bundle.md) - Create, upload, and validate query packs diff --git a/docs/cnquery/cli/cnquery_bundle_lint.md b/docs/cnquery/cli/cnquery_bundle_lint.md new file mode 100644 index 000000000..0aa119422 --- /dev/null +++ b/docs/cnquery/cli/cnquery_bundle_lint.md @@ -0,0 +1,30 @@ +--- +id: cnquery_bundle_lint +title: cnquery bundle lint +--- + +Apply style formatting to a query pack + +``` +cnquery bundle lint [path] [flags] +``` + +### Options + +``` + -h, --help help for lint +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery bundle](cnquery_bundle.md) - Create, upload, and validate query packs diff --git a/docs/cnquery/cli/cnquery_bundle_publish.md b/docs/cnquery/cli/cnquery_bundle_publish.md new file mode 100644 index 000000000..84e850bc2 --- /dev/null +++ b/docs/cnquery/cli/cnquery_bundle_publish.md @@ -0,0 +1,31 @@ +--- +id: cnquery_bundle_publish +title: cnquery bundle publish +--- + +Add a user-owned query pack to the Mondoo Security Registry + +``` +cnquery bundle publish [path] [flags] +``` + +### Options + +``` + -h, --help help for publish + --pack-version string Override the version of each pack in the bundle +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery bundle](cnquery_bundle.md) - Create, upload, and validate query packs diff --git a/docs/cnquery/cli/cnquery_login.md b/docs/cnquery/cli/cnquery_login.md new file mode 100644 index 000000000..d0cf97406 --- /dev/null +++ b/docs/cnquery/cli/cnquery_login.md @@ -0,0 +1,47 @@ +--- +id: cnquery_login +title: cnquery login +--- + +Register with Mondoo Platform + +### Synopsis + +Log in to Mondoo Platform using a registration token. To pass in the token, use +the '--token' flag. + +You can generate a new registration token on the Mondoo Dashboard. Go to +https://console.mondoo.com -> Space -> Settings -> Registration Token. Copy the token and pass it in +using the '--token' argument. + +You remain logged in until you explicitly log out using the 'logout' subcommand. + +``` +cnquery login [flags] +``` + +### Options + +``` + --annotation stringToString Set the client annotations. (default []) + --api-endpoint string Set the Mondoo API endpoint. + -h, --help help for login + --name string Set asset name. + --splay int Randomize the timer by up to this many minutes. + --timer int Set the scan interval in minutes. + -t, --token string Set a client registration token. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cli/cnquery_logout.md b/docs/cnquery/cli/cnquery_logout.md new file mode 100644 index 000000000..52e35aeeb --- /dev/null +++ b/docs/cnquery/cli/cnquery_logout.md @@ -0,0 +1,36 @@ +--- +id: cnquery_logout +title: cnquery logout +--- + +Log out from Mondoo Platform + +### Synopsis + +This process also revokes the Mondoo Platform service account to +ensure the credentials cannot be used in the future. + +``` +cnquery logout [flags] +``` + +### Options + +``` + --force Force re-authentication + -h, --help help for logout +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cli/cnquery_providers.md b/docs/cnquery/cli/cnquery_providers.md new file mode 100644 index 000000000..117634f95 --- /dev/null +++ b/docs/cnquery/cli/cnquery_providers.md @@ -0,0 +1,36 @@ +--- +id: cnquery_providers +title: cnquery providers +--- + +Providers add connectivity to all assets + +### Synopsis + +Manage your providers. List and install new ones or update existing ones. + +``` +cnquery providers [flags] +``` + +### Options + +``` + -h, --help help for providers +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI +- [cnquery providers install](cnquery_providers_install.md) - Install or update a provider. +- [cnquery providers list](cnquery_providers_list.md) - List all providers on the system. diff --git a/docs/cnquery/cli/cnquery_providers_install.md b/docs/cnquery/cli/cnquery_providers_install.md new file mode 100644 index 000000000..18fbe15ac --- /dev/null +++ b/docs/cnquery/cli/cnquery_providers_install.md @@ -0,0 +1,32 @@ +--- +id: cnquery_providers_install +title: cnquery providers install +--- + +Install or update a provider. + +``` +cnquery providers install [flags] +``` + +### Options + +``` + -f, --file string install a provider via a file + -h, --help help for install + --url string install a provider via URL +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery providers](cnquery_providers.md) - Providers add connectivity to all assets diff --git a/docs/cnquery/cli/cnquery_providers_list.md b/docs/cnquery/cli/cnquery_providers_list.md new file mode 100644 index 000000000..9de29090c --- /dev/null +++ b/docs/cnquery/cli/cnquery_providers_list.md @@ -0,0 +1,30 @@ +--- +id: cnquery_providers_list +title: cnquery providers list +--- + +List all providers on the system. + +``` +cnquery providers list [flags] +``` + +### Options + +``` + -h, --help help for list +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery providers](cnquery_providers.md) - Providers add connectivity to all assets diff --git a/docs/cnquery/cli/cnquery_run.md b/docs/cnquery/cli/cnquery_run.md new file mode 100644 index 000000000..6aa624442 --- /dev/null +++ b/docs/cnquery/cli/cnquery_run.md @@ -0,0 +1,40 @@ +--- +id: cnquery_run +title: cnquery run +--- + +Run an MQL query + +### Synopsis + +Run an MQL query on the CLI and displays its results. + +``` +cnquery run [flags] +``` + +### Options + +``` + --ast Parse the query and return the abstract syntax tree (AST). + -c, --command string MQL query to executed in the shell. + -h, --help help for run + --info Parse the query and provide information about it. + -j, --json Run the query and return the object in a JSON structure. + --parse Parse the query and return the logical structure. + --platform-id string Select a specific target asset by providing its platform ID. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cli/cnquery_sbom.md b/docs/cnquery/cli/cnquery_sbom.md new file mode 100644 index 000000000..6bafaa589 --- /dev/null +++ b/docs/cnquery/cli/cnquery_sbom.md @@ -0,0 +1,51 @@ +--- +id: cnquery_sbom +title: cnquery sbom +--- + +Experimental: Generate a software bill of materials (SBOM) for a given asset + +### Synopsis + +Generate a software bill of materials (SBOM) for a given asset. The SBOM +is a representation of the asset's software components and their dependencies. + +The following formats are supported: + +- list (default) +- cnquery-json +- cyclonedx-json +- cyclonedx-xml +- spdx-json +- spdx-tag-value + +Note this command is experimental and may change in the future. + +``` +cnquery sbom [flags] +``` + +### Options + +``` + --annotation stringToString Add an annotation to the asset. (default []) + --asset-name string User-override for the asset name. + -h, --help help for sbom + -o, --output string Set output format: json, cyclonedx-json, cyclonedx-xml, spdx-json, spdx-tag-value, table (default "list") + --output-target string Set output target to which the sbom report will be written. + --with-evidence Display evidence for each component +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cli/cnquery_scan.md b/docs/cnquery/cli/cnquery_scan.md new file mode 100644 index 000000000..30ede879e --- /dev/null +++ b/docs/cnquery/cli/cnquery_scan.md @@ -0,0 +1,54 @@ +--- +id: cnquery_scan +title: cnquery scan +--- + +Scan assets with one or more query packs + +### Synopsis + +This command scans an asset using a query pack. For example, you can scan +the local system with its pre-configured query pack: + + $ cnquery scan local + +To manually configure a query pack, use this: + + $ cnquery scan local -f bundle.mql.yaml --incognito + +``` +cnquery scan [flags] +``` + +### Options + +``` + --annotation stringToString Add an annotation to the asset. (default []) + --asset-name string User-override for the asset name + --detect-cicd Try to detect CI/CD environments. If detected, set the asset category to 'cicd'. (default true) + -h, --help help for scan + --incognito Run in incognito mode. Do not report scan results to Mondoo Platform. + --inventory-ansible Set the inventory format to Ansible. + --inventory-domainlist Set the inventory format to domain list. + --inventory-file string Set the path to the inventory file. + -j, --json Run the query and return the object in a JSON structure. + -o, --output string Set output format: compact, csv, full, json, summary, yaml (default "compact") + --platform-id string Select a specific target asset by providing its platform ID. + --props stringToString Custom values for properties (default []) + --querypack querypack-bundle Set the query packs to execute. This requires querypack-bundle. You can specify multiple UIDs. + -f, --querypack-bundle strings Path to local query pack file +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cli/cnquery_shell.md b/docs/cnquery/cli/cnquery_shell.md new file mode 100644 index 000000000..3ece877b8 --- /dev/null +++ b/docs/cnquery/cli/cnquery_shell.md @@ -0,0 +1,36 @@ +--- +id: cnquery_shell +title: cnquery shell +--- + +Interactive query shell for MQL + +### Synopsis + +Allows the interactive exploration of MQL queries + +``` +cnquery shell [flags] +``` + +### Options + +``` + -c, --command string MQL query to executed in the shell. + -h, --help help for shell + --platform-id string Select a specific target asset by providing its platform ID. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cli/cnquery_status.md b/docs/cnquery/cli/cnquery_status.md new file mode 100644 index 000000000..9c1433e83 --- /dev/null +++ b/docs/cnquery/cli/cnquery_status.md @@ -0,0 +1,35 @@ +--- +id: cnquery_status +title: cnquery status +--- + +Verify access to Mondoo Platform + +### Synopsis + +Status sends a ping to Mondoo Platform to verify the credentials. + +``` +cnquery status [flags] +``` + +### Options + +``` + -h, --help help for status + -o, --output string Set output format. Accepts json or yaml. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cli/cnquery_vault.md b/docs/cnquery/cli/cnquery_vault.md new file mode 100644 index 000000000..a047e2121 --- /dev/null +++ b/docs/cnquery/cli/cnquery_vault.md @@ -0,0 +1,28 @@ +--- +id: cnquery_vault +title: cnquery vault +--- + +Manage vault environments + +### Options + +``` + -h, --help help for vault +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI +- [cnquery vault add-secret](cnquery_vault_add-secret.md) - Store a secret in a vault +- [cnquery vault configure](cnquery_vault_configure.md) - Configure a vault environment diff --git a/docs/cnquery/cli/cnquery_vault_add-secret.md b/docs/cnquery/cli/cnquery_vault_add-secret.md new file mode 100644 index 000000000..b280d8764 --- /dev/null +++ b/docs/cnquery/cli/cnquery_vault_add-secret.md @@ -0,0 +1,31 @@ +--- +id: cnquery_vault_add-secret +title: cnquery vault add-secret +--- + +Store a secret in a vault + +``` +cnquery vault add-secret SECRETID SECRETVALUE [flags] +``` + +### Options + +``` + -h, --help help for add-secret + --inventory-file string Set the path to the inventory file. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery vault](cnquery_vault.md) - Manage vault environments diff --git a/docs/cnquery/cli/cnquery_vault_configure.md b/docs/cnquery/cli/cnquery_vault_configure.md new file mode 100644 index 000000000..594469e06 --- /dev/null +++ b/docs/cnquery/cli/cnquery_vault_configure.md @@ -0,0 +1,37 @@ +--- +id: cnquery_vault_configure +title: cnquery vault configure +--- + +Configure a vault environment + +### Synopsis + +cnquery vault configure mondoo-client-vault --type linux-kernel-keyring + +``` +cnquery vault configure VAULTNAME [flags] +``` + +### Options + +``` + -h, --help help for configure + --inventory-file string Set the path to the inventory file. + --option stringToString addition vault connection options, multiple options via --option key=value (default []) + --type string possible values: encrypted-file | aws-parameter-store | memory | linux-kernel-keyring | keyring | hashicorp-vault | gcp-secret-manager | aws-secrets-manager | gcp-berglas | none +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery vault](cnquery_vault.md) - Manage vault environments diff --git a/docs/cnquery/cli/cnquery_version.md b/docs/cnquery/cli/cnquery_version.md new file mode 100644 index 000000000..9797847ef --- /dev/null +++ b/docs/cnquery/cli/cnquery_version.md @@ -0,0 +1,30 @@ +--- +id: cnquery_version +title: cnquery version +--- + +Display the cnquery version + +``` +cnquery version [flags] +``` + +### Options + +``` + -h, --help help for version +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnquery](cnquery.md) - cnquery CLI diff --git a/docs/cnquery/cnquery-about.mdx b/docs/cnquery/cnquery-about.mdx new file mode 100644 index 000000000..1034f5c85 --- /dev/null +++ b/docs/cnquery/cnquery-about.mdx @@ -0,0 +1,37 @@ +--- +title: What Is cnquery? +id: cnquery-about +sidebar_label: What Is cnquery? +displayed_sidebar: cnquery +sidebar_position: 1 +description: An introduction to cnquery, an open source, cloud-native tool that answers every question about your infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +-> To install and get up and running quickly, read [Get Started with cnquery](/cnquery/). + +cnquery is Mondoo's open source, cloud-native tool that answers every question about your infrastructure. It integrates with [over 600 resources](/mql/resources) to provide quick insight into your operations and development platforms. + +Use cnquery to learn about your systems and reveal information that would otherwise be difficult or impossible to uncover. For example: + +- Aggregate all packages installed across containers, regardless of the OS. +- Find cloud instances exposed to the internet. +- Reveal old certificates on Kubernetes clusters. + +Now consider what's possible when you write automation around cnquery. It's an incredibly broad and versatile tool for solving DevOps challenges. + +Our query language is MQL, which combines a graph database approach and powerful filters. Simply describe what you want, and get only the results you need—fast! To explore MQL's capabilities, browse the [MQL docs](/mql/resources). + +## Explore your infrastructure in Mondoo Platform + +To more easily explore your infrastructure, sign up for a [free Mondoo Platform](https://console.mondoo.com) account. Mondoo's web-based console allows you to navigate, search, and inspect all of your assets. + +To learn about Mondoo Platform, read the [Mondoo Platform docs](../intro.md) or visit [mondoo.com](https://mondoo.com). + +To learn how to sign up for a free Mondoo account and register cnquery, read [Log into Mondoo Platform for More Capabilities](/cnquery/cnquery-platform/). + +## Learn more + +- To learn what technologies cnquery integrates with, read [Supported Scan Targets](/cnquery/cnquery-supported). + +--- diff --git a/docs/cnquery/cnquery-aws/README.mdx b/docs/cnquery/cnquery-aws/README.mdx new file mode 100644 index 000000000..3456d4945 --- /dev/null +++ b/docs/cnquery/cnquery-aws/README.mdx @@ -0,0 +1,44 @@ +--- +title: Query AWS +id: cnquery-aws-intro +sidebar_label: Get Started +displayed_sidebar: cnquery +sidebar_position: 1 +description: Explore and analyze your AWS infrastructure with cnquery +image: /img/featured_img/mondoo-aws.jpg +--- + +With cnquery, you can explore and interrogate your entire AWS infrastructure. It's like having a powerful search engine for your AWS environment. For example, you can analyze IAM practices, identify containers running across all EKS clusters, or find S3 buckets that don't use encryption... all with a single tool. + +cnquery provides the answers you need about every AWS configuration. For a list of AWS resources you can query, read [Mondoo Amazon Web Services (AWS) Resource Pack Reference](/mql/resources/aws-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnquery with your AWS environment + +### Requirements + +To analyze and explore your AWS environment with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/). +- [An AWS account](https://aws.amazon.com/free/). +- Your AWS credentials. To learn about creating a new access key pair, read [Creating new access keys for an IAM user](https://docs.aws.amazon.com/keyspaces/latest/devguide/access.credentials.html#create.keypair) in the AWS documentation. +- The `AWS_REGION` environment variable configured. To learn how to set your region, read [How to set environment variables](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set) in the AWS documentation. + +### Verify with a quick AWS query + +To quickly confirm that cnquery has access to your AWS environment, run this query from your terminal: + +```bash +cnquery run aws -c aws.account +``` + +cnquery returns the AWS account ID: + +```shell +> aws.account: aws.account id="aws.account/123456789000" +``` + +## Next step + +You've successfully used cnquery to answer your first question about your AWS account. Now you're ready to [explore your AWS environment.](/cnquery/cnquery-aws/cnquery-aws-account) + +--- diff --git a/docs/cnquery/cnquery-aws/cnquery-aws-account.mdx b/docs/cnquery/cnquery-aws/cnquery-aws-account.mdx new file mode 100644 index 000000000..f834c5857 --- /dev/null +++ b/docs/cnquery/cnquery-aws/cnquery-aws-account.mdx @@ -0,0 +1,248 @@ +--- +title: Query an AWS Account +id: cnquery-aws-account +sidebar_label: Query an AWS Account +displayed_sidebar: cnquery +sidebar_position: 20 +description: Explore and analyze the configuration of AWS accounts +image: /img/featured_img/mondoo-aws.jpg +--- + +Once you've ensured that [cnquery can access your AWS environment](/cnquery/cnquery-aws/), you can begin exploring and analyzing your infrastructure. The method you choose depends on your goals: + +- To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. +- For widescale analysis of your AWS infrastructure, scan using query packs. These collections of queries work together to present a whole picture. + +## Explore with the cnquery shell + +To launch a shell into your AWS environment, enter: + +```bash +cnquery shell aws +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what AWS resources you can query. This command lists all the AWS resources: + +```coffee +help aws +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the AWS IAM resources you can query: + +```coffee +help aws.iam +``` + +From the resulting list, you can drill down even further. You can also learn about available AWS resources in the [Mondoo Amazon Web Services (AWS) Resource Pack Reference](/mql/resources/aws-pack/). + +### Answer questions in the cnquery shell + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +#### Query configuration recorders + +This query identifies which (potentially expensive) configuration recorders are turned on: + +```coffee +aws.config { recorders { * } rules { * } } +``` + +cnquery returns complete and detailed lists of rules and recorders: + +```coffee +aws.config: { + rules: [ + 0: { + state: "ACTIVE" + source: { + CustomPolicyDetails: null + Owner: "AWS" + SourceDetails: null + SourceIdentifier: "EIP_ATTACHED" + } + arn: "arn:aws:config:us-east-1:921877552404:config-rule/config-rule-eam93q" + } + ] + recorders: [ + 0: { + recording: false + includeGlobalResourceTypes: false + name: "default" + allSupported: true + roleArn: "arn:aws:iam::921877552404:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig" + lastStatus: "" + region: "us-east-1" + } + 1: { + recording: false + includeGlobalResourceTypes: false + name: "default" + allSupported: true + roleArn: "arn:aws:iam::921877552404:role/Config-Recorder" + lastStatus: "" + region: "us-east-2" + } + ] +} +``` + +#### Query credentials + +When we explored the help for `aws.iam`, we learned that cnquery can access your account's IAM credential report. To gather basic information from the report, enter: + +```coffee +aws.iam.credentialReport +``` + +cnquery lists the ARNs of all users, like this: + +```coffee +aws.iam.credentialReport: [ + 0: aws.iam.usercredentialreportentry arn="arn:aws:iam::921877552404:root" + 1: aws.iam.usercredentialreportentry arn="arn:aws:iam::921877552404:user/shiro" + 2: aws.iam.usercredentialreportentry arn="arn:aws:iam::921877552404:user/hanna" + 3: aws.iam.usercredentialreportentry arn="arn:aws:iam::921877552404:user/abel" + 4: aws.iam.usercredentialreportentry arn="arn:aws:iam::921877552404:user/suki" + 5: aws.iam.usercredentialreportentry arn="arn:aws:iam::921877552404:user/tembe" + + ... + +] +``` + +For a more detailed report, you can specify that you want all fields: + +```coffee +aws.iam.credentialReport { * } +``` + +For every user, cnquery provides information about their IAM activity and settings: + +```coffee + { + accessKey1LastUsedRegion: "eu-north-1" + passwordNextRotation: Never + user: aws.iam.user arn="arn:aws:iam::921877552404:user/suki" + properties: { + access_key_1_active: "true" + access_key_1_last_rotated: "2021-06-15T07:11:58+00:00" + access_key_1_last_used_date: "2022-12-02T04:33:00+00:00" + access_key_1_last_used_region: "eu-north-1" + access_key_1_last_used_service: "ec2" + access_key_2_active: "false" + access_key_2_last_rotated: "N/A" + access_key_2_last_used_date: "N/A" + access_key_2_last_used_region: "N/A" + access_key_2_last_used_service: "N/A" + arn: "arn:aws:iam::921877552404:user/suki" + cert_1_active: "false" + cert_1_last_rotated: "N/A" + cert_2_active: "false" + cert_2_last_rotated: "N/A" + mfa_active: "false" + password_enabled: "false" + password_last_changed: "N/A" + password_last_used: "N/A" + password_next_rotation: "N/A" + user: "suki-m1" + user_creation_time: "2021-06-15T07:11:58+00:00" + } + cert1Active: false + accessKey2LastUsedRegion: "N/A" + passwordLastChanged: Never + accessKey1LastUsedService: "ec2" + passwordLastUsed: Never + accessKey1Active: true + cert2Active: false + accessKey2Active: false + accessKey2LastUsedService: "N/A" + accessKey1LastRotated: 2021-06-15 07:11:58 +0000 +0000 + cert2LastRotated: Never + cert1LastRotated: Never + accessKey1LastUsedDate: 2022-12-02 04:33:00 +0000 +0000 + accessKey2LastRotated: Never + arn: "arn:aws:iam::921877552404:user/suki" + mfaActive: false + userCreationTime: 2021-06-15 07:11:58 +0000 +0000 + accessKey2LastUsedDate: Never + passwordEnabled: false + } +``` + +#### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this query asks for each user's ARN, when they last changed their password, and whether they have MFA enabled: + +```coffee +aws.iam.credentialReport { arn passwordLastChanged mfaActive } +``` + +cnquery returns results like this: + +```coffee +aws.iam.credentialReport: [ + 0: { + passwordLastChanged: 2022-11-30 12:15:58 +0000 +0000 + arn: "arn:aws:iam::921877552404:user/suki" + mfaActive: true + } + 1: { + passwordLastChanged: 2022-08-25 20:40:44 +0000 +0000 + arn: "arn:aws:iam::921877552404:user/tembe" + mfaActive: true + } + 2: { + passwordLastChanged: 2022-12-01 20:58:11 +0000 +0000 + arn: "arn:aws:iam::921877552404:user/amos" + mfaActive: true + } + 3: { + passwordLastChanged: Never + arn: "arn:aws:iam::921877552404:user/hanna" + mfaActive: false + } +] +``` + +#### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results based on ARN: + +```coffee +aws.iam.credentialReport.where(arn == /hanna/) { * } +``` + +### Exit the cnquery shell + +To exit the cnquery shell, either press `Ctrl + D` or type `exit`. + +## Analyze your environment with AWS query packs + +Mondoo makes these [core AWS query packs](https://github.com/mondoohq/cnquery-packs) available in GitHub: + +- [Mondoo AWS Asset Inventory](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-aws-inventory.mql.yaml) provides information about all your AWS assets and their configuration. +- [Mondoo AWS Incident Response](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-aws-incident-response.mql.yaml) helps you investigate and minimize damage when a security incident occurs. + +To run one of these purpose-built collections of AWS-specific queries: + +1. In Mondoo's [cnquery-packs GitHub repo](https://github.com/mondoohq/cnquery-packs), go to the `core` directory and find the AWS query pack you want to run. + +2. Download the YAML file to a local directory and, in your terminal, move to that directory. + +3. Use the `cnquery scan` command, specifying the file and the query pack: + +```bash +cnquery scan aws -f mondoo-aws-incident-response.mql.yaml --querypack mondoo-incident-response-aws +``` + +You can also create your own query packs to meet your specific needs. To learn more about query packs, read [Run a Query Pack](/cnquery/cnquery-run-pack/). + +## Next step + +Now that you've explored your AWS environment using the cnquery shell, you're ready to dive deeper and [query your EC2 instances](/cnquery/cnquery-aws/cnquery-aws-ec2/). + +--- diff --git a/docs/cnquery/cnquery-aws/cnquery-aws-ec2.mdx b/docs/cnquery/cnquery-aws/cnquery-aws-ec2.mdx new file mode 100644 index 000000000..d911c24f0 --- /dev/null +++ b/docs/cnquery/cnquery-aws/cnquery-aws-ec2.mdx @@ -0,0 +1,134 @@ +--- +title: Query EC2 Instances +id: cnquery-aws-ec2 +sidebar_label: Query AWS EC2 Instances +displayed_sidebar: cnquery +sidebar_position: 30 +description: Explore and analyze the configuration of AWS EC2 instances +image: /img/featured_img/mondoo-aws.jpg +--- + +Now that you have an introduction to [querying your AWS account](/cnquery/cnquery-aws/cnquery-aws-account/) with cnquery, let's dive deeper and explore EC2 instances. + +We'll continue working in the cnquery shell, which makes running individual queries easy. If it's not already open, enter `cnquery shell aws` in your terminal. To learn about accessing your AWS account with cnquery, read [Query AWS Infrastructure](/cnquery/cnquery-aws/). + +## EC2 resources + +cnquery provides answers to any question about your EC2 instances. To discover all the resources and fields you can query, read [aws.ec2](/mql/resources/aws-pack/aws.ec2/). You can also use the `help` command in the shell: + +```coffee +help aws.ec2 +``` + +In this tutorial we'll explore just a few of the possibilities. + +## Run simple queries on EC2 instances + +This query gathers all your EC2 instances: + +```coffee +aws.ec2.instances +``` + +It returns each instance's ARN and current state: + +```coffee +aws.ec2.instances: [ + 0: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-06e2eaa19a4fa883e" state="stopped" + 1: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-0facc86d89af823af" state="stopped" + 2: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-0b24443c8d18fdbab" state="running" + 3: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-020eed3b1e4965d8d" state="running" + 4: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-08f2ba2424027454a" state="running" +] +``` + +## Specify fields to include in results + +You can request specific data by including the field names. For example, this query collects the ARN and any assigned tags for each instance: + +```coffee +aws.ec2.instances { arn tags } +``` + +It returns a list with only the information you asked for: + +```coffee +aws.ec2.instances: [ + 0: { + tags: { + Name: "k8s-operator01" + owner: "suki@lunalectric.com" + } + arn: "arn:aws:ec2:us-east-1:921877552404:instance/i-06e2eaa19a4fa883e" + } + 1: { + tags: { + Name: "vm-with-ebs-iam-role" + } + arn: "arn:aws:ec2:us-east-1:921877552404:instance/i-0facc86d89af823af" + } + 2: { + tags: { + Name: "amazonlinux2-for-ebs-volume-scan" + owner: "kembe@lunalectric.com" + } + arn: "arn:aws:ec2:us-east-1:921877552404:instance/i-0b24443c8d18fdbab" + } + 3: { + tags: {} + arn: "arn:aws:ec2:us-west-1:921877552404:instance/i-020eed3b1e4965d8d" + } + 4: { + tags: { + Name: "amos-linux" + } + arn: "arn:aws:ec2:us-west-1:921877552404:instance/i-08f2ba2424027454a" + } +] +``` + +## Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this query requests only EC2 instances that do not have an `owner` tag: + +```coffee +aws.ec2.instances.where(tags['owner'] == null) +``` + +It lists each instance's ARN and status: + +```coffee +aws.ec2.instances.where: [ + 0: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-06e2eaa19a4fa883e" state="stopped" + 1: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-0facc86d89af823af" state="stopped" + 2: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-020eed3b1e4965d8d" state="running" + 3: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-08f2ba2424027454a" state="running" +] +``` + +This finds large (more expensive) EC2 instances: + +```coffee +aws.ec2.instances.where(instanceType == /^.*.large$/) { arn instanceType } +``` + +It returns a list of all instances that have an `instanceType` with `large` in the name. + +This similar query finds T-type instances (such as T2, or T4g): + +```coffee +aws.ec2.instances.where(instanceType == /^[t].*/) { instanceType } +``` + +## Learn more about querying EC2 instances + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the AWS resources and fields you can query, read [aws.ec2](/mql/resources/aws-pack/aws.ec2/). + +## Next step + +To discover more of cnquery's AWS capabilities, [query your EKS clusters](/cnquery/cnquery-aws/cnquery-aws-eks/). + +--- diff --git a/docs/cnquery/cnquery-aws/cnquery-aws-eks.mdx b/docs/cnquery/cnquery-aws/cnquery-aws-eks.mdx new file mode 100644 index 000000000..c9631b269 --- /dev/null +++ b/docs/cnquery/cnquery-aws/cnquery-aws-eks.mdx @@ -0,0 +1,173 @@ +--- +title: Query AWS EKS Clusters +id: cnquery-aws-eks +sidebar_label: Query AWS EKS Clusters +displayed_sidebar: cnquery +sidebar_position: 40 +description: Explore and analyze the configuration of AWS EKS clusters +image: /img/featured_img/mondoo-aws.jpg +--- + +Now that you have an introduction to [querying your AWS account](/cnquery/cnquery-aws/cnquery-aws-account/) with cnquery and have explored [EC2 queries](/cnquery/cnquery-aws/cnquery-aws-ec2), let's dive deeper and explore EKS clusters. + +We'll continue working in the cnquery shell, which makes running individual queries easy. If it's not already open, enter `cnquery shell aws` in your terminal. To learn about accessing your AWS account with cnquery, read [Query AWS Infrastructure](/cnquery/cnquery-aws/). + +## EKS resources + +cnquery provides answers to any question about your EKS clusters. To discover all the resources and fields you can query, read [aws.eks](/mql/resources/aws-pack/aws.eks/). You can also use the `help` command in the shell: + +```coffee +help aws.eks +``` + +In this tutorial we'll explore just a few of the possibilities. + +## Run simple queries on EKS clusters + +This query gathers all your EKS clusters: + +```coffee +aws.eks.clusters +``` + +It returns each cluster's ARN and current state: + +```coffee +aws.eks.clusters: [ + 0: aws.eks.cluster arn="arn:aws:eks:us-east-1:177043759486:cluster/eks-cluster" version="1.22" status="FAILED" + 1: aws.eks.cluster arn="arn:aws:eks:us-east-2:177043759486:cluster/online-shop-eks-cluster-byh8" version="1.22" status="ACTIVE" +] +``` + +For all details on a single cluster, specify the cluster's number in the output sequence and include `{ * }`: + +```coffee +aws.eks.clusters[1] { * } +``` + +cnquery returns the cluster's version, logging, encryption, and more: + +```coffee +aws.eks.clusters[1]: { + logging: { + ClusterLogging: [ + 0: { + Enabled: true + Types: [ + 0: "api" + 1: "audit" + 2: "authenticator" + ] + } + 1: { + Enabled: false + Types: [ + 0: "controllerManager" + 1: "scheduler" + ] + } + ] + } + encryptionConfig: [ + 0: { + Provider: { + KeyArn: "arn:aws:kms:us-east-2:177043759486:key/35f97e4d-3076-494e-bd27-9e9936c9f3ba" + } + Resources: [ + 0: "secrets" + ] + } + ] + tags: { + GitHubOrg: "lunalectric" + GitHubRepo: "online-shop" + Name: "scottford-dev-online-shop-eks-byh8" + Terraform: "true" + } + resourcesVpcConfig: { + ClusterSecurityGroupId: "sg-0ad9d888e7bfba23b" + EndpointPrivateAccess: false + EndpointPublicAccess: true + PublicAccessCidrs: [ + 0: "0.0.0.0/0" + ] + SecurityGroupIds: [ + 0: "sg-0563bb225870357ef" + ] + SubnetIds: [ + 0: "subnet-032c68d4a5e512171" + 1: "subnet-0fdd8fcbf1ca3f071" + 2: "subnet-0d87da610b71436de" + ] + VpcId: "vpc-05905b857f7424833" + } + version: "1.22" + name: "online-shop-eks-cluster-byh8" + networkConfig: { + IpFamily: "ipv4" + ServiceIpv4Cidr: "172.20.0.0/16" + ServiceIpv6Cidr: null + } + createdAt: 2022-10-23 23:12:54.304 +0000 UTC + arn: "arn:aws:eks:us-east-2:177043759486:cluster/online-shop-eks-cluster-byh8" + region: "us-east-2" + endpoint: "https://8D2087DAD267CF9F24358D00F7553B84.gr7.us-east-2.eks.amazonaws.com" + platformVersion: "eks.6" + status: "ACTIVE" +} +``` + +## Specify fields to include in results + +You can request specific data by including the field names. For example, this query collects the ARN and any assigned tags for each cluster: + +```coffee +aws.eks.clusters { arn createdAt } +``` + +It returns a list with only the information you asked for: + +```coffee +aws.eks.clusters: [ + 0: { + arn: "arn:aws:eks:us-east-1:177043759486:cluster/eks-cluster" + createdAt: 2022-09-08 09:41:11.26 +0000 UTC + } + 1: { + arn: "arn:aws:eks:us-east-2:177043759486:cluster/online-shop-eks-cluster-byh8" + createdAt: 2022-10-23 23:12:54.304 +0000 UTC + } +] +``` + +## Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this query requests only EKS clusters created more than 60 days ago: + +```coffee +aws.eks.clusters.where(createdAt < time.today - 60*time.day) { arn createdAt } +``` + +It lists each cluster's ARN and creation date: + +```coffee +aws.eks.clusters.where: [ + 0: { + createdAt: 2022-09-08 09:41:11.26 +0000 UTC + arn: "arn:aws:eks:us-east-1:177043759486:cluster/eks-cluster" + } + 1: { + createdAt: 2021-12-08 09:03:22.44 +0000 UTC + arn: "arn:aws:eks:us-west-1:177043759533:cluster/lunashop-eks-cluster" + } +] +``` + +## Learn more about querying EKS clusters + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the AWS resources and fields you can query, read the [Mondoo Amazon Web Services (AWS) Resource Pack Reference](/mql/resources/aws-pack/). + +--- diff --git a/docs/cnquery/cnquery-azure/README.mdx b/docs/cnquery/cnquery-azure/README.mdx new file mode 100644 index 000000000..c3a864de0 --- /dev/null +++ b/docs/cnquery/cnquery-azure/README.mdx @@ -0,0 +1,112 @@ +--- +title: Query Azure +id: cnquery-azure-intro +sidebar_label: Azure +displayed_sidebar: cnquery +sidebar_position: 1 +description: Explore and analyze your Azure infrastructure with cnquery +image: /img/featured_img/mondoo-azure.jpg +--- + +With cnquery, you can explore and interrogate your entire Azure tenant. It's like having a powerful search engine for your Azure environment. For example, you can analyze databases or search for Azure Network Interface configuration details... all with a single tool. + +cnquery provides the answers you need about every Azure configuration. For a list of Azure resources you can query, read [Mondoo Azure Resource Pack Reference](/mql/resources/azure-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnquery with your Azure environment + +### Requirements + +To explore your Azure environment with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/) +- An [Azure subscription](https://cloud.google.com/free) +- The [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) installed + +### Log into Azure + +Using the Azure CLI, log into your subscription: + +```bash +az login +``` + +### Verify with an Azure query + +To quickly confirm that cnquery has access to your Azure environment, run this query from your terminal: + +```bash +cnquery run azure -c 'azure.resources' +``` + +## Query an Azure project + +To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. + +To launch a shell into your Azure environment, enter: + +```bash +cnquery shell azure +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Azure subscription resources you can query. This command lists all the Azure subscription resources: + +```coffee +help azure.subscription +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the Azure PostgreSQL resources you can query: + +```coffee +help azure.subscription.postgreSql +``` + +From the resulting list, you can drill down even further. You can also learn about available Azure resources in the [Mondoo Azure Resource Pack Reference](/mql/resources/azure-pack/). + +### Query storage accounts + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +This query lists all the storage accounts in the project: + +```coffee +azure.subscription.storage.accounts +``` + +#### Request full details in results + +For a more detailed report, you can specify that you want all fields: + +```coffee +azure.subscription.storage.accounts { * } +``` + +For every account, cnquery provides information about their status and settings. + +#### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this query asks for each user's ARN, when they last changed their password, and whether they have MFA enabled: + +```coffee +azure.subscription.storage.accounts { id type properties } +``` + +#### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results based on status: + +```coffee +azure.subscription.storage.accounts.where(kind == "BlobStorage") { id name type } +``` + +cnquery returns all BlobStorage accounts. It includes the ID, name and type for each one. + +## Learn more about querying Azure + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the Azure resources and fields you can query, read the [Mondoo Azure Resource Pack Reference](/mql/resources/azure-pack/). + +--- diff --git a/docs/cnquery/cnquery-gcp/README.mdx b/docs/cnquery/cnquery-gcp/README.mdx new file mode 100644 index 000000000..baa21c980 --- /dev/null +++ b/docs/cnquery/cnquery-gcp/README.mdx @@ -0,0 +1,287 @@ +--- +title: Query Google Cloud +id: cnquery-gcp-intro +sidebar_label: Google Cloud Platform (GCP) +displayed_sidebar: cnquery +sidebar_position: 1 +description: Explore and analyze your Google Cloud infrastructure with cnquery +image: /img/featured_img/mondoo-gcp.jpg +--- + +With cnquery, you can explore and interrogate your entire Google Cloud Platform (GCP) project, including its compute instances. It's like having a powerful search engine for your GCP environment. For example, you can analyze firewalls, search for Compute Engine instance configuration details, or find all Cloud Storage buckets that anonymous or public users can access... all with a single tool. + +cnquery provides the answers you need about every GCP configuration. For a list of GCP resources you can query, read [Mondoo Google Cloud Platform (GCP) Resource Pack Reference](/mql/resources/gcp-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnquery with your GCP environment + +### Requirements + +To explore your GCP environment with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/) +- A [Google Platform account](https://cloud.google.com/free) +- [Google Cloud SDK](https://cloud.google.com/sdk/install) installed + +### Provide access credentials + +In your terminal, log into GCP with this command: + +```bash +gcloud auth login --update-adc +``` + +### Configure the GCP project you want explore + +To query a GCP project, you must set up the project: + +```bash +gcloud config set project PROJECTID +``` + +For `PROJECTID`, substitute the ID of the project you want to query. + +GCP confirms the setup: + +```bash +Updated property [core/project]. +``` + +To verify your configuration, enter: + +```bash +gcloud config list +``` + +GCP returns results similar to these: + +``` +[core] +account = suki@lunalectric.com +disable_usage_reporting = True +project = gcp-project-id + +Your active configuration is: [default] +``` + +### Verify with a quick GCP query + +To quickly confirm that cnquery has access to your GCP environment, run this query from your terminal: + +```bash +cnquery run gcp -c gcp.project +``` + +cnquery returns the name of the project: + +```shell +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 +gcp.project: gcp.project name="lune-edge" +``` + +You've successfully used cnquery to answer your first question about your GCP environment. Now you're ready to explore. + +## Query a Google Cloud project + +To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. + +To launch a shell into your GCP environment, enter: + +```bash +cnquery shell gcp +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what GCP resources you can query. This command lists all the GCP resources: + +```coffee +help gcp +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the GCP DNS resources you can query: + +```coffee +help gcp.dns +``` + +From the resulting list, you can drill down even further. You can also learn about available GCP resources in the [Mondoo Google Cloud Platform (GCP) Resource Pack Reference](/mql/resources/gcp-pack/). + +### Query Compute Engine instances + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +This query lists all the Compute Engine instances in the project: + +```coffee +gcp.project.computeService.instances +``` + +cnquery returns a list of instances: + +```coffee +gcp.project.computeService.instances: [ + 0: gcp.project.computeService.instance name="amos-test-instance1" + 1: gcp.project.computeService.instance name="ansible-centos" + 2: gcp.project.computeService.instance name="centos7-latest" + 3: gcp.project.computeService.instance name="debian10" + 4: gcp.project.computeService.instance name="luna-dev" + 5: gcp.project.computeService.instance name="luna-edge" + 6: gcp.project.computeService.instance name="luna-service" + +... + +] +``` + +#### Request full details in results + +For a more detailed report, you can specify that you want all fields: + +```coffee +gcp.project.computeService.instances { * } +``` + +For every instance, cnquery provides information about their status and settings: + +```coffee + 0: { + lastStopTimestamp: 2022-07-04 08:33:12.127 -0700 PDT + fingerprint: "Qls1P6_JjQE=" + minCpuPlatform: "" + metadata: {} + status: "TERMINATED" + scheduling: { + automaticRestart: true + onHostMaintenance: "MIGRATE" + provisioningModel: "STANDARD" + } + zone: gcp.project.computeService.zone name="us-central1-a" + tags: [] + id: "5894326198680570314" + labels: {} + machineType: gcp.project.computeService.machineType name="e2-medium" + lastSuspendedTimestamp: null + canIpForward: false + projectId: "luna-edge-262317" + physicalHostResourceStatus: "" + privateIpv6GoogleAccess: "" + enableVtpm: true + cpuPlatform: "Unknown CPU Platform" + serviceAccounts: [ + 0: gcp.project.computeService.serviceaccount email="458067389847-compute@developer.gserviceaccount.com" + ] + reservationAffinity: { + consumeReservationType: "ANY_RESERVATION" + } + totalEgressBandwidthTier: "" + lastStartTimestamp: 2022-06-21 02:30:50.334 -0700 PDT + resourcePolicies: [] + deletionProtection: false + guestAccelerators: [] + created: 2021-01-26 03:04:05.663 -0800 PST + sourceMachineImage: "" + enableDisplay: false + statusMessage: "" + disks: [ + 0: gcp.project.computeService.attachedDisk id = gcp.project.computeService.attachedDisk/mondoo-dev-262313/5894326198680570314/0 + ] + hostname: "" + enableIntegrityMonitoring: true + startRestricted: false + name: "ansible-centos" + enableSecureBoot: false + description: "" + networkInterfaces: [ + 0: { + accessConfigs: [ + 0: { + kind: "compute#accessConfig" + name: "External NAT" + networkTier: "PREMIUM" + type: "ONE_TO_ONE_NAT" + } + ] + fingerprint: "3Sj4hQQO1UU=" + kind: "compute#networkInterface" + name: "nic0" + network: "https://www.googleapis.com/compute/v1/projects/luna-edge-262317/global/networks/default" + networkIP: "10.128.15.215" + subnetwork: "https://www.googleapis.com/compute/v1/projects/luna-edge-262317/regions/us-central1/subnetworks/default" + } + ] + keyRevocationActionType: "" + } + +``` + +#### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this query asks for each user's ARN, when they last changed their password, and whether they have MFA enabled: + +```coffee +gcp.project.computeService.instances { name status scheduling } +``` + +cnquery returns results like this: + +```coffee +gcp.project.computeService.instances: [ + +... + + 12: { + status: "TERMINATED" + scheduling: { + automaticRestart: true + onHostMaintenance: "MIGRATE" + provisioningModel: "STANDARD" + } + name: "luna-test" + } + 13: { + status: "RUNNING" + scheduling: { + automaticRestart: true + onHostMaintenance: "MIGRATE" + provisioningModel: "STANDARD" + } + name: "luna-edge" + } + +... + +] +``` + +#### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results based on status: + +```coffee +gcp.project.computeService.instances.where(status == "RUNNING") { name lastStartTimestamp } +``` + +cnquery returns all running instances. It includes the name and last start for each one. + +```coffee +gcp.project.computeService.instances.where: [ + 0: { + name: "luna-edge" + lastStartTimestamp: 2022-11-17 02:58:31.254 -0800 PST + } + 1: { + name: "windows-gitlab" + lastStartTimestamp: 2021-08-05 11:39:20.217 -0700 PDT + } +] +``` + +## Learn more about querying Google Cloud + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the GCP resources and fields you can query, read the [Mondoo Google Cloud Platform (GCP) Resource Pack Reference](/mql/resources/gcp-pack/). + +--- diff --git a/docs/cnquery/cnquery-k8s/README.mdx b/docs/cnquery/cnquery-k8s/README.mdx new file mode 100644 index 000000000..87512fdc0 --- /dev/null +++ b/docs/cnquery/cnquery-k8s/README.mdx @@ -0,0 +1,44 @@ +--- +title: Query Kubernetes +id: cnquery-k8s-intro +sidebar_label: Get Started +displayed_sidebar: cnquery +sidebar_position: 1 +description: Explore and analyze your Kubernetes infrastructure with cnquery +image: /img/featured_img/mondoo-Kubernetes.jpg +--- + +Rely on cnquery to explore and analyze your entire Kubernetes stack. You can query any type of Kubernetes deployment, whether it's local or in the cloud. cnquery lets you gather data about all aspects of your container infrastructure and their workloads. + +cnquery provides the answers you need about every Kubernetes configuration. For a list of Kubernetes resources you can query, read [Mondoo Kubernetes (K8s) Resource Pack Reference](/mql/resources/k8s-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnquery with your Kubernetes environment + +### Requirements + +To analyze and explore your Kubernetes environment with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/). +- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) installed on your workstation. To ensure that kubectl is successfully installed and you can access your Kubernetes infrastructure, run `kubectl describe nodes`. + +### Verify with a quick Kubernetes query + +To quickly confirm that cnquery has access to your Kubernetes environment, run this query from your terminal: + +```bash +cnquery run k8s -c k8s.deployment +``` + +cnquery returns a list of found deployments: + +```coffee +k8s.deployment: k8s.deployment namespace="kube-system" name="coredns" created=2022-12-14 15:17:37 -0800 PST +k8s.deployment: k8s.deployment namespace="luna" name="luna-frontend" created=2022-12-14 15:28:23 -0800 PST +k8s.deployment: k8s.deployment namespace="luna" name="postgres" created=2022-12-14 15:28:48 -0800 PST +``` + +## Next step + +You've successfully used cnquery to answer your first question about your Kubernetes infrastructure. Now you're ready to [explore more Kubernetes information.](/cnquery/cnquery-k8s/cnquery-k8s-cluster) + +--- diff --git a/docs/cnquery/cnquery-k8s/_cnquery-k8s-node.mdx b/docs/cnquery/cnquery-k8s/_cnquery-k8s-node.mdx new file mode 100644 index 000000000..260b81bfd --- /dev/null +++ b/docs/cnquery/cnquery-k8s/_cnquery-k8s-node.mdx @@ -0,0 +1,173 @@ +--- +title: Query EC2 Instances +id: cnquery-aws-ec2 +sidebar_label: Query AWS EC2 Instances +displayed_sidebar: cnquery +sidebar_position: 30 +description: Explore and analyze the configuration of AWS EC2 instances +image: /img/featured_img/mondoo-aws.jpg +--- + +Now that you have an introduction to [querying your AWS account](/cnquery/cnquery-aws/cnquery-aws-account/) with cnquery, let's dive deeper and explore EC2 instances. + +We'll continue working in the cnquery shell, which makes running individual queries easy. If it's not already open, enter `cnquery shell aws` in your terminal. To learn about accessing your AWS account with cnquery, read [Query AWS Infrastructure](/cnquery/cnquery-aws/). + +## EC2 resources + +cnquery provides answers to any question about your EC2 instances. To discover all the resources and fields you can query, read [aws.ec2](/mql/resources/aws-pack/aws.ec2/). You can also use the `help` command in the shell: + +```coffee +help aws.ec2 +``` + +In this tutorial we'll explore just a few of the possibilities. + +## Run simple queries on EC2 instances + +This query gathers all your EC2 instances: + +```coffee +aws.ec2.instances +``` + +It returns each instance's ARN and current state: + +```coffee +aws.ec2.instances: [ + 0: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-06e2eaa19a4fa883e" state="stopped" + 1: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-0facc86d89af823af" state="stopped" + 2: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-0b24443c8d18fdbab" state="running" + 3: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-020eed3b1e4965d8d" state="running" + 4: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-08f2ba2424027454a" state="running" +] +``` + +## Specify fields to include in results + +You can request specific data by including the field names. For example, this query collects the ARN and any assigned tags for each instance: + +```coffee +aws.ec2.instances { arn tags } +``` + +It returns a list with only the information you asked for: + +```coffee +aws.ec2.instances: [ + 0: { + tags: { + Name: "k8s-operator01" + owner: "suki@lunalectric.com" + } + arn: "arn:aws:ec2:us-east-1:921877552404:instance/i-06e2eaa19a4fa883e" + } + 1: { + tags: { + Name: "vm-with-ebs-iam-role" + } + arn: "arn:aws:ec2:us-east-1:921877552404:instance/i-0facc86d89af823af" + } + 2: { + tags: { + Name: "amazonlinux2-for-ebs-volume-scan" + owner: "kembe@lunalectric.com" + } + arn: "arn:aws:ec2:us-east-1:921877552404:instance/i-0b24443c8d18fdbab" + } + 3: { + tags: {} + arn: "arn:aws:ec2:us-west-1:921877552404:instance/i-020eed3b1e4965d8d" + } + 4: { + tags: { + Name: "amos-linux" + } + arn: "arn:aws:ec2:us-west-1:921877552404:instance/i-08f2ba2424027454a" + } +] +``` + +## Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this query requests only EC2 instances that do not have an `owner` tag: + +```coffee +aws.ec2.instances.where(tags['owner'] == null) +``` + +It lists each instance's ARN and status: + +```coffee +aws.ec2.instances.where: [ + 0: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-06e2eaa19a4fa883e" state="stopped" + 1: aws.ec2.instance arn="arn:aws:ec2:us-east-1:921877552404:instance/i-0facc86d89af823af" state="stopped" + 2: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-020eed3b1e4965d8d" state="running" + 3: aws.ec2.instance arn="arn:aws:ec2:us-west-1:921877552404:instance/i-08f2ba2424027454a" state="running" +] +``` + +This finds large (more expensive) EC2 instances: + +```coffee +aws.ec2.instances.where(instanceType == /^.*.large$/) { arn instanceType } +``` + +It returns a list of all instances that have an `instanceType` with `large` in the name. + +This similar query finds T-type instances (such as T2, or T4g): + +```coffee +aws.ec2.instances.where(instanceType == /^[t].*/) { instanceType } +``` + +## Learn more about querying EC2 instances + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the AWS resources and fields you can query, read [aws.ec2](/mql/resources/aws-pack/aws.ec2/). + +## Next step + +To discover more of cnquery's AWS capabilities, [query your EKS clusters](/cnquery/cnquery-aws/cnquery-aws-eks/). + +JUST PASTING FOR Now + +#### Query deployments + +This query asks for a list of deployments in the cluster: + +```coffee +k8s.deployments { id name kind created } +``` + +cnquery returns the requested fields for each deployment: their IDs, names, and creation dates and times: + +```coffee +k8s.deployments: [ + 0: { + id: "deployment:kube-system:coredns" + created: 2022-12-14 15:17:37 -0800 PST + name: "coredns" + } + 1: { + id: "deployment:luna:luna-frontend" + created: 2022-12-14 15:28:23 -0800 PST + name: "luna-frontend" + } + 2: { + id: "deployment:luna:postgresql" + created: 2022-12-14 15:28:48 -0800 PST + name: "postgresql" + } +] +``` + +#### SOMETHING + +k8s.secrets.where( namespace == "default" ){ name created type manifest['data'] } +k8s.secrets{ name created type manifest['data'] } + +k8s.configmaps.where( namespace == "default" ){ name data } + +--- diff --git a/docs/cnquery/cnquery-k8s/cnquery-k8s-cluster.mdx b/docs/cnquery/cnquery-k8s/cnquery-k8s-cluster.mdx new file mode 100644 index 000000000..4a4e78dae --- /dev/null +++ b/docs/cnquery/cnquery-k8s/cnquery-k8s-cluster.mdx @@ -0,0 +1,339 @@ +--- +title: Query Kubernetes Clusters +id: cnquery-k8s-cluster +sidebar_label: Query Kubernetes Clusters +displayed_sidebar: cnquery +sidebar_position: 20 +description: Explore and analyze the configuration of Kubernetes clusters +image: /img/featured_img/mondoo-k8s.jpg +--- + +Once you've ensured that [cnquery can access your Kubernetes environment](/cnquery/cnquery-k8s/), you can begin exploring and analyzing your infrastructure. The method you choose depends on your goals: + +- To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. +- For widescale analysis of your Kubernetes infrastructure, scan using query packs. These collections of queries work together to present a whole picture. + +## Explore with the cnquery shell + +To launch a shell into your Kubernetes environment, enter: + +```bash +cnquery shell k8s +``` + +cnquery automatically discovers all the Kubernetes assets available to query: + +```coffee +→ resolved assets resolved-assets=20 + + Available assets + + 8. luna/luna-frontend-7fb96c846b-2k5j7 (k8s-pod) + > 9. luna/luna-frontend-7fb96c846b-8b94j (k8s-pod) + 10. luna/luna-frontend-7fb96c846b-jglt9 (k8s-pod) + 11. kube-system/kube-controller-manager-minikube (k8s-pod) + 12. kube-system/kube-proxy-cdzrr (k8s-pod) + 13. kube-system/kube-scheduler-minikube (k8s-pod) + 14. kube-system/storage-provisioner (k8s-pod) + + ••• +``` + +Arrow through the list and select Enter to choose the asset you want to explore. + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Kubernetes resources you can query. This command lists all the Kubernetes resources: + +```coffee +help k8s +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the Kubernetes IAM resources you can query: + +```coffee +help k8s.pod +``` + +From the resulting list, you can drill down even further. You can also learn about available Kubernetes resources in the [Mondoo Kubernetes Resource Pack Reference](/mql/resources/k8s-pack/). + +### Answer questions in the cnquery shell + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +#### Query namespaces + +This query asks for a list of namespaces in the cluster: + +```coffee +k8s.namespaces +``` + +cnquery returns a list of all the namespaces in the cluster and their creation dates. + +```coffee +k8s.namespaces: [ + 0: k8s.namespace name="default" created=2022-12-14 15:17:35 -0800 PST + 1: k8s.namespace name="kube-node-lease" created=2022-12-14 15:17:34 -0800 PST + 2: k8s.namespace name="kube-public" created=2022-12-14 15:17:34 -0800 PST + 3: k8s.namespace name="kube-system" created=2022-12-14 15:17:34 -0800 PST + 4: k8s.namespace name="luna" created=2022-12-14 15:26:38 -0800 PST +] +``` + +Add `{ * }` to request a full report that includes all the data available for each namespace: + +```coffee +k8s.namespaces { * } +``` + +cnquery groups the information by namespace: + +```coffee +k8s.namespaces: [ + 0: { + uid: "2cf29aad-c9cd-47fc-98fa-1fbc80b64ccb" + id: "namespace:default" + created: 2022-12-14 15:17:35 -0800 PST + manifest: { + apiVersion: "v1" + kind: "Namespace" + metadata: { + creationTimestamp: "2022-12-14T23:17:35Z" + labels: { + kubernetes.io/metadata.name: "default" + } + managedFields: [ + 0: { + apiVersion: "v1" + fieldsType: "FieldsV1" + fieldsV1: { + f:metadata: { + f:labels: { + .: {} + f:kubernetes.io/metadata.name: {} + } + } + } + manager: "kube-apiserver" + operation: "Update" + time: "2022-12-14T23:17:35Z" + } + ] + name: "default" + resourceVersion: "192" + uid: "2cf29aad-c9cd-47fc-98fa-1fbc80b64ccb" + } + spec: { + finalizers: [ + 0: "kubernetes" + ] + } + status: { + phase: "Active" + } + } + name: "default" + } + 1: { + uid: "d0b8a89f-42c1-43d1-88e5-976231c85e43" + id: "namespace:kube-node-lease" + created: 2022-12-14 15:17:34 -0800 PST + manifest: { + apiVersion: "v1" + kind: "Namespace" + metadata: { + creationTimestamp: "2022-12-14T23:17:34Z" + labels: { + kubernetes.io/metadata.name: "kube-node-lease" + } + managedFields: [ + 0: { + apiVersion: "v1" + fieldsType: "FieldsV1" + fieldsV1: { + f:metadata: { + f:labels: { + .: {} + f:kubernetes.io/metadata.name: {} + } + } + } + manager: "kube-apiserver" + operation: "Update" + time: "2022-12-14T23:17:34Z" + } + ] + name: "kube-node-lease" + resourceVersion: "53" + uid: "d0b8a89f-42c1-43d1-88e5-976231c85e43" + } + spec: { + finalizers: [ + 0: "kubernetes" + ] + } + status: { + phase: "Active" + } + } + name: "kube-node-lease" + } + +... +``` + +You can also request specific data for each namespace: + +```coffee +k8s.namespaces { uid name } +``` + +cnquery returns only the information you requested: + +```coffee +k8s.namespaces: [ + 0: { + uid: "2cf29aad-c9cd-47fc-98fa-1fbc80b64ccb" + name: "default" + } + 1: { + uid: "d0b8a89f-42c1-43d1-88e5-976231c85e43" + name: "kube-node-lease" + } + 2: { + uid: "fec9c3f7-a49b-4dbd-b17d-98dd3dd4d344" + name: "kube-public" + } + 3: { + uid: "f249e61c-7a6c-4ea6-a4e0-b903ed469664" + name: "kube-system" + } + 4: { + uid: "e00334c6-7ce4-4a32-b4a7-1e64e30b70c4" + name: "luna" + } +] +``` + +#### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results based on namespace: + +```coffee +k8s.services.where(namespace == "luna"){ + name + spec['type'] + spec['clusterIP'] + spec['ports']{ + _['port'] + } +} +``` + +cnquery returns the requested details for each service in the `luna` namespace: + +```coffee +k8s.services.where: [ + 0: { + spec[ports]: [ + 0: { + [port]: 443.000000 + } + ] + spec[clusterIP]: "10.43.0.1" + spec[type]: "ClusterIP" + name: "kubernetes" + } + 1: { + spec[ports]: [ + 0: { + [port]: 80.000000 + } + ] + spec[clusterIP]: "10.43.211.176" + spec[type]: "ClusterIP" + name: "wiki" + } + 2: { + spec[ports]: [ + 0: { + [port]: 80.000000 + } + ] + spec[clusterIP]: "10.43.196.249" + spec[type]: "ClusterIP" + name: "wordpress" + } + 3: { + spec[ports]: [ + 0: { + [port]: 3306.000000 + } + ] + spec[clusterIP]: "10.43.111.72" + spec[type]: "ClusterIP" + name: "mysql" + } + 4: { + spec[ports]: [ + 0: { + [port]: 80.000000 + } + ] + spec[clusterIP]: "10.43.242.48" + spec[type]: "ClusterIP" + name: "webserver" + } + 5: { + spec[ports]: [ + 0: { + [port]: 10250.000000 + } + 1: { + [port]: 10255.000000 + } + 2: { + [port]: 4194.000000 + } + ] + spec[clusterIP]: "None" + spec[type]: "ClusterIP" + name: "kubelet" + } +] +``` + +### Learn more about querying Kubernetes + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the Kubernetes resources and fields you can query, read the [Mondoo Kubernetes (K8s) Resource Pack Reference](/mql/resources/k8s-pack/). + +### Exit the cnquery shell + +To exit the cnquery shell, either press `Ctrl + D` or type `exit`. + +## Analyze your environment with Kubernetes query packs + +Mondoo makes these [core Kubernetes query packs](https://github.com/mondoohq/cnquery-packs) available in GitHub: + +- [Mondoo Kubernetes Cluster Inventory](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-kubernetes-inventory.mql.yaml) provides information about all your Kubernetes assets and their configuration. +- [Mondoo Kubernetes Cluster Incident Response](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-kubernetes-incident-response.mql.yaml) helps you investigate and minimize damage when a security incident occurs. + +To run one of these purpose-built collections of Kubernetes-specific queries: + +1. In Mondoo's [cnquery-packs GitHub repo](https://github.com/mondoohq/cnquery-packs), go to the `core` directory and find the Kubernetes query pack you want to run. + +2. Download the YAML file to a local directory and, in your terminal, move to that directory. + +3. Use the `cnquery scan` command, specifying the file and the query pack: + +```bash +cnquery scan k8s -f mondoo-kubernetes-incident-response.mql.yaml --querypack mondoo-incident-response-kubernetes +``` + +You can also create your own query packs to meet your specific needs. To learn more about query packs, read [Run a Query Pack](/cnquery/cnquery-run-pack/). + +--- diff --git a/docs/cnquery/cnquery-oper/cnquery-linux.mdx b/docs/cnquery/cnquery-oper/cnquery-linux.mdx new file mode 100644 index 000000000..3c71fedce --- /dev/null +++ b/docs/cnquery/cnquery-oper/cnquery-linux.mdx @@ -0,0 +1,142 @@ +--- +title: Query Linux +id: cnquery-linux-intro +sidebar_label: Linux +displayed_sidebar: cnquery +sidebar_position: 1 +description: Explore and analyze your Linux assets with cnquery +image: /img/featured_img/mondoo-feature.jpg +--- + +cnquery provides the answers you need about your Linux assets. For example, you can retrieve the distribution, user information, or security settings. + +For a list of Linux resources you can query, read [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Requirements + +To explore a Linux asset with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/) +- Access to the asset + +## Query a Linux asset + +To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. + +To launch a shell into your local Linux environment, enter: + +```bash +cnquery shell +``` + +To launch a shell into a remote Linux environment, enter: + +```bash +cnquery shell ssh user@HOST +``` + +For `HOST`, substitute the hostname of the remote Linux asset. + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Linux resources you can query. This command lists all the operating system resources: + +```coffee +help os +``` + +From the resulting list, you can drill down further. For example, enter this command to list the OS update information you can retrieve: + +```coffee +help os.update +``` + +You can also learn about available Linux resources in the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +### Get simple answers in the shell + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +This query asks the hostname: + +```coffee +asset.name +``` + +cnquery returns the pretty hostname: + +```coffee +asset.name: "luna-ubuntu-05" +``` + +This query asks the name of the operating system: + +```coffee +asset.platform +``` + +### Query users + +To request a list of all users on a machine, enter this query in the shell: + +```coffee +users +``` + +### Request full details in results + +For a more detailed report, you can specify that you want all fields: + +```coffee +users { * } +``` + +For every user, cnquery provides information about their settings. + +### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this query asks for each user's name, group, and whether it's enabled: + +```coffee +users { name group enabled } +``` + +### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results based on group name: + +```coffee +users.where(group.name == "admins") { name uid } +``` + +cnquery returns all users in the `admins` group. It includes the name and UID for each user. + +## Learn more about querying Linux + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the Linux resources and fields you can query, read the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Analyze your environment with query packs + +Mondoo makes these [core Linux query packs](https://github.com/mondoohq/cnquery-packs) available in GitHub: + +- [Linux Inventory Pack](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-linux-inventory.mql.yaml) provides information about all your AWS assets and their configuration. +- [Linux Incident Response Pack](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-linux-incident-response.mql.yaml) helps you investigate and minimize damage when a security incident occurs. + +To run one of these purpose-built collections of Linux-specific queries: + +1. In Mondoo's [cnquery-packs GitHub repo](https://github.com/mondoohq/cnquery-packs), go to the `core` directory and find the Linux query pack you want to run. + +2. Download the YAML file to a local directory and, in your terminal, move to that directory. + +3. Use the `cnquery scan` command, specifying the file and the query pack: + +```bash +cnquery scan -f mondoo-linux-incident-response.mql.yaml --querypack mondoo-incident-response-linux +``` + +You can also create your own query packs to meet your specific needs. To learn more about query packs, read [Run a Query Pack](/cnquery/cnquery-run-pack/). + +--- diff --git a/docs/cnquery/cnquery-oper/cnquery-mac.mdx b/docs/cnquery/cnquery-oper/cnquery-mac.mdx new file mode 100644 index 000000000..2612660fc --- /dev/null +++ b/docs/cnquery/cnquery-oper/cnquery-mac.mdx @@ -0,0 +1,252 @@ +--- +title: Query macOS +id: cnquery-macos-intro +sidebar_label: macOS +displayed_sidebar: cnquery +sidebar_position: 2 +description: Explore and analyze your macOS assets with cnquery +image: /img/featured_img/mondoo-feature.jpg +--- + +cnquery provides the answers you need about every macOS configuration. For example, you can retrieve the platform version, user information, or whether remote login is enabled. + +For a list of macOS resources you can query, read [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Requirements + +To explore a macOS asset with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/) +- Access to the asset + +## Query a macOS asset + +To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. + +To launch a shell into your local macOS environment, enter: + +```bash +cnquery shell +``` + +To launch a shell into a remote macOS environment, enter: + +```bash +cnquery shell ssh user@IP_ADDRESS +``` + +For `IP_ADDRESS`, substitute the IP address of the remote macOS asset. + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what macOS resources you can query. This command lists all the macOS resources: + +```coffee +help macos +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the macOS machine settings you can query: + +```coffee +help macos.systemsetup +``` + +From the resulting list, you can drill down even further. You can also learn about available macOS resources in the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +### Query macOS application layer firewall (ALF) + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +This query ask whether the firewall is enabled: + +```coffee +macos.alf.globalState +``` + +cnquery returns `0` for no and `1` for yes. + +### Query users + +To request a list of all users on a machine, enter this query in the shell: + +```coffee +users +``` + +:::note + +In this query, you don't specify `macos`. That's because the `user` resource is in the [Mondoo Core Resource Pack](/mql/resources/core-pack/). + +::: + +cnquery returns a list of all users on the system: + +```coffee +users.list: [ + 0: user name="_nsurlsessiond" uid=242 gid=242 + 1: user name="_logd" uid=272 gid=272 + 2: user name="_mailman" uid=78 gid=78 + 3: user name="_jabber" uid=84 gid=84 + 4: user name="_cyrus" uid=77 gid=6 + 5: user name="_scsd" uid=31 gid=31 + 6: user name="_installassistant" uid=25 gid=25 + 7: user name="_ftp" uid=98 gid=-2 + 8: user name="_appstore" uid=33 gid=33 + 9: user name="_installer" uid=96 gid=-2 + 10: user name="_cvmsroot" uid=212 gid=212 + 11: user name="_screensaver" uid=203 gid=203 + + ... + +] +``` + +### Request full details in results + +For a more detailed report, you can specify that you want all fields: + +```coffee +users { * } +``` + +For every user, cnquery provides information about their settings: + +```coffee +users.list: [ + 0: { + sid: "" + enabled: false + gid: 242 + shell: "/usr/bin/false" + uid: 242 + authorizedkeys.list: stat /var/db/nsurlsessiond/.ssh/authorized_keys: permission denied + home: "/var/db/nsurlsessiond" + name: "_nsurlsessiond" + group: group name="_nsurlsessiond" gid=242 + sshkeys: stat /var/db/nsurlsessiond/.ssh: permission denied + } + 1: { + sid: "" + enabled: false + gid: 272 + shell: "/usr/bin/false" + uid: 272 + authorizedkeys.list: [] + home: "/var/db/diagnostics" + name: "_logd" + group: group name="_logd" gid=272 + sshkeys: [] + } + 2: { + sid: "" + enabled: false + gid: 78 + shell: "/usr/bin/false" + uid: 78 + authorizedkeys.list: [] + home: "/var/empty" + name: "_mailman" + group: group name="_mailman" gid=78 + sshkeys: [] + } + +... + +] +``` + +### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this query asks for each user's name, group, and whether it's a shell user: + +```coffee +users { name group shell } +``` + +cnquery returns results like this: + +```coffee +users.list: [ + 0: { + shell: "/usr/bin/false" + name: "_nsurlsessiond" + group: group name="_nsurlsessiond" gid=242 + } + 1: { + shell: "/usr/bin/false" + name: "_logd" + group: group name="_logd" gid=272 + } + 2: { + shell: "/usr/bin/false" + name: "_mailman" + group: group name="_mailman" gid=78 + } + +... + +] +``` + +### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results based on group name: + +```coffee +users.where(group.name == "nobody") { name uid home } +``` + +cnquery returns all users in the `nobody` group. It includes the name, UID, and home directory for each user. + +```coffee +users.where.list: [ + 0: { + uid: 98 + name: "_ftp" + home: "/var/empty" + } + 1: { + uid: 96 + name: "_installer" + home: "/var/empty" + } + 2: { + uid: 234 + name: "_krb_anonymous" + home: "/var/empty" + } + + ... + +] +``` + +## Learn more about querying macOS + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the macOS resources and fields you can query, read the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Analyze your environment with query packs + +Mondoo makes these [core macOS query packs](https://github.com/mondoohq/cnquery-packs) available in GitHub: + +- [macOS Inventory Pack](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-macos-inventory.mql.yaml) provides information about all your AWS assets and their configuration. +- [macOS Incident Response Pack](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-macos-incident-response.mql.yaml) helps you investigate and minimize damage when a security incident occurs. + +To run one of these purpose-built collections of macOS-specific queries: + +1. In Mondoo's [cnquery-packs GitHub repo](https://github.com/mondoohq/cnquery-packs), go to the `core` directory and find the macOS query pack you want to run. + +2. Download the YAML file to a local directory and, in your terminal, move to that directory. + +3. Use the `cnquery scan` command, specifying the file and the query pack: + +```bash +cnquery scan -f mondoo-linux-incident-response.mql.yaml --querypack mondoo-incident-response-macos +``` + +You can also create your own query packs to meet your specific needs. To learn more about query packs, read [Run a Query Pack](/cnquery/cnquery-run-pack/). + +--- diff --git a/docs/cnquery/cnquery-oper/cnquery-windows.mdx b/docs/cnquery/cnquery-oper/cnquery-windows.mdx new file mode 100644 index 000000000..aeb31c19e --- /dev/null +++ b/docs/cnquery/cnquery-oper/cnquery-windows.mdx @@ -0,0 +1,150 @@ +--- +title: Query Windows +id: cnquery-windows-intro +sidebar_label: Windows +displayed_sidebar: cnquery +sidebar_position: 3 +description: Explore and analyze your Windows assets with cnquery +image: /img/featured_img/mondoo-feature.jpg +--- + +cnquery provides the answers you need about your Windows assets. For example, you can retrieve the Windows version, user information, or security settings. + +For a list of Windows resources you can query, read [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Requirements + +To explore a Windows asset with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/) +- Access to the asset + +## Query a Windows asset + +To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. + +To launch a shell into your local Windows environment, enter: + +```bash +cnquery shell +``` + +To launch a shell into a remote Windows environment, enter: + +```bash +cnquery shell ssh Administrator@IP_ADDRESS --ask-pass +``` + +For `IP_ADDRESS`, substitute the IP address of the remote Windows asset. + +If you prefer WinRM for remote access, enter: + +```bash +cnquery shell winrm Administrator@IP_ADDRESS --ask-pass +``` + +For `IP_ADDRESS`, substitute the IP address of the remote Windows asset. + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Windows resources you can query. This command lists all the operating system resources: + +```coffee +help os +``` + +From the resulting list, you can drill down further. For example, enter this command to list the OS update information you can retrieve: + +```coffee +help os.update +``` + +You can also learn about available Windows resources in the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +### Get simple answers in the shell + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +This query asks the device name: + +```coffee +asset.name +``` + +cnquery returns the pretty hostname: + +```coffee +asset.name: "Mwezi's demo lappy" +``` + +This query asks the version of the operating system: + +```coffee +asset.version +``` + +### Query users + +To request a list of all users on a machine, enter this query in the shell: + +```coffee +users +``` + +### Request full details in results + +For a more detailed report, you can specify that you want all fields: + +```coffee +users { * } +``` + +For every user, cnquery provides information about their settings. + +### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this query asks for each user's name, group, and whether it's enabled: + +```coffee +users { name group enabled } +``` + +### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results based on group name: + +```coffee +users.where(group.name == "admins") { name uid } +``` + +cnquery returns all users in the `admins` group. It includes the name and UID for each user. + +## Learn more about querying Windows + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the Windows resources and fields you can query, read the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Analyze your environment with query packs + +Mondoo makes these [core Windows query packs](https://github.com/mondoohq/cnquery-packs) available in GitHub: + +- [Windows Asset Inventory Pack](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-windows-inventory.mql.yaml) provides information about all your Windows assets and their configuration. +- [Windows Incident Response Pack](https://github.com/mondoohq/cnquery-packs/blob/main/core/mondoo-windows-incident-response.mql.yaml) helps you investigate and minimize damage when a security incident occurs. + +To run one of these purpose-built collections of Windows-specific queries: + +1. In Mondoo's [cnquery-packs GitHub repo](https://github.com/mondoohq/cnquery-packs), go to the `core` directory and find the Windows query pack you want to run. + +2. Download the YAML file to a local directory and, in your terminal, move to that directory. + +3. Use the `cnquery scan` command, specifying the file and the query pack: + +```coffee +cnquery scan -f mondoo-windows-incident-response.mql.yaml --querypack mondoo-incident-response-windows +``` + +You can also create your own query packs to meet your specific needs. To learn more about query packs, read [Run a Query Pack](/cnquery/cnquery-run-pack/). + +--- diff --git a/docs/cnquery/cnquery-platform.mdx b/docs/cnquery/cnquery-platform.mdx new file mode 100644 index 000000000..87d360a38 --- /dev/null +++ b/docs/cnquery/cnquery-platform.mdx @@ -0,0 +1,66 @@ +--- +title: Log into Mondoo Platform for More Capabilities +id: cnquery-platform +sidebar_label: Log into Mondoo Platform for More +displayed_sidebar: cnquery +sidebar_position: 4 +description: Expand your cnquery capabilities with a free Mondoo Platform account. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can expand your cnquery capabilities with a free Mondoo Platform account. Mondoo Platform includes a web-based UI through which you can: + +- See the relationships between different assets in your infrastructure +- Continuously monitor infrastructure security and compliance +- Save, review, search, and share scan results +- Access over 200 free security policies, including specific compliance checks against regional and industry guidelines +- Manage and share policies across your entire infrastructure +- Integrate with AWS Lambda, EBS volume scans, Kubernetes controller, and more + +This is just a partial list of capabilities. To learn more about what you can accomplish with Mondoo Platform, visit [mondoo.com](https://mondoo.com). + +## Log into Mondoo Platform + +1. In your web browser, go to [the Mondoo signup page](https://mondoo.com/pricing). + +![Sign up for Mondoo Platform](/img/platform/start/mondoo-platform-pricing.png) + +2. Register for a free trial. Mondoo sends you email with new account instructions. + +3. Follow the steps in the email to create your new account. + +## Register cnquery + +When you first log in, Mondoo greets you with a landing page. + +![Landing Page](/img/platform/start/welcome_to_mondoo.png) + +1. Select **Browse Integrations**. + + ![Add cnquery](/img/cnspec/cnspec-add-integration.png) + +2. Under Workstation, select **cnquery**. Mondoo provides quick setup commands and a token for registering cnquery. + + ![Register cnquery with Mondoo Platform](/img//cnquery/cnquery-platform-quick-setup.png) + +3. Select your operating system and then copy the commands in the box below. + +4. In a terminal window, paste and run the copied commands. + +cnquery is now registered with Mondoo Platform. The next time you query your infrastructure, you can see your assets in the Mondoo console. + +To learn about working in the Mondoo console, see the [Mondoo Platform documentation](/platform/home/). + +## Specify a proxy server for communication with Mondoo + +You can specify a proxy server for communication between cnquery and Mondoo Platform. This is useful if your default system proxy restricts communication, or if you need to monitor different types of traffic. + +1. Find the Mondoo configuration file: `/etc/opt/mondoo/mondoo.yml`. + +2. Add this line to `mondoo.yml`: + + ```yaml + api_proxy: https://1.1.1.1:8080 + ``` + +--- diff --git a/docs/cnquery/cnquery-query.md b/docs/cnquery/cnquery-query.md new file mode 100644 index 000000000..cc2681e14 --- /dev/null +++ b/docs/cnquery/cnquery-query.md @@ -0,0 +1,145 @@ +--- +title: Query Your Infrastructure +id: cnquery-query +sidebar_label: Query Your Infrastructure +displayed_sidebar: cnquery +sidebar_position: 3 +description: Learn to run MQL queries from the command line and include MQL queries in automation. +image: /img/featured_img/mondoo-feature.jpg +--- + +MQL is an easy, lightweight, ultra-fast query language built for searching and filtering infrastructure configuration data. Its data extraction resembles GraphQL, while its intuitive scripting approach is similar to JavaScript. + +MQL integrates with [hundreds of resources](/mql/resources) to retrieve information about your infrastructure. + +## Run standalone queries from the command line + +:::tip + +Our interactive cnquery shell, with auto-complete, is the easiest way to query your systems. [Learn more.](/cnquery/#run-queries-in-the-cnquery-shell) + +::: + +To run standalone queries from the command line, use the `cnquery run` command: + +```bash +cnquery run TARGET -c QUERY +``` + +| For... | Substitute... | +| -------- | ----------------------------------------------------------------------- | +| `TARGET` | The asset to query, such as `local` or a transport to a remote machine. | +| `QUERY` | The MQL query that specifies the information you want. | + +:::tip + +For a list of supported targets and parameters, use the `help` command: + +```bash +cnquery help run +``` + +::: + +### Examples + +This runs a query against your local system. It returns a list of the services configured on your system along with the boolean value whether each service is running: + +```bash +cnquery run local -c "services.list { name running }" +``` + +This query finds all AWS EC2 instances, across every enabled region within an AWS account, that are configured with a public IP address, and returns the values for the fields `instanceId`, `region`, `state`, `tags`, and `publicIp`: + +```coffee +aws.ec2.instances.where( publicIp != '' ) { + instanceId + region + state + tags + publicIp +} +``` + +This lists all users and returns the values for every field available for the `user` resource: + +```coffee +users.list { * } +``` + +This finds all container repositories used for images in a Kubernetes cluster: + +```coffee +k8s.pods { + name + containers.map( containerImage.repository.fullName ) +} +``` + +:::tip + +`.map` is a function for arrays that takes a given field and extracts it. Unlike block calls (`{ .. }`), it directly returns the given field. + +::: + +### Resources + +A fundamental building block for writing queries, resources let you retrieve the configuration of an asset. + +These are just a few examples of MQL resources for servers and endpoints on **all** the platforms that Mondoo supports: + +- `platform` queries the host for information about the platform, including `name`, `family`, `release`, and more. + +- `user` retrieves information about users, including the `name`, `UID`, `GID`, `home`, `shell`, and more. + +- `packages` reveals information about packages on the host, including `name`, `version`, `installed`, `outdated`, and more. + +MQL has resources that are platform specific as well. These are some examples: + +- `k8s.container` lets you explore more than a dozen Kubernetes container configuration details, including `imagePullPolicy`, `workingDir`, and whether the container should allocate a TTY for itself. + +- `terraform.block` queries Terraform block arguments, attributes, and more. + +- `windows.hotfix` exposes `installedOn` and `installedBy` dates and other information about important Windows updates. + +For a full list of available resources, enter the `help` command within the cnquery Shell. This returns the available resources and their descriptions. You can also run `help ` to get more information on a specific resource. + +### Fields + +Each resource has _fields_ that you use to return the value of a specific configuration associated with that resource. These are some of the fields from two resource examples above: + +- The fields for `platform` include `name`, `family`, `release`, and others. + +- The fields for `k8s.container` include `imagePullPolicy`, `workingDir`,`readinessProbe`, `tty`, and more. Start off by looking at the `platform` resource, which is common to all operating systems supported by Mondoo. + +### Filtering results and retrieving multiple fields + +You can filter results and return multiple fields at once: + +``` +RESOURCE {FIELD1 FIELD2 FIELD3 } +``` + +| For... | Substitute... | +| ---------- | ------------------------------------------------ | +| `RESOURCE` | The resource for the information you want. | +| `FIELD1` | The specific field containing the data you want. | +| `FIELD2` | Another field containing the data you want. | +| `FIELD3` | Another field containing the data you want. | + +For example, this command retrieves the name of the running platform, its release number, and the architecture it's running on: + +```coffee +platform { name release arch } +``` + +## Operators and functions + +For information on the MQL operators and functions you can use to write queries, read [Write Effective MQL](/mql/mql.write/). + +## Learn more + +- To explore cnquery commands, read the [CLI Reference](/cnquery/cli/cnquery). +- To explore the capabilities of the MQL language, read the [MQL docs](/mql/resources). + +--- diff --git a/docs/cnquery/cnquery-run-pack.md b/docs/cnquery/cnquery-run-pack.md new file mode 100644 index 000000000..b7e49cd83 --- /dev/null +++ b/docs/cnquery/cnquery-run-pack.md @@ -0,0 +1,75 @@ +--- +title: Run a Query Pack +id: cnquery-run-pack +sidebar_label: Run a Query Pack +displayed_sidebar: cnquery +sidebar_position: 5 +description: Query packs let you bundle multiple queries together to meet specific needs. +image: /img/featured_img/mondoo-feature.jpg +--- + +To run multiple queries together, you can combine queries into query packs. You can find query packs in Mondoo's [cnquery-packs](https://github.com/mondoohq/cnquery-packs) GitHub repo. + +## Let cnquery choose the right query pack​ + +cnquery comes with query packs out of the box for most systems. You can run: + +```bash +cnquery scan local +``` + +Without any more specifics, cnquery tries to find and run the default query pack for the given system. + +## Run a specific query pack​ + +To specify a query pack that you want to run, use the `-f` flag and `--querypack` argument: + +```bash +cnquery scan TARGET -f YAMLFILE --querypack PACKNAME +``` + +| For... | Substitute... | +| ---------- | ----------------------------------------------------------------------- | +| `TARGET` | The asset to query, such as `local` or a transport to a remote machine. | +| `YAMLFILE` | The query pack file, such as `mondoo-aws-incident-response.mql.yaml`. | +| `PACKNAME` | The name of the pack to run. | + +For example, this command runs a query pack named incident-response: + +```bash +cnquery scan local --querypack incident-response +``` + +## Run a single query from a pack​ + +You can also choose just one query from a query pack. Specify the query UID with the query pack: + +```bash +cnquery scan TARGET --querypack PACKNAME --query-id QUERYUID +``` + +| For... | Substitute... | +| ---------- | -------------------------------------------------------------------------------------------- | +| `TARGET` | The asset to query, such as `local` or a transport to a remote machine. | +| `PACKNAME` | The name of the pack that contains the query you want to run. | +| `QUERYUID` | The unique identifier of the query you want to run. Find this in the query pack's YAML file. | + +For example, this command runs the query named `sth-01` from the pack named `incident-response`: + +```bash +cnquery scan local --querypack incident-response --query-id sth-01 +``` + +## Create custom query packs​ + +Custom query packs let you bundle queries to meet your specific needs. To help you get started, you can find simple query pack examples in the cnquery repo's [examples](https://github.com/mondoohq/cnquery/tree/main/examples) folder. + +## Explore your infrastructure in Mondoo Platform​ + +To more easily explore your infrastructure, sign up for a free Mondoo Platform account. Mondoo's web-based console allows you to navigate, search, and arrange all of your assets. + +Go to [console.mondoo.com](https://console.mondoo.com) to sign up. + +To learn about Mondoo Platform, read the [Mondoo Platform docs](../intro.md) or visit [mondoo.com](https://mondoo.com). + +--- diff --git a/docs/cnquery/cnquery-supported.md b/docs/cnquery/cnquery-supported.md new file mode 100644 index 000000000..430dee961 --- /dev/null +++ b/docs/cnquery/cnquery-supported.md @@ -0,0 +1,47 @@ +--- +title: Supported Query Targets +id: cnquery-supported +sidebar_label: Supported Query Targets +displayed_sidebar: cnquery +sidebar_position: 8 +description: A list of technologies from which cnquery can request information +image: /img/featured_img/mondoo-feature.jpg +--- + +cnquery can request information from: + +| Target | Provider | Example | +| ---------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| AWS accounts | `aws` | `cnquery shell aws` | +| AWS EC2 instances | `ssh` | `cnquery shell ssh user@host` | +| AWS EC2 Instance Connect | `aws ec2 instance-connect` | `cnquery shell aws ec2 instance-connect ec2-user@INSTANCEID` | +| AWS EC2 EBS snapshot | `aws ec2 ebs snapshot` | `cnquery shell aws ec2 ebs snapshot SNAPSHOTID` | +| AWS EC2 EBS volume | `aws ec2 ebs volume` | `cnquery shell aws ec2 ebs volume VOLUMEID` | +| Container images | `container`, `docker` | `cnquery shell container ubuntu:latest` | +| Container registries | `container registry` | `cnquery shell container registry index.docker.io/library/rockylinux:8 ` | +| DNS records | `host` | `cnquery shell host mondoo.com` | +| GitHub organizations | `github org` | `cnquery shell github org mondoohq` | +| GitHub repositories | `github repo` | `cnquery shell github repo mondoohq/cnquery` | +| GitLab groups | `gitlab` | `cnquery shell gitlab --group mondoohq` | +| Google Cloud projects | `gcp` | `cnquery shell gcp` | +| Google Workspace | `google-workspace` | `cnquery shell google-workspace --customer-id CUSTOMER_ID --impersonated-user-email EMAIL --credentials-path JSON_FILE` | +| Kubernetes cluster nodes | `local`, `ssh` | `cnquery shell ssh user@host` | +| Kubernetes clusters | `k8s` | `cnquery shell k8s` | +| Kubernetes manifests | `k8s` | `cnquery shell k8s manifest.yaml ` | +| Kubernetes workloads | `k8s` | `cnquery shell k8s --discover pods,deployments` | +| Linux hosts | `local`, `ssh` | `cnquery shell local` or

`cnquery shell ssh user@host` | +| macOS hosts | `local`, `ssh` | `cnquery shell local` or

`cnquery shell ssh user@IP_ADDRESS` | +| Microsoft 365 accounts | `ms365` | `cnquery shell ms365 --tenant-id TENANT_ID --client-id CLIENT_ID --certificate-path PFX_FILE` | +| Microsoft Azure accounts | `azure` | `cnquery shell azure --subscription SUBSCRIPTION_ID` | +| Microsoft Azure instances | `ssh` | `cnquery shell ssh user@host` | +| Okta | `okta` | `cnquery shell okta --token TOKEN --organization ORGANIZATION` | +| Oracle Cloud Interface (OCI) | `oci` | `cnquery shell oci` | +| Running containers | `docker` | `cnquery shell docker CONTAINER_ID` | +| Slack | `slack` | `cnquery shell slack --token TOKEN` | +| SSL certificates on websites | `host` | `cnquery shell host mondoo.com` | +| Terraform HCL | `terraform` | `cnquery shell terraform HCL_FILE_OR_PATH` | +| Terraform plan | `terraform plan` | `cnquery shell terraform plan plan.json` | +| Terraform state | `terraform state` | `cnquery shell terraform state state.json` | +| Vagrant virtual machines | `vagrant` | `cnquery shell vagrant HOST` | +| VMware vSphere | `vsphere` | `cnquery shell vsphere user@domain@host --ask-pass` | +| Windows hosts | `local`, `ssh`, `winrm` | `cnquery shell local`,

`cnquery shell ssh Administrator@IP_ADDRESS --ask-pass` or

`cnquery shell winrm Administrator@IP_ADDRESS --ask-pass` | diff --git a/docs/cnquery/home.md b/docs/cnquery/home.md new file mode 100644 index 000000000..ed6413340 --- /dev/null +++ b/docs/cnquery/home.md @@ -0,0 +1,53 @@ +--- +title: cnquery Docs +hide_title: true +sidebar_label: cnquery Docs Home +displayed_sidebar: cnquery +description: cnquery documentation home +image: /img/featured_img/mondoo-feature.jpg +hide_table_of_contents: true +--- + +![cnquery Docs](/img/cnquery/cnquery-logo.png) + +cnquery is an open source, cloud-native tool that answers every question about your infrastructure. + +### [What Is cnquery?](/cnquery/cnquery-about/) + +Get to know cnquery and explore its capabilities. + +### [Install cnquery](/cnquery/) + +Download and install cnquery on your assets. + +### Get Started with: + +- [AWS](/cnquery/cnquery-aws/) + +- [Azure](/cnquery/cnquery-azure/) + +- [GCP](/cnquery/cnquery-gcp/) + +- [Kubernetes](/cnquery/cnquery-k8s/) + +- [Linux](/cnquery/cnquery-oper/cnquery-linux-intro) + +- [macOS](/cnquery/cnquery-oper/cnquery-macos-intro) + +- [Windows](/cnquery/cnquery-oper/cnquery-windows-intro) + +### [CLI Command Reference](/cnquery/cli/cnquery/) + +Find the commands you need to search and query your infrastructure. + +### See also: + +- To learn all the resources that you can query in your infrastructure and how to access the information, read the [MQL Reference](/mql/resources/), + +- To learn how to create queries, read [Write Effective MQL](/mql/mql.write). + +#### Can't find what you need? + +Join our [community discussion on GitHub](https://github.com/orgs/mondoohq/discussions). + +--- diff --git a/docs/cnquery/providers.mdx b/docs/cnquery/providers.mdx new file mode 100644 index 000000000..7fa3e7976 --- /dev/null +++ b/docs/cnquery/providers.mdx @@ -0,0 +1,298 @@ +--- +title: Manage cnquery Providers +sidebar_label: Manage cnquery Providers +sidebar_position: 9 +displayed_sidebar: cnquery +description: Learn about providers and special considerations for containers and air-gapped or limited access assets +image: /img/featured_img/mondoo-feature.jpg +--- + +cnquery can query and inventory dozens of different platforms, from AWS accounts to Windows hosts. _Providers_ are the components of cnquery that allow it to query specific platforms. When you download and install cnquery, you don't download or install any providers. Instead, when you run a cnquery command, cnquery automatically downloads and installs the provider(s) you need. This approach saves you download time, memory, and disk space. Each time you use cnquery, it ensures that you have the latest version of the necessary provider(s). + +For example, suppose you download cnquery and install it on a Linux workstation. There are no providers installed on the workstation. When you run a local query, cnquery checks and finds that the provider it needs, the operating systems (`os`) provider isn't present. cnquery automatically downloads and installs the `os` provider and then runs the scan. The `os` provider remains on your workstation for the next time you use cnquery for your operating system. + +Continuing the example, suppose you then run `cnquery shell aws` to run some queries against your AWS account settings. cnquery downloads and installs the `aws` provider and opens the shell. The `aws` provider remains on your workstation for the next time you use cnquery for AWS. + +Most users don't need to think about providers. cnquery manages them for you. However, there are some situations where you might want to manage providers yourself: + +- Containers + +- Read-only mode + +- Air-gapped environments + +## Provider considerations for containers + +By default, when you spin up a container with cnquery installed and run any cnquery command, cnquery retrieves the latest version of the providers it needs. When the container is destroyed, the providers are destroyed. Therefore, the next time you spin up a container based on the same image, the download and installation repeat. + +You can eliminate the unnecessary processing by: + +- Installing the provider(s) on the image. To learn how, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +- Turning off provider auto-update. To learn how, read [Turn off provider auto-update](#turn-off-provider-auto-update) below. + +## Provider considerations for read-only mode + +Some security situations dictate that cnquery must not be allowed to write to the machine on which it's installed. cnquery does operate in read-only mode, however, it can't download and install the providers it needs. Therefore, when you install cnquery on a machine on which cnquery won't have write access, you must also install the provider. To learn how, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +:::note + +If you install cnquery in an environment where it can't automatically update providers, you're responsible for installing provider updates. + +::: + +To prevent error messages from displaying when you run commands in read-only mode, turn off provider auto-update. To learn how, read [Turn off provider auto-update](#turn-off-provider-auto-update) below. + +## Provider considerations air-gapped environments + +In an air-gapped environment, cnquery can't download the providers needed to query or inventory the system. Therefore, when you install cnquery to an air-gapped machine, you must also install the provider. To learn how, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +:::note + +If you install cnquery in an air-gapped environment, you're responsible for installing provider updates. + +::: + +To prevent error messages from displaying when you run commands, turn off provider auto-update. + +## Turn off provider auto-update + +By default, each time you run a cnquery command, cnquery downloads and installs the latest version of the provider needed to execute the command (unless the latest version of the provider is already installed). You can change this behavior by disabling auto-update for cnquery. + +If you disable auto-update, cnquery doesn't check whether the latest version of the necessary provider is installed. It uses the version of the necessary provider that is currently installed. If the provider isn't installed, the command fails. + +### Turn off provider auto-update for all cnquery commands and Mondoo scans + +To never automatically update providers, set the auto-update value in the cnquery configuration file to `false`. + +On a Linux or macOS host, cnquery configuration is stored in one of these locations: + +- `/etc/opt/mondoo/mondoo.yml` configures cnquery for all user accounts. + +- `~/.config/mondoo/mondoo.yml` configures cnquery for a single user. + +On a Windows host, cnquery configuration is stored in one of these locations: + +- `C:\ProgramData\mondoo\mondoo.yml` configures cnquery for all users. + +- `C:\Users\{username}\.config\mondoo\mondoo.yml` configures cnquery for a single user. + +To configure cnquery to never update providers, set the configuration: + +```yaml +auto-update: false +``` + +:::note + +If you disable auto-update, be sure to check regularly for new versions of providers. To learn more, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +::: + +### Turn provider auto-update on or off for a single cnquery command + +To skip checking for, downloading, and installing the latest provider just once (for a single cnquery command), add the '--auto-update=false' flag to the command. For example, this scans the local machine without updating to the latest provider: + +```bash +cnquery scan --auto-update=false +``` + +The command line flag overrides the `mondoo.yml` config file setting. + +## Install, update, and remove providers + +You can download the latest versions of providers at [https://releases.mondoo.com/providers/](https://releases.mondoo.com/providers/). Past versions are always available at the same location. + +These are the available cnquery providers: + +| Provider | Target | +| ---------------- | ----------------------------------------- | +| arista | Arista | +| aws | Amazon Web Services | +| azure | Microsoft Azure | +| equinix | Equinix | +| gcp | Google Cloud Platform | +| github | GitHub | +| gitlab | GitLab | +| google-workspace | Google Workspace | +| ipmi | Intelligent Platform Management Interface | +| k8s | Kubernetes | +| ms365 | Microsoft 365 | +| network | Hosts | +| oci | Oracle Cloud Infrastructure | +| okta | Okta | +| opcua | OPC Unified Architecture | +| os | Operating systems | +| slack | Slack | +| terraform | HashiCorp Terraform | +| vcd | VMware Cloud Director | +| vsphere | VMware vSphere | + +To learn what providers are installed, run: + +```bash +cnquery providers +``` + +For help on the `providers` subcommand, run: + +```bash +cnquery providers -h +``` + +### Manually install a provider + +To install a provider, run: + +```bash +cnquery providers install NAME +``` + +For `NAME`, substitute the provider name (as shown in the table above). For example: + +```bash +cnquery providers install k8s +``` + +For help on manual provider installation, run: + +```bash +cnquery providers install -h +``` + +To install a provider from a file, run: + +```bash +cnquery providers install -f PATH +``` + +For `PATH`, substitute the path and name of the provider file. For example: + +```bash +cnquery providers install -f providers/os/dist/os.tar.xz +``` + +To install a provider from a URL, run: + +```bash +cnquery providers install --url URL +``` + +For `URL`, substitute the location and name of the provider file. For example: + +```bash +cnquery providers install --url https://releases.mondoo.com/providers/os/9.0.7/os_9.0.7_linux_arm.tar.xz +``` + +### Manually update providers + +To update to the latest version of all installed providers, run: + +```bash +cnquery providers update +``` + +To update to the latest version of a specific provider, run: + +```bash +cnquery providers update NAME +``` + +For `NAME`, substitute the name of the provider (as shown in the table above). For example: + +```bash +cnquery providers update vsphere +``` + +### Remove providers + +To remove a provider, run: + +```bash +cnquery providers remove NAME +``` + +For `NAME`, substitute the name of the provider you want to uninstall. For example: + +```bash +cnquery providers remove terraform +``` + +## Custom providers + +You can create your own custom providers for any MQL runtime, including cnquery and cnspec. Providers can be created in any language or framework as long as they adhere to the plugin structure and API. + +### Provider structure + +Provider plugins are located by default in either the system or user location. They consist of a folder containing a set of required files. For example, for a provider `mypro` you would see the following structure: + +``` +./mypro/ Folder containing the provider and additional files +├── mypro Executable used to start the provider plugin +├── mypro.json Provider metadata +└── mypro.resources.json Resources and fields schema +``` + +- **Provider folder** + The folder that must contain at least the binary, metadata, and schema. Additionally, providers may contain other custom files. + +- **Provider binary** + The binary is spawned when a new provider instance is created. + + It must adhere to the plugin behavior defined in [go-plugin](https://github.com/hashicorp/go-plugin), i.e. it must create a blocking process that communicates via GRPC with the caller and implements the provider plugin proto API. + + Due to these specifications, providers can be created in any language or stack, as long as they offer a callable binary (that is executable on the target system) and communicates via the GRPC interface. + +- **Provider metadata** + This file contains information about the provider like its name, UID, version, connections, and connectors. It is also used to build the CLI interface. The structure is defined in the [Provider struct](https://github.com/mondoohq/cnquery/blob/main/providers-sdk/v1/plugin/start.go). + +- **Resources and fields schema** + The schema contains all resources and fields that are offered by this provider. This includes version constraints for compatibility, field types, and basic documentation. It is defined in the [Schema message](https://github.com/mondoohq/cnquery/blob/main/providers-sdk/v1/resources/resources.proto) in the resources proto. Provider schemas can be auto-generated (see scaffolding below). + +Providers are distributed as `tar.xz` files which contain the above structure. They can be installed using these compressed archives via: + +```bash +cnquery providers install -f provider.tar.xz +``` + +Providers can also be installed manually by creating the above structure in the user system provider location. + +### Provider scaffolding + +To ease the creation of providers, cnquery comes with a scaffolding utility. + +To install it: + +```bash +go install apps/provider-scaffold/provider-scaffold.go +``` + +To create a new provider (let's call it `mypro` in this example) run: + +```bash +provider-scaffold --path mypro --provider-id mypro --provider-name "My Provider" --go-package github.com/myuser/mql-provider-mypro/mypro +``` + +The current provider scaffolding is geared towards golang. Contributions to extend it to other stacks are very welcome. + +### Builtin providers + +If you prefer not to have separate provider binaries that are spawned, it is possible to build any MQL runtime with Go-based providers directly into the binary. This means that no additional files are installed, or update, nor processes spawned. + +To manually configure builtin providers, you can modify the list of [`builtinProviders`](https://github.com/mondoohq/cnquery/blob/main/providers/builtin.go). Once added, you will see it in the list of builtin providers for any binary you build, for example: + +```bash +> cnquery providers + +→ builtin (found 3 providers) + + core 9.1.3 + mock 9.0.0 with connectors: mock + mypro 0.0.1 with connectors: mytarget + +... +``` + +Any MQL runtime can be built into a binary that contains these providers. Please note that they cannot be updated without creating a new build and increase the file-size of the runtime. This may still be advantageous in cases where you want an overall smaller footprint and tighter security profile. + +--- diff --git a/docs/cnquery/saas/github.md b/docs/cnquery/saas/github.md new file mode 100644 index 000000000..934cea437 --- /dev/null +++ b/docs/cnquery/saas/github.md @@ -0,0 +1,100 @@ +--- +title: Query GitHub organizations and repositories with cnquery +sidebar_label: GitHub +sidebar_position: 2 +displayed_sidebar: cnquery +description: Query GitHub configuration with cnquery +image: /img/featured_img/mondoo-feature.jpg +--- + +Rely on cnquery to query and inventory your GitHub organizations and private repositories (repos) as well as public repos and open source projects your team depends on. + +## Give cnquery access using the GitHub API + +To query GitHub organizations and repos, cnquery needs access. You give cnquery the access it needs through the GitHub API. First, you create GitHub personal access token. Then you share that token with cnquery using an environment variable. + +### Create a GitHub personal access token + +cnquery needs a personal access token to query a GitHub organization, public repo, or private repo. The token's level of access determines how much information cnquery can retrieve. + +To learn how to create a personal access token, read [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) in the GitHub documentation. + +### Configure a GITHUB_TOKEN environment variable + +You supply your personal access token to cnquery using the `GITHUB_TOKEN` environment variable. + +#### Linux / macOS + +```bash +export GITHUB_TOKEN= +``` + +#### Windows + +```powershell +$Env:GITHUB_TOKEN = "" +``` + +## Query GitHub + +To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. + +To launch a shell into your GitHub organization, enter: + +```bash +cnquery shell github org YOUR-ORG +``` + +For `YOUR-ORG`, substitute the name of your GitHub organization. + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what GitHub resources you can query. This command lists all the GitHub resources: + +```coffee +help github +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the GitHub resources you can query: + +```coffee +help github.organization +``` + +### Example query + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +This query returns the number of private repos in the organization: + +```coffee +github.organization.totalPrivateRepos +``` + +#### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this query asks for repo branches, and filters results to show only protected branches: + +```coffee +github.repository.branches.where( protected == true ) +``` + +### Exit the cnquery shell + +To exit the cnquery shell, either press `Ctrl + D` or type `exit`.## Query a GitHub organization + +To query the configuration of your GitHub organization, run this command: + +```bash +cnquery shell github org +``` + +## Learn more + +- To learn about all the GitHub resources and properties, read the [Mondoo GitHub Resource Pack Reference](/mql/resources/github-pack/). + +- To learn how to write queries, read [Write Effective MQL](/mql/mql.write). + +--- diff --git a/docs/cnquery/saas/google_workspace.md b/docs/cnquery/saas/google_workspace.md new file mode 100644 index 000000000..88def43a7 --- /dev/null +++ b/docs/cnquery/saas/google_workspace.md @@ -0,0 +1,145 @@ +--- +title: Query Google Workspace with cnquery +sidebar_label: Google Workspace +sidebar_position: 3 +displayed_sidebar: cnquery +description: Query Google Workspace configuration +--- + +Use cnquery to inventory and query your Google Workspace environment. + +## Configure access to the Google Workspace API + +:::note + +These steps for configuring [Admin SDK API](https://developers.google.com/admin-sdk) access to your +Google Workspace environment rely on Google Cloud (GCP) even if you aren't otherwise using GCP. + +::: + +1. [Create a Google Workspace service account](https://support.google.com/a/answer/7378726). + - In addition to the APIs that Google requires, also enable: + - Cloud Identity API + - Google Drive API + - After creating the service account, be sure to record the **Unique ID** on the details page. This is the Client ID to use in the next step. + - Be sure to download and protect the JSON credentials file. +2. Log into the [Google Workspace Admin Portal](https://admin.google.com). + +3. In the left-side navigation, select **Security -> Access and data controls -> API controls**. + +4. Select [**Domain-wide Delegation**](https://developers.google.com/workspace/guides/create-credentials#delegate_domain-wide_authority_to_your_service_account) and then select **Add new**. + +5. For the **Client ID** enter the **Unique ID** of the service account you created. + +6. Paste this comma-delimited list to add all 17 read-only OAuth scopes: + + ```text + https://www.googleapis.com/auth/admin.chrome.printers.readonly,https://www.googleapis.com/auth/admin.directory.customer.readonly,https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly,https://www.googleapis.com/auth/admin.directory.device.mobile.readonly,https://www.googleapis.com/auth/admin.directory.domain.readonly,https://www.googleapis.com/auth/admin.directory.group.member.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly,https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly,https://www.googleapis.com/auth/admin.directory.user.alias.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.userschema.readonly,https://www.googleapis.com/auth/admin.reports.audit.readonly,https://www.googleapis.com/auth/admin.reports.usage.readonly,https://www.googleapis.com/auth/admin.directory.user.security,https://www.googleapis.com/auth/cloud-identity.groups.readonly + ``` + +7. In the [Google Workspace Admin Portal](https://admin.google.com), navigate to **Account -> Account Settings** and record the **Customer ID**. + +To test proper configuration, use the cnquery shell to run a sample query: + +```text +$ cnquery shell google-workspace --customer-id 5amp13iD --impersonated-user-email admin@domain.com --credentials-path /home/user/my-project-6646123456789.json +``` + +| For... | Substitute... | +| --------------------------- | ----------------------------------------------------------- | +| `--impersonated-user-email` | The email address of a user that has super admin privileges | +| `--credentials-path` | The path to the downloaded JSON credentials file | + +cnquery returns results similar to these: + +``` +cnquery> googleworkspace.users +googleworkspace.users: [ + 0: { + primaryEmail: "alice@smith.family" + } + 1: { + primaryEmail: "betty@smith.family" + } + .... +``` + +If you prefer, you can use any of these environment variables to provide the credentials file. They're listed in order of precedence: + +- `GOOGLE_APPLICATION_CREDENTIALS` +- `GOOGLEWORKSPACE_CREDENTIALS` +- `GOOGLEWORKSPACE_CLOUD_KEYFILE_JSON` +- `GOOGLE_CREDENTIALS` + +:::note + +If any of the variables above and the `--credentials-path` parameter are both present, the environment variable takes precedence. + +::: + +## Example queries + +Display details for the first user in the workspace: + +```coffee +cnquery> googleworkspace.users[0]{ * } +googleworkspace.users[0]: { + isMailboxSetup: true + familyName: "Smith" + suspensionReason: "" + recoveryEmail: "" + archived: false + aliases: [] + isAdmin: false + lastLoginTime: 2023-01-03 20:45:12 +0000 UTC + agreedToTerms: true + suspended: false + isEnrolledIn2Sv: false + fullName: "Alice Smith" + recoveryPhone: "" + primaryEmail: "alice@smith.family" + givenName: "Alice" + id: "1182761XXXXXXXXX" + tokens: [ + 0: googleworkspace.token displayText="iOS Account Manager" + 1: googleworkspace.token displayText="Facetune2" + 2: googleworkspace.token displayText="YouTube on TV" + 3: googleworkspace.token displayText="Discord" + 4: googleworkspace.token displayText="Google Chrome" + 5: googleworkspace.token displayText="Epic Games, Inc." + 6: googleworkspace.token displayText="the-game-awards" + ] + creationTime: 2021-11-30 04:31:25 +0000 UTC + isEnforcedIn2Sv: false + usageReport: googleworkspace.report.usage id = googleworkspace.report.usage/C013XXXXXX/118276124783XXXXXXXXX/2023-01-03 +} +``` + +Notice that `usageReport` is listed in this example output. This provides access to several reports with more useful user data that you can also check. + +For example, this retrieves the first user in the workspace's account usage data: + +```coffee +cnquery> googleworkspace.users[0].usageReport.account +googleworkspace.users[0].usageReport.account: { + adminSetName: "Alice Smith" + driveUsedQuotaInMb: 231.000000 + gmailUsedQuotaInMb: 39.000000 + is2SvEnforced: false + isDisabled: false + isLessSecureAppsAccessAllowed: false + isS2SvEnrolled: false + isSuperAdmin: false + passwordLengthCompliance: "COMPLIANT" + passwordStrength: "STRONG" + usedQuotaInMb: 270.000000 +} +``` + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For more information, explore the complete [Mondoo Google Workspace Resource Pack Reference](/mql/resources/google-workspace-pack/). + +--- diff --git a/docs/cnquery/saas/ms365.md b/docs/cnquery/saas/ms365.md new file mode 100644 index 000000000..51933bba1 --- /dev/null +++ b/docs/cnquery/saas/ms365.md @@ -0,0 +1,200 @@ +--- +title: Query Microsoft 365 +sidebar_label: Microsoft 365 +displayed_sidebar: cnquery +sidebar_position: 4 +description: Use cnquery to inventory and Microsoft 365 +image: /img/featured_img/mondoo-365.jpg +--- + +cnquery can provide answers about your Microsoft 365 environment. It can query any aspect of your Microsoft 365 configuration. For a list of Microsoft 365 resources you can query, read [Mondoo Microsoft 365 (MS365) Resource Pack Reference](/mql/resources/ms365-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnquery with your Microsoft 365 environment + +### Requirements + +To test your Microsoft 365 environment with cnquery, you must have: + +- [cnquery installed on your workstation](/cnquery/). +- A [Microsoft 365 subscription](https://www.microsoft.com/en-us/microsoft-365) +- The [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) installed + +### Give cnquery access through the Microsoft 365 API + +To remotely scan your Microsoft 365 environment, cnquery must have API credentials with access to the subscription. Follow these steps to give cnquery access: + +1. Log into the Azure CLI: + +```bash +az login --allow-no-subscriptions +``` + +2. Create a new service principal and certificate: + +```bash +az ad sp create-for-rbac --name "mondoo-ms365" --create-cert +``` + +3. Record the `appId` and `tenant` values to use later. Copy the newly created certificate file to a safe location. + +4. Log into the [Azure portal](https://portal.azure.com), navigate to **App Registrations**, and select the application you just created. + +5. In the sidebar, select **API Permissions**. + + ![Azure Admin Center App Registrations](/img/platform/infra/saas/ms365/aad.portal.azure.registration.complete.png) + + By default, Microsoft grants your new application with `User.Read` permission for Microsoft Graph. It's not required for Mondoo, so you can remove it. + +6. Select **Add a permission**. + + ![Azure Admin Center App Registrations](/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.add.png) + +7. From the list of **Commonly used Microsoft APIs**, select **Microsoft Graph**. + + ![Azure Admin Center App Registrations](/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.graph.png) + +8. Because Mondoo acts as a service, select **Application permissions**. Then select the API permissions: + +
+ Show or hide required API permissions. + + | Microsoft Graph | Type | Description | + | --------------------------------------- | ----------- | ----------------------------------------------------------------- | + | Application.Read.All | Application | Read all applications | + | AuditLog.Read.All | Application | Read all audit log data | + | Calendars.Read | Application | Read calendars in all mailboxes | + | Device.Read.All | Application | Read all devices | + | DeviceManagementApps.Read.All | Application | Read Microsoft Intune apps | + | DeviceManagementConfiguration.Read.All | Application | Read Microsoft Intune device configuration and policies | + | DeviceManagementManagedDevices.Read.All | Application | Read Microsoft Intune devices | + | DeviceManagementRBAC.Read.All | Application | Read Microsoft Intune RBAC settings | + | DeviceManagementServiceConfig.Read.All | Application | Read Microsoft Intune configuration | + | Directory.Read.All | Application | Read directory data | + | Domain.Read.All | Application | Read domains | + | IdentityProvider.Read.All | Application | Read identity providers | + | IdentityRiskEvent.Read.All | Application | Read all identity risk event information | + | IdentityRiskyUser.Read.All | Application | Read all identity risky user information | + | InformationProtectionPolicy.Read.All | Application | Read all published labels and label policies for an organization. | + | MailboxSettings.Read | Application | Read all user mailbox settings | + | Organization.Read.All | Application | Read organization information | + | OrgContact.Read.All | Application | Read organizational contacts | + | Policy.Read.All | Application | Read your organization's policies | + | Policy.Read.ConditionalAccess | Application | Read your organization's conditional access policies | + | Policy.Read.PermissionGrant | Application | Read consent and permission grant policies | + | RoleManagement.Read.All | Application | Read role management data for all RBAC providers | + | SecurityActions.Read.All | Application | Read your organization's security actions | + | SecurityEvents.Read.All | Application | Read your organization’s security events | + | TeamsAppInstallation.ReadForUser.All | Application | Read all users' installed Teams apps | + | TeamSettings.Read.All | Application | Read all teams' settings | + | ThreatAssessment.Read.All | Application | Read threat assessment requests | + | ThreatIndicators.Read.All | Application | Read all threat indicators | + +
+ +9. Grant Mondoo read permissions for **Office 365 Management API**. + + ![Azure Admin Center App Registrations - API permissions](/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.o365.png) + + | Office 365 Management APIs | Type | Description | + | -------------------------- | ----------- | -------------------------------------------------------- | + | ActivityFeed.Read | Application | Read activity data for your organization | + | ActivityFeed.ReadDlp | Application | Read DLP policy events including detected sensitive data | + | ServiceHealth.Read | Application | Read service health information for your organization | + + Confirm the selected permissions by selecting **Add permissions**. + + ![Azure Admin Center App Registrations](/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.select.png) + +10. To complete the process, select **Grant admin consent for tenant**. + +![Azure Admin Center App Registrations](/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.confirm.png) + +### Verify with a quick Microsoft 365 query + +To quickly confirm that cnquery has access to your Microsoft 365 environment, run this check from your terminal: + +```bash +cnquery run ms365 -c 'microsoft.organizations { id }' +``` + +cnquery lists your Microsoft organizations' IDs. + +You've successfully used cnquery to query your Microsoft 365 environment. Now you're ready to explore. The method you choose depends on your goals: + +## Query Microsoft 365 + +To answer any question about your environment, use cnquery's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnquery and learning MQL. + +To launch a shell into your Azure environment, enter: + +```bash +cnquery shell ms365 +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Microsoft 365 resources you can query. This command lists all the Microsoft 365 resources: + +```coffee +help ms365 +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the Microsoft domain resources you can query: + +```coffee +help microsoft.domain +``` + +From the resulting list, you can drill down even further. You can also learn about available Azure resources in the [Mondoo Microsoft 365 (MS365) Resource Pack Reference](/mql/resources/ms365-pack/). + +### Query storage accounts + +Now that you know how to discover what's possible with cnquery, let's run some actual queries in the shell. + +This query lists all the current domains: + +```coffee +microsoft.domains +``` + +#### Request full details in results + +For a more detailed report, you can specify that you want all fields: + +```coffee +microsoft.domains { * } +``` + +For each domain, cnquery lists type, availability, supported services, and more. + +#### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this query asks for each domain's ID, password validity period, and whether the domain is admin managed: + +```coffee +microsoft.domains { id passwordValidityPeriodInDays isAdminManaged } +``` + +#### Filter results + +You can filter results based on any fields. Specify the criteria using the `where` function and standard boolean operators. + +For example, this filters results to show only domains that have passwords that expire: + +```coffee +microsoft.domains.where(passwordValidityPeriodInDays != 2147483647) { id availabilityStatus } +``` + +cnquery returns all domains with passwords that can expire. It includes the ID and availability status for each one. + +### Exit the cnquery shell + +To exit the cnquery shell, either press `Ctrl + D` or type `exit`. + +## Learn more about querying Microsoft 365 + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the Microsoft 365 resources and fields you can query, read the [Mondoo Microsoft 365 (MS365) Resource Pack Reference](/mql/resources/ms365-pack/). + +--- diff --git a/docs/cnquery/saas/okta.md b/docs/cnquery/saas/okta.md new file mode 100644 index 000000000..fc382c9c5 --- /dev/null +++ b/docs/cnquery/saas/okta.md @@ -0,0 +1,150 @@ +--- +title: Query Okta with cnquery +sidebar_label: Okta +sidebar_position: 5 +displayed_sidebar: cnquery +description: Query Okta configuration with cnquery +image: /img/featured_img/mondoo-feature.jpg +--- + +Rely on cnquery to query and inventory your Okta domain, including users, groups, policies, rules, applications and more. + +## Configure access to Okta + +Create an Okta [API token](https://developer.okta.com/docs/guides/create-an-api-token/create-the-token/). Carefully record the API token and your Okta domain. + +:::note + +Okta API tokens have a [fixed expiration period of 30 days](https://developer.okta.com/docs/guides/create-an-api-token/main/#token-expiration). + +::: + +Test access using the cnquery shell in a terminal. If your domain includes '-admin', you must remove it when specifying the organization to cnquery. For example, if your Okta URL is 'dev-22556123-admin.okta.com', specify your organization as 'dev-22556123.okta.com'. + +```bash +$ cnquery shell okta --organization dev-22556123.okta.com --token +cnquery> okta.organization{ * } +okta.organization: { + address2: "" + subdomain: "dev-22556123" + created: 2023-01-19 19:35:32 +0000 UTC + lastUpdated: 2023-01-19 19:35:38 +0000 UTC + country: "" + status: "ACTIVE" + website: "https://developer.okta.com" + endUserSupportHelpURL: "" + state: "" + address1: "" + city: "" + phoneNumber: "" + expiresAt: null + supportPhoneNumber: "" + postalCode: "" + companyName: "okta-dev-22556123" + id: "" +} +``` + +You can also use the `OKTA_CLIENT_TOKEN` environment variable, which makes the `--token` parameter optional. Note that if both are present, the `OKTA_CLIENT_TOKEN` environment variable takes precedence. + +```bash +export OKTA_CLIENT_TOKEN='00zr0k74_-s5mp13t0k3n' +cnquery shell okta --organization dev-22556123.okta.com +``` + +:::info + +Want a place to experiment? Okta makes it easy to obtain Developer Accounts. Sign up at [developer.okta.com/signup](https://developer.okta.com/signup/). + +::: + +## Example queries + +### Query users + +Example query: + +```coffee +okta.users{ + profile + status + lastUpdated + credentials['provider']['name'] +} +``` + +Example shell output: + +```coffee +okta.users: [ + 0: { + status: "PROVISIONED" + profile: &map[email:suki@lunalectric.com firstName:Suki lastName:Mbeze login:suki@lunalectric.com mobilePhone: secondEmail:] + lastUpdated: 2023-01-20 23:49:58 +0000 UTC + credentials[provider][name]: "OKTA" + } + 1: { + status: "PROVISIONED" + profile: &map[email:alice@lunalectric.com firstName:Alice lastName:Freedman login:alice@lunalectric.com mobilePhone: secondEmail:] + lastUpdated: 2023-01-20 23:49:41 +0000 UTC + credentials[provider][name]: "OKTA" + } + 2: { + status: "RECOVERY" + profile: &map[email:ben@lunalectric.com firstName:Ben lastName:Pesoa login:ben@lunalectric.com mobilePhone: secondEmail:] + lastUpdated: 2023-01-19 20:14:53 +0000 UTC + credentials[provider][name]: "OKTA" + } +] + +``` + +### Audit applications + +This query requests the name, status, label, and sign-on mode for each configuration application: + +```coffee +okta.applications { + status + name + label + signOnMode +} +``` + +Example shell output: + +```coffee +okta.applications: [ + 0: { + status: "ACTIVE" + name: "saasure" + label: "Okta Admin Console" + signOnMode: "OPENID_CONNECT" + } + 1: { + status: "ACTIVE" + name: "okta_end_user" + label: "Okta Dashboard" + signOnMode: "OPENID_CONNECT" + } + 2: { + status: "ACTIVE" + name: "okta_browser_plugin" + label: "Okta Browser Plugin" + signOnMode: "OPENID_CONNECT" + } + 3: { + status: "ACTIVE" + name: "dev-22556257_pagerduty_1" + label: "PagerDuty" + signOnMode: "AUTO_LOGIN" + } +] +``` + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- To learn about all the Okta resources and properties you can query, read the [Mondoo Okta Resource Pack Reference](/mql/resources/okta-pack/). diff --git a/docs/cnquery/saas/slack.md b/docs/cnquery/saas/slack.md new file mode 100644 index 000000000..6014637ff --- /dev/null +++ b/docs/cnquery/saas/slack.md @@ -0,0 +1,125 @@ +--- +title: Query Slack with cnquery +sidebar_label: Slack +sidebar_position: 6 +displayed_sidebar: cnquery +description: Query your Slack workspaces +image: /img/featured_img/mondoo-feature.jpg +--- + +Rely on cnquery to query and inventory your Slack workspaces. Unlock the powerful data available in the Slack API with the ease of MQL. + +## Configure access to a Slack organization + +Access to the Slack API requires an [Access Token](https://api.slack.com/authentication/token-types). We recommend using a bot token. + +1. As a workspace administrator, [create an app](https://api.slack.com/apps): Select the **Create an App** button and then select **From Scratch**. +2. Specify an app name (such as **Mondoo**) and select the appropriate workspace. +3. Select **Create App**. +4. In the left-side navigation, select **OAuth & Permissions**. +5. Scroll to **Scopes**. Under **User Token Scopes**, add these scopes: + + - **admin**: (This permission is required to view access logs. For details, read [scopes: admin](https://api.slack.com/scopes/admin).) + - **channels:read** + - **groups:read** + - **im:read** + - **mpim:read** + - **team:read** + - **usergroups:read** + - **users:read** + +6. Scroll to **OAuth Tokens for Your Workspace** and select **Install to Workspace**. Once you authorize the app, Slack provides a token. Copy the token; you need it to retrieve data from Slack. + +You can now test using the cnquery shell: + +```bash +$ cnquery shell slack --token +cnquery> slack.team +slack.team: { + domain: "mondoo" + id: "T030KKBABCDE" +} +``` + +You can also use the `SLACK_TOKEN` environment variable, which makes the `--token` parameter optional. Note that if both are present, the `SLACK_TOKEN` environment variable takes precedence. + +```bash +$ export SLACK_TOKEN=xoxb-3014687468594-456546543219-5ampl3.70ck3n +$ cnquery shell slack +cnquery> slack.team +slack.team: { + domain: "mondoo" + id: "T030KKBABCDE" +} +``` + +## Example queries + +### Users + +Here is an example of all the data available for a single user: + +```coffee +> slack.users[1]{ * } +slack.users.list[1]: { + profile: { + displayName: "" + displayNameNormalized: "" + email: "suki@lunalectric.io" + firstName: "Suki" + lastName: "Mbeze" + phone: "" + realName: "Suki Mbeze" + realNameNormalized: "Suki Mbeze" + skype: "" + statusExpiration: "1969-12-31T16:00:00-08:00" + team: "T030KKBUGHG" + title: "" + } + timeZoneOffset: -28800 + isBot: false + isInvitedUser: false + deleted: false + name: "suki" + enterpriseUser: null + isUltraRestricted: false + id: "U030KL5BMDH" + presence: "" + hasFiles: false + timeZone: "America/Los_Angeles" + teamId: "T030KKBUGHG" + isAdmin: true + has2FA: false + locale: "en-US" + realName: "Suki Mbeze" + isStranger: false + isAppUser: false + isOwner: true + isRestricted: false + timeZoneLabel: "Pacific Standard Time" + isPrimaryOwner: true + color: "9f69e7" +} +``` + +You can find which users have 2FA enabled: + +```coffee +slack.users.where{ has2FA == true } +``` + +### Conversations (channels) + +The `conversations` resource lets you inspect channels and direct message metadata. + +This query asks the purpose of each channel: + +```coffee +slack.conversations.where( isChannel == true ) { name purpose } +``` + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- Explore the complete [Mondoo Slack Resource Pack Reference](/mql/resources/slack-pack/) for complete details. diff --git a/docs/cnspec/README.mdx b/docs/cnspec/README.mdx new file mode 100644 index 000000000..98093bf84 --- /dev/null +++ b/docs/cnspec/README.mdx @@ -0,0 +1,139 @@ +--- +title: Get Started with cnspec +id: cnspec-get-started +sidebar_label: Get Started +displayed_sidebar: cnspec +sidebar_position: 2 +description: Install and use cnspec, an open source, cloud-native tool for securing your full stack +image: /img/featured_img/mondoo-feature.jpg +--- + +Welcome to cnspec, an open source project created by [Mondoo](https://mondoo.com)! + +:::note Learn about cnspec + +To discover cnspec's capabilities, read [What Is cnspec?](/cnspec/cnspec-about) + +::: + +import Partial from "./_include-install.mdx"; + +{" "} + +## Scan locally​ + +Use the `cnspec scan` subcommand to check local and remote targets for misconfigurations and vulnerabilities. cnspec detects the target platform and runs policy checks specific to that system. + +This command evaluates the security of your local machine: + +``` +cnspec scan local +``` + +This (truncated) sample result shows the individual checks that cnspec performs according to the policy. It includes a summary of the scan with a letter grade: + +``` +Checks: +✓ Pass: Disable Media Sharing +✓ Pass: Do not enable the "root" account +✓ Pass: Disable Bluetooth Sharing +✕ Fail: Enable security auditing +✓ Pass: Enable Firewall +... +✕ Fail: Ensure Firewall is configured to log +✓ Pass: Ensure nfs server is not running. +✓ Pass: Disable Content Caching +✕ Fail: Ensure AirDrop Is Disabled +✓ Pass: Control access to audit records + + +Summary +======================== + +Target: user-macbook-pro +Score: A 80/100 (100% completed) +✓ Passed: ███████████ 70% (21) +✕ Failed: ███ 17% (5) +! Errors: ██ 13% (4) +» Skipped: 0% (0) + +Policies: +A 80 macOS Security by Mondoo + + +Scanned 1 assets + +macOS + B Stella.home + +For detailed output, run this scan with "-o full". +``` + +## Scan remote targets​ + +You can also specify remote targets to scan. + +This example scans a docker image: + +``` +cnspec scan docker image ubuntu:22.04 +``` + +This scans an aws account using the local AWS config: + +``` +cnspec scan aws +``` + +This scans a Kubernetes cluster using your local kubectl config: + +``` +cnspec scan k8s +``` + +This scans a GitHub repository: + +``` +export GITHUB_TOKEN= +cnspec scan github repo +``` + +## Create a JSON report + +To save the results of your scan to a JSON file, append your scan command with the `-o` flag: + +``` +-o json > FILENAME.json +``` + +For `FILENAME`, substitute the name you want to give the file. For example, this scans a Kubernetes cluster and reports the results to a file named `k8s-test-results.json`: + +``` +cnspec scan k8s -o json > k8s-test-results.json +``` + +## Save, review, and share reports with Mondoo Platform​ + +To save, review, and share reports, sign up for a free Mondoo account. [Mondoo's web-based console](https://console.mondoo.com/) allows you to navigate, search, and inspect all of your reports. + +To learn about more of Mondoo Platform's capabilities, visit [mondoo.com](https://mondoo.com/). + +To learn how to sign up for a free Mondoo account and register cnspec, read [Log into Mondoo Platform for More Capabilities](/cnspec/cnspec-platform/). + +## Learn more​ + +- To get started with AWS, read [Assess AWS Security](/cnspec/cnspec-aws/). + +- To get started with Google Cloud, read [Assess Google Cloud Security](/cnspec/cnspec-gcp/). + +- To get started with Kubernetes, read [Assess Kubernetes Security](/cnspec/cnspec-k8s/). + +- To explore cnspec commands, read the [CLI Reference](/cnspec/cli/cnspec). + +- To learn more about policies, read [Manage Policies](/cnspec/cnspec-policies). + +- To learn how to structure and build your own policies, read the Mondoo [Policy Authoring Guide](/cnspec/cnspec-policies/write/). + +- To learn what technologies cnspec integrates with, read [Supported Scan Targets](/cnspec/cnspec-supported). + +--- diff --git a/docs/cnspec/_include-install.mdx b/docs/cnspec/_include-install.mdx new file mode 100644 index 000000000..f03836ab9 --- /dev/null +++ b/docs/cnspec/_include-install.mdx @@ -0,0 +1,28 @@ +## Download and install cnspec + +Install cnspec with our installation script: + +### Linux and macOS + +```bash +bash -c "$(curl -sSL https://install.mondoo.com/sh)" +``` + +(You can read the [Linux/macOS installation script](https://install.mondoo.com/sh).) + +### Windows + +```powershell +Set-ExecutionPolicy Unrestricted -Scope Process -Force; +[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; +iex ((New-Object System.Net.WebClient).DownloadString('https://install.mondoo.com/ps1/cnspec')); +Install-Mondoo -Product cnspec; +``` + +(You can read the [Windows installation script](https://install.mondoo.com/ps1/cnspec).) + +### Installation options + +Manual installation packages are available on [GitHub releases](https://github.com/mondoohq/cnspec/releases/latest). + +To learn about other installation methods, versioning, and other considerations, read [Extended Installation Options for cnspec](/cnspec/cnspec-adv-install/overview/). diff --git a/docs/cnspec/cli/_category_.json b/docs/cnspec/cli/_category_.json new file mode 100644 index 000000000..41757f5f1 --- /dev/null +++ b/docs/cnspec/cli/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "CLI Commands" +} diff --git a/docs/cnspec/cli/cnspec.md b/docs/cnspec/cli/cnspec.md new file mode 100644 index 000000000..8e94f20e3 --- /dev/null +++ b/docs/cnspec/cli/cnspec.md @@ -0,0 +1,34 @@ +--- +id: cnspec +title: cnspec +--- + +cnspec CLI + +### Synopsis + +cnspec is a cloud-native security testing tool for your entire infrastructure + +### Options + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + -h, --help help for cnspec + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec login](cnspec_login.md) - Register with Mondoo Platform +- [cnspec logout](cnspec_logout.md) - Log out from Mondoo Platform +- [cnspec migrate](cnspec_migrate.md) - Migrate cnspec CLI configuration to the latest version +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies +- [cnspec providers](cnspec_providers.md) - Providers add connectivity to all assets +- [cnspec run](cnspec_run.md) - Run an MQL query +- [cnspec serve](cnspec_serve.md) - Start cnspec in background mode +- [cnspec status](cnspec_status.md) - Verify access to Mondoo Platform +- [cnspec vault](cnspec_vault.md) - Manage vault environments +- [cnspec version](cnspec_version.md) - Display the cnspec version diff --git a/docs/cnspec/cli/cnspec_login.md b/docs/cnspec/cli/cnspec_login.md new file mode 100644 index 000000000..4700d433b --- /dev/null +++ b/docs/cnspec/cli/cnspec_login.md @@ -0,0 +1,47 @@ +--- +id: cnspec_login +title: cnspec login +--- + +Register with Mondoo Platform + +### Synopsis + +Log in to Mondoo Platform using a registration token. To pass in the token, use +the '--token' flag. + +You can generate a new registration token on the Mondoo Dashboard. Go to +https://console.mondoo.com -> Space -> Settings -> Registration Token. Copy the token and pass it in +using the '--token' argument. + +You remain logged in until you explicitly log out using the 'logout' subcommand. + +``` +cnspec login [flags] +``` + +### Options + +``` + --annotation stringToString Set the client annotations. (default []) + --api-endpoint string Set the Mondoo API endpoint. + -h, --help help for login + --name string Set asset name. + --splay int Randomize the timer by up to this many minutes. + --timer int Set the scan interval in minutes. + -t, --token string Set a client registration token. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_logout.md b/docs/cnspec/cli/cnspec_logout.md new file mode 100644 index 000000000..a425fd1ee --- /dev/null +++ b/docs/cnspec/cli/cnspec_logout.md @@ -0,0 +1,36 @@ +--- +id: cnspec_logout +title: cnspec logout +--- + +Log out from Mondoo Platform + +### Synopsis + +This process also revokes the Mondoo Platform service account to +ensure the credentials cannot be used in the future. + +``` +cnspec logout [flags] +``` + +### Options + +``` + --force Force re-authentication + -h, --help help for logout +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_migrate.md b/docs/cnspec/cli/cnspec_migrate.md new file mode 100644 index 000000000..698c974f1 --- /dev/null +++ b/docs/cnspec/cli/cnspec_migrate.md @@ -0,0 +1,30 @@ +--- +id: cnspec_migrate +title: cnspec migrate +--- + +Migrate cnspec CLI configuration to the latest version + +``` +cnspec migrate [flags] +``` + +### Options + +``` + -h, --help help for migrate +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_policy.md b/docs/cnspec/cli/cnspec_policy.md new file mode 100644 index 000000000..4b2aa2056 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy.md @@ -0,0 +1,36 @@ +--- +id: cnspec_policy +title: cnspec policy +--- + +Manage local and upstream policies + +### Options + +``` + -h, --help help for policy +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI +- [cnspec policy delete](cnspec_policy_delete.md) - Delete a policy from the connected space +- [cnspec policy disable](cnspec_policy_disable.md) - Disables a policy in the connected space +- [cnspec policy download](cnspec_policy_download.md) - download a policy to a local bundle file +- [cnspec policy enable](cnspec_policy_enable.md) - Enables a policy in the connected space +- [cnspec policy format](cnspec_policy_format.md) - Apply style formatting to one or more policy bundles +- [cnspec policy info](cnspec_policy_info.md) - Show more info about a policy from the connected space +- [cnspec policy init](cnspec_policy_init.md) - Create an example policy bundle +- [cnspec policy lint](cnspec_policy_lint.md) - Lint a policy bundle +- [cnspec policy list](cnspec_policy_list.md) - List enabled policies in the connected space +- [cnspec policy upload](cnspec_policy_upload.md) - Upload a policy to the connected space diff --git a/docs/cnspec/cli/cnspec_policy_delete.md b/docs/cnspec/cli/cnspec_policy_delete.md new file mode 100644 index 000000000..d1f75bcb6 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_delete.md @@ -0,0 +1,30 @@ +--- +id: cnspec_policy_delete +title: cnspec policy delete +--- + +Delete a policy from the connected space + +``` +cnspec policy delete UID/MRN [flags] +``` + +### Options + +``` + -h, --help help for delete +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_disable.md b/docs/cnspec/cli/cnspec_policy_disable.md new file mode 100644 index 000000000..e1df3a2b2 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_disable.md @@ -0,0 +1,30 @@ +--- +id: cnspec_policy_disable +title: cnspec policy disable +--- + +Disables a policy in the connected space + +``` +cnspec policy disable UID/MRN [flags] +``` + +### Options + +``` + -h, --help help for disable +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_download.md b/docs/cnspec/cli/cnspec_policy_download.md new file mode 100644 index 000000000..9b12d29f6 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_download.md @@ -0,0 +1,31 @@ +--- +id: cnspec_policy_download +title: cnspec policy download +--- + +download a policy to a local bundle file + +``` +cnspec policy download UID/MRN [flags] +``` + +### Options + +``` + -f, --file string output file + -h, --help help for download +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_enable.md b/docs/cnspec/cli/cnspec_policy_enable.md new file mode 100644 index 000000000..35b512fac --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_enable.md @@ -0,0 +1,30 @@ +--- +id: cnspec_policy_enable +title: cnspec policy enable +--- + +Enables a policy in the connected space + +``` +cnspec policy enable UID/MRN [flags] +``` + +### Options + +``` + -h, --help help for enable +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_format.md b/docs/cnspec/cli/cnspec_policy_format.md new file mode 100644 index 000000000..8a5a0ecdb --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_format.md @@ -0,0 +1,31 @@ +--- +id: cnspec_policy_format +title: cnspec policy format +--- + +Apply style formatting to one or more policy bundles + +``` +cnspec policy format [path] [flags] +``` + +### Options + +``` + -h, --help help for format + --sort sort the bundle. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_info.md b/docs/cnspec/cli/cnspec_policy_info.md new file mode 100644 index 000000000..1b237d5e2 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_info.md @@ -0,0 +1,31 @@ +--- +id: cnspec_policy_info +title: cnspec policy info +--- + +Show more info about a policy from the connected space + +``` +cnspec policy info UID/MRN [flags] +``` + +### Options + +``` + -f, --file string a local bundle file + -h, --help help for info +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_init.md b/docs/cnspec/cli/cnspec_policy_init.md new file mode 100644 index 000000000..c4f757d1f --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_init.md @@ -0,0 +1,34 @@ +--- +id: cnspec_policy_init +title: cnspec policy init +--- + +Create an example policy bundle + +### Synopsis + +Create an example policy bundle that you can use as a starting point. If you don't provide a filename, cnspec uses `example-policy.mql.yml`. + +``` +cnspec policy init [path] [flags] +``` + +### Options + +``` + -h, --help help for init +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_lint.md b/docs/cnspec/cli/cnspec_policy_lint.md new file mode 100644 index 000000000..11d394373 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_lint.md @@ -0,0 +1,32 @@ +--- +id: cnspec_policy_lint +title: cnspec policy lint +--- + +Lint a policy bundle + +``` +cnspec policy lint [path] [flags] +``` + +### Options + +``` + -h, --help help for lint + -o, --output string Set output format: compact, sarif (default "cli") + --output-file string Set output file +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_list.md b/docs/cnspec/cli/cnspec_policy_list.md new file mode 100644 index 000000000..0f32defa9 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_list.md @@ -0,0 +1,32 @@ +--- +id: cnspec_policy_list +title: cnspec policy list +--- + +List enabled policies in the connected space + +``` +cnspec policy list [-f bundle] [flags] +``` + +### Options + +``` + -a, --all list all policies, not only the enabled ones (applicable only for upstream) + -f, --file string a local bundle file + -h, --help help for list +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_policy_upload.md b/docs/cnspec/cli/cnspec_policy_upload.md new file mode 100644 index 000000000..96e327690 --- /dev/null +++ b/docs/cnspec/cli/cnspec_policy_upload.md @@ -0,0 +1,32 @@ +--- +id: cnspec_policy_upload +title: cnspec policy upload +--- + +Upload a policy to the connected space + +``` +cnspec policy upload my.mql.yaml [flags] +``` + +### Options + +``` + -h, --help help for upload + --no-lint Disable linting of the bundle before publishing. + --policy-version string Override the version of each policy in the bundle. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec policy](cnspec_policy.md) - Manage local and upstream policies diff --git a/docs/cnspec/cli/cnspec_providers.md b/docs/cnspec/cli/cnspec_providers.md new file mode 100644 index 000000000..20600dd5f --- /dev/null +++ b/docs/cnspec/cli/cnspec_providers.md @@ -0,0 +1,36 @@ +--- +id: cnspec_providers +title: cnspec providers +--- + +Providers add connectivity to all assets + +### Synopsis + +Manage your providers. List and install new ones or update existing ones. + +``` +cnspec providers [flags] +``` + +### Options + +``` + -h, --help help for providers +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI +- [cnspec providers install](cnspec_providers_install.md) - Install or update a provider. +- [cnspec providers list](cnspec_providers_list.md) - List all providers on the system. diff --git a/docs/cnspec/cli/cnspec_providers_install.md b/docs/cnspec/cli/cnspec_providers_install.md new file mode 100644 index 000000000..dfc2baa21 --- /dev/null +++ b/docs/cnspec/cli/cnspec_providers_install.md @@ -0,0 +1,32 @@ +--- +id: cnspec_providers_install +title: cnspec providers install +--- + +Install or update a provider. + +``` +cnspec providers install [flags] +``` + +### Options + +``` + -f, --file string install a provider via a file + -h, --help help for install + --url string install a provider via URL +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec providers](cnspec_providers.md) - Providers add connectivity to all assets diff --git a/docs/cnspec/cli/cnspec_providers_list.md b/docs/cnspec/cli/cnspec_providers_list.md new file mode 100644 index 000000000..fbf6bddbc --- /dev/null +++ b/docs/cnspec/cli/cnspec_providers_list.md @@ -0,0 +1,30 @@ +--- +id: cnspec_providers_list +title: cnspec providers list +--- + +List all providers on the system. + +``` +cnspec providers list [flags] +``` + +### Options + +``` + -h, --help help for list +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec providers](cnspec_providers.md) - Providers add connectivity to all assets diff --git a/docs/cnspec/cli/cnspec_run.md b/docs/cnspec/cli/cnspec_run.md new file mode 100644 index 000000000..ced58b514 --- /dev/null +++ b/docs/cnspec/cli/cnspec_run.md @@ -0,0 +1,40 @@ +--- +id: cnspec_run +title: cnspec run +--- + +Run an MQL query + +### Synopsis + +Run an MQL query on the CLI and displays its results. + +``` +cnspec run [flags] +``` + +### Options + +``` + --ast Parse the query and return the abstract syntax tree (AST). + -c, --command string MQL query to executed in the shell. + -h, --help help for run + --info Parse the query and provide information about it. + -j, --json Run the query and return the object in a JSON structure. + --parse Parse the query and return the logical structure. + --platform-id string Select a specific target asset by providing its platform ID. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_scan.md b/docs/cnspec/cli/cnspec_scan.md new file mode 100644 index 000000000..7724c2b72 --- /dev/null +++ b/docs/cnspec/cli/cnspec_scan.md @@ -0,0 +1,103 @@ +--- +id: cnspec_scan +title: cnspec scan +--- + +Scan assets with one or more policies. + +### Synopsis + +This command triggers a new policy scan for an asset. By default, cnspec scans the local +system with its pre-configured policies: + + $ cnspec scan local + +You can also manually select a local policy to execute and run it without +storing results in the server: + + $ cnspec scan local --policy-bundle policyfile.yaml --incognito + +In addition, cnspec can scan assets remotely via SSH. By default, cnspec uses the operating system +SSH agent and SSH config to retrieve the credentials: + + $ cnspec scan ssh ec2-user@52.51.185.215 + $ cnspec scan ssh ec2-user@52.51.185.215:2222 + +cnspec supports scanning AWS, Azure, and GCP accounts and instances. +Find out more in each sub-commands help menu. Here are a few examples: + + $ cnspec scan aws --region us-east-1 + $ cnspec scan azure --subscription ID --group NAME + $ cnspec scan gcp project ID + +You can also access Docker containers and images. cnspec supports local containers +and images as well as images in Docker registries: + + $ cnspec scan docker container b62b276baab6 + $ cnspec scan docker image ubuntu:latest + +Additionally, you can quickly scan a container registry: + + $ cnspec scan container registry harbor.lunalectric.com + $ cnspec scan container registry 123456789.dkr.ecr.us-east-1.amazonaws.com/repository + +cnspec also supports GCP's container registry, GCR: + + $ cnspec scan gcp gcr PROJECT_ID + +Vagrant is supported as well: + + $ cnspec scan vagrant HOST + +You can also use an inventory file: + + $ cnspec scan --inventory-file inventory.yml + +This scan uses an existing Ansible inventory: + + $ ansible-inventory -i hosts.ini --list | cnspec scan --inventory-ansible + +To learn more, read the [cnspec docs](/cnspec/home/). + +``` +cnspec scan [flags] +``` + +### Options + +``` + --annotation stringToString Add an annotation to the asset. (default []) + --asset-name string User-override for the asset name + --detect-cicd Try to detect CI/CD environments. If detected, set the asset category to 'cicd'. (default true) + --discover strings Enable the discovery of nested assets. Supports: all,auto,container,container-images + -h, --help help for scan + --incognito Run in incognito mode. Do not report scan results to Mondoo Platform. + --inventory-ansible Set the inventory format to Ansible. + --inventory-domainlist Set the inventory format to domain list. + --inventory-file string Set the path to the inventory file. + -j, --json Run the query and return the object in a JSON structure. + -o, --output string Set output format: compact, csv, full, json, junit, report, summary, yaml (default "compact") + --output-target string Set output target to which the asset report will be sent. Currently only supports AWS SQS topic URLs and local files + --platform-id string Select a specific target asset by providing its platform ID. + --policy strings Lists policies to execute. This requires --policy-bundle. You can pass multiple policies using --policy POLICY. + -f, --policy-bundle strings Path to local policy file + --props stringToString Custom values for properties (default []) + --record string Record all resource calls and use resources in the recording + --score-threshold int If any score falls below the threshold, exit 1. + --sudo Elevate privileges with sudo. + --use-recording string Use a recording to inject resource data (read-only) +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_serve.md b/docs/cnspec/cli/cnspec_serve.md new file mode 100644 index 000000000..f4e97ca98 --- /dev/null +++ b/docs/cnspec/cli/cnspec_serve.md @@ -0,0 +1,33 @@ +--- +id: cnspec_serve +title: cnspec serve +--- + +Start cnspec in background mode + +``` +cnspec serve [flags] +``` + +### Options + +``` + -h, --help help for serve + --inventory-file string Set the path to the inventory file + --splay int randomize the timer by up to this many minutes (default 60) + --timer int scan interval in minutes (default 60) +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_shell.md b/docs/cnspec/cli/cnspec_shell.md new file mode 100644 index 000000000..d45e78182 --- /dev/null +++ b/docs/cnspec/cli/cnspec_shell.md @@ -0,0 +1,40 @@ +--- +id: cnspec_shell +title: cnspec shell +--- + +Interactive query shell for MQL. + +### Synopsis + +Run an interactive shell in which you can explore MQL queries. + +``` +cnspec shell [flags] +``` + +### Options + +``` + -c, --command string MQL query to executed in the shell. + --discover strings Enable the discovery of nested assets. Supports: all,auto,container,container-images + -h, --help help for shell + --platform-id string Select a specific target asset by providing its platform ID. + --record string Record all resource calls and use resources in the recording + --sudo Elevate privileges with sudo. + --use-recording string Use a recording to inject resource data (read-only) +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_status.md b/docs/cnspec/cli/cnspec_status.md new file mode 100644 index 000000000..c2294938d --- /dev/null +++ b/docs/cnspec/cli/cnspec_status.md @@ -0,0 +1,35 @@ +--- +id: cnspec_status +title: cnspec status +--- + +Verify access to Mondoo Platform + +### Synopsis + +Status sends a ping to Mondoo Platform to verify the credentials. + +``` +cnspec status [flags] +``` + +### Options + +``` + -h, --help help for status + -o, --output string Set output format. Accepts json or yaml. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_vault.md b/docs/cnspec/cli/cnspec_vault.md new file mode 100644 index 000000000..b9f962e9c --- /dev/null +++ b/docs/cnspec/cli/cnspec_vault.md @@ -0,0 +1,28 @@ +--- +id: cnspec_vault +title: cnspec vault +--- + +Manage vault environments + +### Options + +``` + -h, --help help for vault +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI +- [cnspec vault add-secret](cnspec_vault_add-secret.md) - Store a secret in a vault +- [cnspec vault configure](cnspec_vault_configure.md) - Configure a vault environment diff --git a/docs/cnspec/cli/cnspec_vault_add-secret.md b/docs/cnspec/cli/cnspec_vault_add-secret.md new file mode 100644 index 000000000..73589f265 --- /dev/null +++ b/docs/cnspec/cli/cnspec_vault_add-secret.md @@ -0,0 +1,31 @@ +--- +id: cnspec_vault_add-secret +title: cnspec vault add-secret +--- + +Store a secret in a vault + +``` +cnspec vault add-secret SECRETID SECRETVALUE [flags] +``` + +### Options + +``` + -h, --help help for add-secret + --inventory-file string Set the path to the inventory file. +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec vault](cnspec_vault.md) - Manage vault environments diff --git a/docs/cnspec/cli/cnspec_vault_configure.md b/docs/cnspec/cli/cnspec_vault_configure.md new file mode 100644 index 000000000..a5fc59baf --- /dev/null +++ b/docs/cnspec/cli/cnspec_vault_configure.md @@ -0,0 +1,37 @@ +--- +id: cnspec_vault_configure +title: cnspec vault configure +--- + +Configure a vault environment + +### Synopsis + +cnquery vault configure mondoo-client-vault --type linux-kernel-keyring + +``` +cnspec vault configure VAULTNAME [flags] +``` + +### Options + +``` + -h, --help help for configure + --inventory-file string Set the path to the inventory file. + --option stringToString addition vault connection options, multiple options via --option key=value (default []) + --type string possible values: keyring | linux-kernel-keyring | encrypted-file | hashicorp-vault | gcp-secret-manager | aws-parameter-store | memory | none | aws-secrets-manager | gcp-berglas +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec vault](cnspec_vault.md) - Manage vault environments diff --git a/docs/cnspec/cli/cnspec_version.md b/docs/cnspec/cli/cnspec_version.md new file mode 100644 index 000000000..4cca8a318 --- /dev/null +++ b/docs/cnspec/cli/cnspec_version.md @@ -0,0 +1,30 @@ +--- +id: cnspec_version +title: cnspec version +--- + +Display the cnspec version + +``` +cnspec version [flags] +``` + +### Options + +``` + -h, --help help for version +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cli/cnspec_vuln.md b/docs/cnspec/cli/cnspec_vuln.md new file mode 100644 index 000000000..ab6c64ed7 --- /dev/null +++ b/docs/cnspec/cli/cnspec_vuln.md @@ -0,0 +1,42 @@ +--- +id: cnspec_vuln +title: cnspec vuln +--- + +Scans a target for Vulnerabilities. + +``` +cnspec vuln [flags] +``` + +### Options + +``` + --asset-name string User-override for the asset name + --discover strings Enable the discovery of nested assets. Supports: all,auto,container,container-images + -h, --help help for vuln + --inventory-ansible Set the inventory format to Ansible. + --inventory-domainlist Set the inventory format to domain list. + --inventory-file string Set the path to the inventory file. + -j, --json Run the query and return the object in a JSON structure. + -o, --output string Set output format: compact, csv, full, json, junit, report, summary, yaml (default "compact") + --platform-id string Select a specific target asset by providing its platform ID. + --props stringToString Custom values for properties (default []) + --record string Record all resource calls and use resources in the recording + --sudo Elevate privileges with sudo. + --use-recording string Use a recording to inject resource data (read-only) +``` + +### Options inherited from parent commands + +``` + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +### SEE ALSO + +- [cnspec](cnspec.md) - cnspec CLI diff --git a/docs/cnspec/cnspec-about.mdx b/docs/cnspec/cnspec-about.mdx new file mode 100644 index 000000000..55158cefd --- /dev/null +++ b/docs/cnspec/cnspec-about.mdx @@ -0,0 +1,37 @@ +--- +title: What Is cnspec? +id: cnspec-about +sidebar_label: What Is cnspec? +displayed_sidebar: cnspec +sidebar_position: 1 +description: An introduction to cnspec, an open source, cloud-native tool for securing your full stack +image: /img/featured_img/mondoo-feature.jpg +--- + +-> To install and get up and running quickly, read [Get Started with cnspec](/cnspec/). + +cnspec is an open source, cloud-native tool that assesses the security of your entire infrastructure. It scans everything and tells you where there are gaps that hackers can use to breach your systems. + +Attackers rely on misconfigurations and deprioritized vulnerabilities; all they need is one entry point to compromise your entire infrastructure. cnspec finds all the security issues that welcome ransomware, data theft, and other attacks. + +Security policies written in high-level code are the basis for cnspec scans. Each policy is a collection of checks against the target system. For example, a policy's checks might include: + +- The system must use a secure SSL/TLS configuration. +- Multi-factor authentication must be required. +- User data must not include any secrets. + +Each policy is based on standards set by the Center for Internet Security (CIS) and other industry best practices. It's easy to extend or modify a policy to fit your unique needs. To learn how to write your own policies, read the Mondoo [Policy Authoring Guide](/cnspec/cnspec-policies/write/). + +You can export scan results in human-readable formats, or export them to machine-friendly formats like junit or JSON. This opens up endless possibilities for automation, to make security scanning a part of your development process or your production monitoring. + +You can also automatically save and share reports using the [free Mondoo Platform](https://console.mondoo.com). Mondoo's web-based console allows you to explore your infrastructure data and identify issues. + +To learn about more of Mondoo Platform's capabilities, visit [mondoo.com](https://mondoo.com). + +To learn how to sign up for a free Mondoo account and register cnspec, read [Log into Mondoo Platform for More Capabilities](/cnspec/cnspec-platform/). + +## Learn more + +- To learn what technologies cnspec integrates with, read [Supported Scan Targets](/cnspec/cnspec-supported). + +--- diff --git a/docs/cnspec/cnspec-adv-install/_category_.json b/docs/cnspec/cnspec-adv-install/_category_.json new file mode 100644 index 000000000..8021aa3dc --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "AWS", + "position": 2 +} diff --git a/docs/cnspec/cnspec-adv-install/_providers-note.mdx b/docs/cnspec/cnspec-adv-install/_providers-note.mdx new file mode 100644 index 000000000..05665482d --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/_providers-note.mdx @@ -0,0 +1,5 @@ +:::note + +If you install cnspec on machines that can't download and install updates (because they're air-gapped or don't give cnspec write access), you must deploy cnspec providers. To learn more, read [Manage cnspec Providers](/cnspec/cnspec-adv-install/providers/). + +::: diff --git a/docs/cnspec/cnspec-adv-install/binary.mdx b/docs/cnspec/cnspec-adv-install/binary.mdx new file mode 100644 index 000000000..32cd5e34d --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/binary.mdx @@ -0,0 +1,22 @@ +--- +title: Install the cnspec Standalone Binary +sidebar_label: Standalone Binary +sidebar_position: 6 +displayed_sidebar: cnspec +description: This page provides details on manually installing and configuring cnspec. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo provides standalone binary builds of cnspec. The standalone binary is primarily for use on operating systems where there is no packaged installer available, or for automation use cases where a packaged installer would be superfluous. + +:::note +We recommend that, if possible, you use a [package-based installation](/cnspec/) so you can benefit from easy cnspec upgrades. +::: + +## Install using the cnspec binary + +To download the cnspec binary, visit the [Release Page](https://releases.mondoo.com/cnspec/latest). Archive files are available for all supported architectures and operating systems. + +Archives for UNIX-based systems are packaged as `.tar.gz` files. Archives for Windows systems are packaged as `.zip` files. + +--- diff --git a/docs/cnspec/cnspec-adv-install/linux.mdx b/docs/cnspec/cnspec-adv-install/linux.mdx new file mode 100644 index 000000000..bc4fe17c0 --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/linux.mdx @@ -0,0 +1,291 @@ +--- +title: Install cnspec on Linux +sidebar_label: Linux +sidebar_position: 3 +displayed_sidebar: cnspec +description: This page provides details on installing and configuring cnspec on Linux. +image: /img/featured_img/mondoo-feature.jpg +--- + +## Prerequisites + +Before you install cnspec or integrate Linux systems with Mondoo, you must: + +- Confirm access to the internet using the terminal + +- Confirm access to Mondoo systems using the terminal + +- Synchronize your system clock + +import Partial from "./_providers-note.mdx"; + +{" "} + +### Confirm access to the internet using the terminal + +Check internet connectivity from the terminal: + +```powershell +curl -I https://mondoo.com + +``` + +If you get the status **200 OK** and the website’s headers, you internet connection is working. + +If you have a proxy setting in your environment, you _might_ need to configure it in the terminal: + +``` +export http_proxy='http://proxyServerAddress:proxyPort' +export https_proxy='https://proxyServerAddress:proxyPort' +``` + +To make this configuration permanent, you can set the proxy in system-wide configuration files or user-based files like `/etc/bashrc`, `/etc/profile/`, and `/etc/profile.d/` based on your distribution. + +### Confirm Mondoo systems access using the terminal + +Be sure you have access to these systems from the terminal: + +```powershell +install.mondoo.com Port 443/https +releases.mondoo.com Port 443/https +eu.api.mondoo.com Port 443/https +us.api.mondoo.com Port 443/https +registry.api.mondoo.com Port 443/https +``` + +If your organization's [region](/platform/start/organize/regions/) (in the Mondoo Console) is US, you must be able to access us.api.mondoo.com. If your region is EU, you must be able to access eu.api.mondoo.com. + +To check the connectivity, follow the approach in the previous section using the `curl` command. + +### Synchronize your system clock + +Make sure your system clock is in sync with your NTP or internet time: + +``` +ntpq -p +``` + +## Install cnspec on Linux + +There are two ways of installing Mondoo on Linux: + +### Option A: Install using the automated install script + +The environment variable `MONDOO_REGISTRATION_TOKEN` allows you to pass a registration token to the installation package. If you provide this value, the agent automatically registers during the installation and creates mondoo.yml, the configuration file for Mondoo. + +We recommend that you create an integration and retrieve a token from Mondoo: + +1. Log into [the Mondoo Console](https://console.mondoo.com). + +2. Create a new integration for your Linux machine: + + - If this is your first time logging in, select the **BROWSE INTEGRATIONS** button. + + - If you've accessed the console before, in the side navigation bar, under INTEGRATIONS, select Add New Integration. Under **Server and Endpoint Security**, select your operating system. + +3. Copy the MONDOO_REGISTRATION_TOKEN value. + +4. In your terminal, enter: + +```bash +export MONDOO_REGISTRATION_TOKEN="" +``` + +5. In your terminal, enter: + +```bash title="Automated installation script" +bash -c "$(curl -sSL https://install.mondoo.com/sh)" +``` + +:::note + +You can also register and create a configuration file after installation using this command: + +```bash title="Automated installation script" +cnspec login --token $MONDOO_REGISTRATION_TOKEN --config /etc/opt/mondoo/mondoo.yml +``` + +::: + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +### Option B: Install manually using a package manager + + + + +```bash title="Add the YUM repository" +curl --silent --location https://releases.mondoo.com/rpm/mondoo.repo | tee /etc/yum.repos.d/mondoo.repo +``` + +```bash title="Install mondoo package with yum" +# export MONDOO_REGISTRATION_TOKEN="" +yum install -y mondoo +``` + + + + +```bash title="Add the YUM repository" +curl --silent --location https://releases.mondoo.com/rpm/mondoo.repo | tee /etc/yum.repos.d/mondoo.repo +``` + +```bash title="Install mondoo package with yum" +# export MONDOO_REGISTRATION_TOKEN="" +yum install -y mondoo +``` + + + + +```bash title="Add the YUM repository" +curl --silent --location https://releases.mondoo.com/rpm/mondoo.repo | tee /etc/zypp/repos.d/mondoo.repo +``` + +```bash title="Install mondoo package with zypper" +# export MONDOO_REGISTRATION_TOKEN="" +zypper -n --gpg-auto-import-keys install mondoo +``` + + + + +```bash title="Add the signed apt repository" +curl --retry 3 --retry-delay 10 -sSL https://releases.mondoo.com/debian/pubkey.gpg | gpg --dearmor --output /usr/share/keyrings/mondoo-archive-keyring.gpg +echo "deb [signed-by=/usr/share/keyrings/mondoo-archive-keyring.gpg] https://releases.mondoo.com/debian/ stable main" | tee /etc/apt/sources.list.d/mondoo.list +``` + +```bash title="Install mondoo package with apt" +# export MONDOO_REGISTRATION_TOKEN="" +apt update && apt install mondoo +``` + + + + +## Understand the installation: binaries and files + +When you complete the installation, you should have these three binaries on the machine: + +- cnspec +- cnquery + +To learn the location, run one of these commands: + +``` +which cnspec +which cnquery +``` + +Depending on your Linux distribution, the files can be in different locations, such as/usr/bin/ in Debian/Ubuntu or /bin/ in Red Hat/Fedora. + +Note the location of the cnspec binary. + +The installation also creates mondoo.yml, a configuration file that contains important data about the certificate, private key, API endpoint, and space address. These values come from the token (a JSON web token or JWT). You can check the content of the JWT using this command: + +```bash +jq -R 'split(".") | .[1] | @base64d | fromjson' <<< "" +``` + +By default, the installation creates the mondoo.yml file here: + +```bash +/etc/opt/mondoo/ +``` + +It is important to check the cnspec status, configuration file, and registration status by running: + +```bash +cnspec status +``` + +In new Linux distributions, the installation creates a systemd cnspec service, which you can see in: + +```bash +/etc/systemd/system/cnspec.service +``` + +If you encounter an issue with the token, you can re-register cnspec with the new token: + +```bash +cnspec login --token $MONDOO_REGISTRATION_TOKEN --config /etc/opt/mondoo/mondoo.yml +``` + +OR: + +```bash +cnspec register --token $MONDOO_REGISTRATION_TOKEN --config /etc/opt/mondoo/mondoo.yml +``` + +## Enable and start cnspec as a service: + +```bash +systemctl enable cnspec.service +systemctl start cnspec.service +systemctl daemon-reload +``` + +Each time the service starts, it runs a local scan based on the selected policies and sends the results to this machine's space in Mondoo Platform. You can then [view the results](/platform/security/posture/monitor/) in the Mondoo Console. + +To force cnspec to continuously scan the machine, the binary runs with a option called **serve**, which runs cnspec as a daemon every hour. +See this in the cnspec.service: + +```bash +[Unit] +Description=cnspec Service +After=network-online.target + +[Service] +Type=simple +WorkingDirectory=/etc/opt/mondoo/ +ExecStart=/usr/bin/cnspec --config /etc/opt/mondoo/mondoo.yml serve +KillMode=process +Restart=on-failure +RestartSec=90 +RestartPreventExitStatus=78 + +[Install] +``` + +To run the scan yourself and see the results as well, you can use this command: + +```bash +cnspec scan local +``` + +During the scan, if cnspec finds a configuration file (mondoo.yml), it loads the policies enabled for this machine's space in Mondoo Platform. If cnspec doesn't find a configuration file, it scans based on Mondoo's free, open source policies. cnspec loads the policies into memory and runs the scan. + +## Proxy configuration in cnspec + +You can also set the proxy settings from within cnspec during registration or add them to the mondoo.yml configuration file. + +During the registration: + +```powershell title="Set Proxy via cnspec command" +cnspec login --token 'YOUR_TOKEN_HERE' --api-proxy 'http://1.1.1.1:8080' --config '/etc/opt/mondoo/mondoo.yml' +``` + +Add to the mondoo.yml file: + +1. Navigate to the cnspec configuration file located at `/etc/opt/mondoo/mondoo.yml`. +2. Add this line: + +```yaml title="Set Proxy via cnspec configuration file" +api_proxy: http://1.1.1.1:8080 +``` + +## Learn more + +- [Register cnspec](/cnspec/cnspec-adv-install/registration) +- [Run cnspec as a service](/cnspec/cnspec-adv-install/service) + +--- diff --git a/docs/cnspec/cnspec-adv-install/macos.mdx b/docs/cnspec/cnspec-adv-install/macos.mdx new file mode 100644 index 000000000..63af36914 --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/macos.mdx @@ -0,0 +1,62 @@ +--- +title: Install cnspec on macOS +sidebar_label: macOS +sidebar_position: 4 +displayed_sidebar: cnspec +description: This page provides details on installing and configuring cnspec on macOS. +image: /img/featured_img/mondoo-feature.jpg +--- + +:::info +The environment variable `MONDOO_REGISTRATION_TOKEN` allows you to pass a registration token to the installation package. If provided, the client will register automatically during the installation. +::: + +import Partial from "./_providers-note.mdx"; + +{" "} + +## Install using the automated install script + +The Mondoo automated installation script installs the mondoo package using either the [Homebrew](https://brew.sh) package manager or a `.pkg` installer if Homebrew is unavailable. + +```bash +# export MONDOO_REGISTRATION_TOKEN="" +bash -c "$(curl -sSL https://install.mondoo.com/sh)" +``` + +## Install directly via Homebrew + +Mondoo supports installation using the [Homebrew](https://brew.sh) package manager on macOS. + +```bash title="Add the Mondoo tap" +brew tap mondoohq/mondoo +``` + +```bash title="Install mondoo package with brew" +brew install mondoo +``` + +```bash title="Upgrade mondoo package with brew" +brew upgrade mondoo +``` + +## Install using the universal binary package + +Mondoo releases a signed and notarized universal binary package (`.pkg`) for Intel & ARM (M1/M2) platforms available at [releases.mondoo.com](https://releases.mondoo.com/mondoo/latest) that installs cnspec on hosts. + +Additionally, the package installs, but does not start or enable, a `launchd` configuration for running cnspec continuously as a service for endpoint security. This package is ideal for deployment by MDM solutions. + +For more information on running Mondoo as a service on macOS, see [Running Mondoo as a service](/cnspec/cnspec-adv-install/service). + +To install the PKG non-interactively use the _installer_ utility in a Terminal: + +```bash +installer -pkg ./mondoo_(version)_darwin_universal.pkg -target /Library +``` + +## Learn more + +- [Register cnspec](/cnspec/cnspec-adv-install/registration) +- [Run cnspec as a service](/cnspec/cnspec-adv-install/service) + +--- diff --git a/docs/cnspec/cnspec-adv-install/overview.mdx b/docs/cnspec/cnspec-adv-install/overview.mdx new file mode 100644 index 000000000..4b3fa69de --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/overview.mdx @@ -0,0 +1,50 @@ +--- +title: Extended Installation Options for cnspec +sidebar_label: Overview +sidebar_position: 1 +displayed_sidebar: cnspec +description: Install and register assets with Mondoo, distribute cnspec across your infrastructure, run cnspec as a service, and other installation options +image: /img/featured_img/mondoo-feature.jpg +--- + +#### Basic installation instructions + +- [Install cnspec](/cnspec/) + +#### Register with Mondoo + +- [Register a cnspec installation with Mondoo](/cnspec/cnspec-adv-install/registration/) + +#### More installation and distribution considerations + +- [Manage cnspec providers](/cnspec/cnspec-adv-install/providers) + +- [Register a cnspec installation with Mondoo using a credentials file](/cnspec/cnspec-adv-install/registration-keys/) + +- [Run cnspec as a service](/cnspec/cnspec-adv-install/service/) + +- [Linux installation options](/cnspec/cnspec-adv-install/linux/) + +- [macOS installation options](/cnspec/cnspec-adv-install/macos/) + +- [Windows installation options](/cnspec/cnspec-adv-install/windows/) + +- [Install with a standalone binary](/cnspec/#installation-options) + +- [Update cnspec](/cnspec/cnspec-adv-install/update/) + +#### Secure deployment automation + +- [Ansible](/platform/infra/opsys/automation/ansible/) + +- [Chef Infra](/platform/infra/opsys/automation/chef/) + +- [cloud-init](/platform/infra/opsys/automation/cloudinit/) + +- [Secrets Management](/platform/infra/opsys/automation/vault/) + +#### Get help + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/cnspec/cnspec-adv-install/providers.mdx b/docs/cnspec/cnspec-adv-install/providers.mdx new file mode 100644 index 000000000..7391103cd --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/providers.mdx @@ -0,0 +1,221 @@ +--- +title: Manage cnspec Providers +sidebar_label: Manage cnspec Providers +sidebar_position: 9 +displayed_sidebar: cnspec +description: Learn about providers and special considerations for containers and air-gapped or limited access assets +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec can assess the security of dozens of different platforms, from AWS to Windows hosts. _Providers_ are the components of cnspec that allow it to evaluate specific platforms. When you download and install cnspec, you don't download or install any providers. Instead, when you run a cnspec command, cnspec automatically downloads and installs the provider(s) you need. This approach saves you download time, memory, and disk space. Each time you use cnspec, it ensures that you have the latest version of the necessary provider(s). + +For example, suppose you download cnspec and install it on a Linux workstation. There are no providers installed on the workstation. When you run `cnspec scan` to assess local security, cnspec checks and finds that the provider it needs, the operating systems (`os`) provider isn't present. cnspec automatically downloads and installs the `os` provider and then runs the scan. The `os` provider remains on your workstation for the next time you use cnspec for your operating system. + +Continuing the example, suppose you then run `cnspec shell aws` to run some checks against your AWS account settings. cnspec downloads and installs the `aws` provider and opens the shell. The `aws` provider remains on your workstation for the next time you use cnspec for AWS. + +Most users don't need to think about providers. cnspec manages them for you. However, there are some situations where you might want to manage providers yourself: + +- Containers + +- Read-only mode + +- Air-gapped environments + +## Provider considerations for containers + +By default, when you spin up a container with cnspec installed and run any cnspec command, cnspec retrieves the latest version of the providers it needs. When the container is destroyed, the providers are destroyed. Therefore, the next time you spin up a container based on the same image, the download and installation repeat. + +You can eliminate the unnecessary processing by: + +- Installing the provider(s) on the image. To learn how, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +- Turning off provider auto-update. To learn how, read [Turn off provider auto-update](#turn-off-provider-auto-update) below. + +## Provider considerations for read-only mode + +Some security situations dictate that cnspec must not be allowed to write to the machine on which it's installed. cnspec does operate in read-only mode, however, it can't download and install the providers it needs. Therefore, when you install cnspec on a machine on which cnspec won't have write access, you must also install the provider. To learn how, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +:::note + +If you install cnspec in an environment where it can't automatically update providers, you're responsible for installing provider updates. + +::: + +To prevent error messages from displaying when you run commands in read-only mode, turn off provider auto-update. To learn how, read [Turn off provider auto-update](#turn-off-provider-auto-update) below. + +## Provider considerations air-gapped environments + +In an air-gapped environment, cnspec can't download the providers needed to scan or test the system. Therefore, when you install cnspec to an air-gapped machine, you must also install the provider. To learn how, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +:::note + +If you install cnspec in an air-gapped environment, you're responsible for installing provider updates. + +::: + +To prevent error messages from displaying when you run commands, turn off provider auto-update. + +## Turn off provider auto-update + +By default, each time you run a cnspec command, cnspec downloads and installs the latest version of the provider needed to execute the command (unless the latest version of the provider is already installed). You can change this behavior by disabling auto-update for cnspec. + +If you disable auto-update, cnspec doesn't check whether the latest version of the necessary provider is installed. It uses the version of the necessary provider that is currently installed. If the provider isn't installed, the command fails. + +### Turn off provider auto-update for all cnspec commands and Mondoo scans + +To never automatically update providers, set the auto-update value in the cnspec configuration file to `false`. + +On a Linux or macOS host, cnspec configuration is stored in one of these locations: + +- `/etc/opt/mondoo/mondoo.yml` configures cnspec for all user accounts. + +- `~/.config/mondoo/mondoo.yml` configures cnspec for a single user. + +On a Windows host, cnspec configuration is stored in one of these locations: + +- `C:\ProgramData\mondoo\mondoo.yml` configures cnspec for all users. + +- `C:\Users\{username}\.config\mondoo\mondoo.yml` configures cnspec for a single user. + +To configure cnspec to never update providers, set the configuration: + +```yaml +auto-update: false +``` + +:::note + +If you disable auto-update, be sure to check regularly for new versions of providers. To learn more, read [Install, update, and remove providers](#install-update-and-remove-providers) below. + +::: + +### Turn provider auto-update on or off for a single cnspec command + +To skip checking for, downloading, and installing the latest provider just once (for a single cnspec command), add the '--auto-update=false' flag to the command. For example, this scans the local machine without updating to the latest provider: + +```bash +cnspec scan --auto-update=false +``` + +The command line flag overrides the `mondoo.yml` config file setting. + +## Install, update, and remove providers + +You can download the latest versions of providers at [https://releases.mondoo.com/providers/](https://releases.mondoo.com/providers/). Past versions are always available at the same location. + +These are the available cnspec providers: + +| Provider | Target | +| ---------------- | ----------------------------------------- | +| arista | Arista | +| aws | Amazon Web Services | +| azure | Microsoft Azure | +| equinix | Equinix | +| gcp | Google Cloud Platform | +| github | GitHub | +| gitlab | GitLab | +| google-workspace | Google Workspace | +| ipmi | Intelligent Platform Management Interface | +| k8s | Kubernetes | +| ms365 | Microsoft 365 | +| network | Hosts | +| oci | Oracle Cloud Infrastructure | +| okta | Okta | +| opcua | OPC Unified Architecture | +| os | Operating systems | +| slack | Slack | +| terraform | HashiCorp Terraform | +| vcd | VMware Cloud Director | +| vsphere | VMware vSphere | + +To learn what providers are installed, run: + +```bash +cnspec providers +``` + +For help on the `providers` subcommand, run: + +```bash +cnspec providers -h +``` + +### Manually install a provider + +To install a provider, run: + +```bash +cnspec providers install NAME +``` + +For `NAME`, substitute the provider name (as shown in the table above). For example: + +```bash +cnspec providers install k8s +``` + +For help on manual provider installation, run: + +```bash +cnquery providers install -h +``` + +To install a provider from a file, run: + +```bash +cnspec providers install -f PATH +``` + +For `PATH`, substitute the path and name of the provider file. For example: + +```bash +cnspec providers install -f providers/os/dist/os.tar.xz +``` + +To install a provider from a URL, run: + +```bash +cnspec providers install --url URL +``` + +For `URL`, substitute the location and name of the provider file. For example: + +```bash +cnspec providers install --url https://releases.mondoo.com/providers/os/9.0.7/os_9.0.7_linux_arm.tar.xz +``` + +### Manually update providers + +To update to the latest version of all installed providers, run: + +```bash +cnspec providers update +``` + +To update to the latest version of a specific provider, run: + +```bash +cnspec providers update NAME +``` + +For `NAME`, substitute the name of the provider (as shown in the table above). For example: + +```bash +cnspec providers update vsphere +``` + +### Remove providers + +To remove a provider, run: + +```bash +cnspec providers remove NAME +``` + +For `NAME`, substitute the name of the provider you want to uninstall. For example: + +```bash +cnspec providers remove terraform +``` + +--- diff --git a/docs/cnspec/cnspec-adv-install/registration-keys.md b/docs/cnspec/cnspec-adv-install/registration-keys.md new file mode 100644 index 000000000..b5c421e96 --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/registration-keys.md @@ -0,0 +1,93 @@ +--- +title: Register cnspec Using a Credentials File +sidebar_label: Register cnspec Using a Credentials File +sidebar_position: 8 +displayed_sidebar: cnspec +description: This page provides details on registering cnspec with Mondoo Platform using a credentials file. +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec must be registered with Mondoo Platform in order to download policies and report results. Typically you [register cnspec using a temporary token](registration.md). However, to ease automation, you can use a client credentials file instead. A common example is when you're integrating cnspec into your CI/CD pipeline. + +:::caution + +The credentials file includes a private key. Keep this credential safe! + +::: + +1. Open the [Mondoo Console](https://console.mondoo.com). + +2. [Navigate](/platform/start/navigate/) to the space where you want to view results. + +3. In the left navigation, under **Integrations**, select **Add New Integration**. + +4. Under **Supply Chain**, select **Generate Long-Lived Credentials**. + +5. Select the **GENERATE NEW CREDENTIALS** button. + +6. Copy the JSON string and save it in a .json file. + +## Validate registration + +The `cnspec status` command validates cnspec registration and ensures that communication with Mondoo Platform is successful. + +```bash title="Unregistered cnspec" +cnspec status +→ Time: 2023-01-13T16:12:44-08:00 +→ Version: 7.12.1 (API Version: 7) +→ API ConnectionConfig: https://us.api.mondoo.com +→ API Status: SERVING +→ API Time: 2023-01-14T00:12:45Z +→ API Version: 7 +→ Space: +x client is not registered +x could not connect to mondoo platform +``` + +```bash title="Correctly registered client" +cnspec status +→ Time: 2023-01-13T16:12:44-08:00 +→ Version: 7.12.1 (API Version: 7) +→ API ConnectionConfig: https://us.api.mondoo.com +→ API Status: SERVING +→ API Time: 2023-01-14T00:11:18Z +→ API Version: 7 +→ Space: //captain.api.mondoo.app/spaces/lunalectric-prod-eks +→ Client: //agents.api.mondoo.app/spaces/lunalectric-prod-eks/agents/1N9EGTzvlizF1n7vPtz21y7XFA3 +→ Service Account: //agents.api.mondoo.app/spaces/lunalectric-prod-eks/serviceaccounts/1N9EGTzvlizF1n7vPtz21y7XFA3 +→ client is registered +→ client authenticated successfully +``` + +```bash title="Invalid cnspec registration" +cnspec status +→ Time: 2023-01-13T16:17:50-08:00 +→ Version: 7.12.1 (API Version: 7) +→ API ConnectionConfig: https://us.api.mondoo.com +→ API Status: SERVING +→ API Time: 2023-01-14T00:17:50Z +→ API Version: 7 +→ Space: //captain.api.mondoo.app/spaces/lunalectric-prod-eks +→ Client: //agents.api.mondoo.app/spaces/lunalectric-prod-eks/agents/1N9EGTzvlizF1n7vPtz21y7XFA3 +→ Service Account: //agents.api.mondoo.app/spaces/lunalectric-prod-eks/serviceaccounts/1N9EGTzvlizF1n7vPtz21y7XFA3 +→ client is registered +x could not connect to mondoo platform error="rpc error: code = Unauthenticated desc = request permission unauthenticated"permission unauthenticated" +``` + +```bash title="No current system time (clock skew detected)" +cnspec status +→ Time: 2023-01-10T16:19:39-08:00 +→ Version: 7.12.1 (API Version: 7) +→ API ConnectionConfig: https://us.api.mondoo.com +→ API Status: SERVING +→ API Time: 2023-01-14T00:19:46Z +→ API Version: 7 +→ Space: //captain.api.mondoo.app/spaces/lunalectric-prod-eks +→ Client: //agents.api.mondoo.app/spaces/lunalectric-prod-eks/agents/1N9EGTzvlizF1n7vPtz21y7XFA3 +→ Service Account: //agents.api.mondoo.app/spaces/lunalectric-prod-eks/serviceaccounts/1N9EGTzvlizF1n7vPtz21y7XFA3 +→ client is registered +→ client authenticated successfully +! possible clock skew detected: 72h0m6.277868s +``` + +--- diff --git a/docs/cnspec/cnspec-adv-install/registration.md b/docs/cnspec/cnspec-adv-install/registration.md new file mode 100644 index 000000000..a92b13be5 --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/registration.md @@ -0,0 +1,199 @@ +--- +title: Register cnspec +sidebar_label: Register cnspec with Mondoo +sidebar_position: 7 +displayed_sidebar: cnspec +description: This page provides details on registering cnspec with Mondoo Platform. +image: /img/featured_img/mondoo-feature.jpg +--- + +If you install cnspec on an asset using a system package instead of Mondoo’s automated installation script, you must register the asset manually. + +:::note + +If you need to _automate_ registering cnspec, read [Registering cnspec Using a Credentials File](registration-keys.md). + +::: + +1. Log into the [Mondoo Console](https://console.mondoo.com). + +2. [Navigate](/platform/start/navigate/) to the [region](/docs/platform/start/organize/regions.md), [organization](/docs/platform/start/organize/organizations.md), and [space](/docs/platform/start/organize/spaces.md) where you want to see the new asset's scan results. + +3. In the left navigation, under **Integrations**, select **Add New Integration**. + +4. Select your operating system and copy the registration token. + +5. Open a terminal and run this command: + + ```bash title="Register cnspec" + cnspec login --token "" + ``` + + This command uses the token to create a service account that lets cnspec report results to Mondoo Platform. + +:::note IMPORTANT + +For cnspec to continuously transmit results to the Mondoo Platform, the Mondoo configuration must be stored in a specific location. To do this, use the cnspec `--config` parameter: + +- Windows: + `cnspec login --token "" --config "C:\ProgramData\Mondoo\mondoo.yml"` +- Linux: + `cnspec login --token "" --config "/etc/opt/mondoo/mondoo.yml"` + +::: + +:::info + +Communication with Mondoo Platform is encrypted using HTTPS. The payload is signed to ensure it has not been tampered with. + +::: + +## Validate registration + +The `cnspec status` command validates cnspec registration and ensures that communication with Mondoo Platform is successful. + +```bash title="Unregistered cnspec" +cnspec status +→ loaded configuration from /Users/stella/.config/mondoo/mondoo.yml using source default +→ Platform: macos +→ Version: 13.4.1 +→ Hostname: stella.home +→ IP: 192.168.254.21 +→ Time: 2024-02-27T12:07:41-08:00 +→ Version: 10.5.0 (API Version: 10) +→ Latest Version: 10.5.0 +→ Installed Providers: core | mock | os +→ API ConnectionConfig: https://api.edge.mondoo.com +→ API Status: SERVING +→ API Time: 2024-02-27T20:07:42Z +→ API Version: 10 +x client is not registered +x could not connect to mondoo platform +``` + +```bash title="Correctly registered client" +cnspec status +→ loaded configuration from /Users/mwezi/.config/mondoo/mondoo.yml using source default +→ Platform: macos +→ Version: 13.4.1 +→ Hostname: mwezi.home +→ IP: 192.168.254.21 +→ Time: 2024-02-27T12:07:41-08:00 +→ Version: 10.5.0 (API Version: 10) +→ Latest Version: 10.5.0 +→ Installed Providers: arista | aws | azure | core | mock | os +→ API ConnectionConfig: https://api.edge.mondoo.com +→ API Status: SERVING +→ API Time: 2024-02-27T20:07:42Z +→ API Version: 10 +→ Owner: //captain.api.mondoo.app/spaces/lunalectric-team-workstations +→ Client: //agents.api.mondoo.app/spaces/lunalectric-team-workstations/agents/2SARlZgQnFLAzj7jfiS1Fx2HBz8 +→ Service Account: //agents.api.mondoo.app/spaces/lunalectric-team-workstations/serviceaccounts/2bMtksUk9EjrI5MC3tTf6UmhNC2 +→ client is registered +→ client authenticated successfully +``` + +```bash title="Invalid cnspec registration" +cnspec status +→ loaded configuration from /Users/cosmo/.config/mondoo/mondoo.yml using source default +→ Platform: macos +→ Version: 13.4.1 +→ Hostname: cosmo.home +→ IP: 192.168.254.21 +→ Time: 2024-02-27T12:07:41-08:00 +→ Version: 10.5.0 (API Version: 10) +→ Latest Version: 10.5.0 +→ Installed Providers: arista | aws | azure | core | mock | os +→ API ConnectionConfig: https://api.edge.mondoo.com +→ API Status: SERVING +→ API Time: 2024-02-27T20:07:42Z +→ API Version: 10 +→ Owner: //captain.api.mondoo.app/spaces/lunalectric-team-workstations +→ Client: //agents.api.mondoo.app/spaces/lunalectric-team-workstations/agents/2SARlZgQnFLAzj7jfiS1Fx2HBz8 +→ Service Account: //agents.api.mondoo.app/spaces/lunalectric-team-workstations/serviceaccounts/2bMtksUk9EjrI5MC3tTf6UmhNC2 +→ client is registered +x could not connect to mondoo platform error="rpc error: code = Unauthenticated desc = request permission unauthenticated"permission unauthenticated" +``` + +```bash title="No current system time (clock skew detected)" +cnspec status +cnspec status +→ loaded configuration from /Users/cosmo/.config/mondoo/mondoo.yml using source default +→ Platform: macos +→ Version: 13.4.1 +→ Hostname: tsuki.home +→ IP: 192.168.254.21 +→ Time: 2024-02-27T12:07:41-08:00 +→ Version: 10.5.0 (API Version: 10) +→ Latest Version: 10.5.0 +→ Installed Providers: aws | azure | core | mock | os +→ API ConnectionConfig: https://api.edge.mondoo.com +→ API Status: SERVING +→ API Time: 2024-02-27T20:07:42Z +→ API Version: 10 +→ Owner: //captain.api.mondoo.app/spaces/lunalectric-team-workstations +→ Client: //agents.api.mondoo.app/spaces/lunalectric-team-workstations/agents/2SARlZgQnFLAzj7jfiS1Fx2HBz8 +→ Service Account: //agents.api.mondoo.app/spaces/lunalectric-team-workstations/serviceaccounts/2bMtksUk9EjrI5MC3tTf6UmhNC2 +→ client is registered +→ client authenticated successfully +! possible clock skew detected: 72h0m6.277868s +``` + +## Annotate (tag) an asset during registration + +Use Mondoo annotations to add metadata to an asset. Annotations are key-value pairs that let you identify, tag, or categorize your assets. Add whatever metadata you need. Some examples are: + +| Example key | Example value | +| ----------- | --------------------- | +| owner | cosmo@lunalectric.com | +| build | terraform | +| asset-tag | luna000262 | +| team | 01research | + +You can reuse key-value pairs or you can reuse only the key and give each asset a unique value. + +For example, suppose you're matching annotations to the physical asset tags on your company's workstations. You'd give every workstation in your infrastructure an `asset tag` key, but give each workstation a unique value to match the unique physical tags. + +As another example, you might assign the key `build` and the value `terraform` to every asset in your infrastructure that is built using Terraform. + +To include an annotation when you register an asset, include the `--annotation` flag in the `cnspec login` command and provide the key and value: + +```bash +cnspec login --token "PASTE_YOUR_TOKEN_HERE" --annotation KEY=VALUE --config "/etc/opt/mondoo/mondoo.yml" +``` + +For example: + +```bash +cnspec login --token 'eyJh9vLmFwcC9zcGFjZXMvdGhpcnN0eS1tZWl0bmVyLTU5OTIyNSIsInNwYWNlIjoiLy9jYXB0YWluLmFwaS5tb25kb28uYXBwL3NwYWNlcy90aGlyc3R5LW1laXRuZXItNTk5MjI1Iiwic3ViIjoiLy9jYXB0YWluLmFwaS5tb25kb28uYXBwL3VzZXJzLzI3ZkVlc2hzMHNyT0ZzdWExWTY0ajRoblFmWiJ9.le5xx5sp5Qb7WoK0vWUS1wpeSOgpWR8cNjCBYqFfImDxRh_m2KpMFx3MN4K4Gv2DeEKfj4S4wWWEsoDLkenBGhgF2cZlPG7kidguLqcNOFxoRRQoMUgX-78DH8sUaTpi' --annotation owner=cosmo@lunalectric.org --config "/etc/opt/mondoo/mondoo.yml" +``` + +:::tip + +You can also add an annotation when you scan an asset. Include the `--annotation` flag in the `cnspec scan` command and provide the key and value: + +```bash +cnspec scan local --annotation KEY=VALUE +``` + +For example: + +```bash +cnspec scan local --annotation asset-tag=luna0003644 +``` + +::: + +## Specify a proxy server for communication with Mondoo + +You can specify a proxy server for communication between cnspec and Mondoo Platform. This is useful if your default system proxy restricts communication, or if you need to monitor different types of traffic. + +1. Find the Mondoo configuration file: `/etc/opt/mondoo/mondoo.yml`. + +2. Add this line to `mondoo.yml`: + + ```yaml + api_proxy: https://1.1.1.1:8080 + ``` + +--- diff --git a/docs/cnspec/cnspec-adv-install/service.mdx b/docs/cnspec/cnspec-adv-install/service.mdx new file mode 100644 index 000000000..6621f10cd --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/service.mdx @@ -0,0 +1,447 @@ +--- +title: Run cnspec as a service +sidebar_label: Run cnspec as a service +sidebar_position: 9 +displayed_sidebar: cnspec +description: This page provides details on running cnspec as a service on supported hosts. +image: /img/featured_img/mondoo-feature.jpg +--- + +This document covers how to run cnspec as a service on hosts in your environment. + +## Configure cnspec to run as a service + +When configured as a service, cnspec continuously assesses hosts by running policies configured in Mondoo Platform. By default, every 60 minutes, cnspec service: + +1. Connects to your account in the platform + +2. Retrieves and validates the latest policies enabled for it. + +3. Scans the host. + +4. Reports scan results back to the platform. + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + +The installation places a systemd unit file at `/etc/systemd/system/cnspec.service`. However, it does not register or enable the service. + +:::info + +Before starting cnspec as a service, you should have already [registered the host](./registration.md) with your Mondoo Platform account. + +::: + +#### Enable and start cnspec as a service + +```bash title="1. Reload systemd daemon and load the cnspec.service unit file" +sudo systemctl daemon-reload +``` + +```bash title="2. Enable cnspec to run during startup" +sudo systemctl enable cnspec +``` + +```bash title="3. Start cnspec service" +sudo systemctl start cnspec +``` + +```bash title="4. Check the status of cnspec" +sudo systemctl status cnspec +``` + +#### cnspec service logging + +cnspec service writes log events to the system logs. You can use this command to tail cnspec service logs on Linux hosts: + +```bash title="Tail cnspec service logs" +sudo journalctl -u cnspec -f +``` + +The default log level is `info` but can be configured as defined in [cnspec Configuration options](#cnspec-configuration-options) below + + + + +When installed on Windows, the mondoo package automatically registers with the Service Control Manager in Windows, but sets the default **Startup Type** to **Manual** and does not start the service. + +![Windows Default Service](/img/platform/installation/windows-service-default.png) + +#### Running as a service + +Launch a PowerShell terminal as an administrator and run these commands: + +:::info + +Before starting cnspec as a service, you should have already [registered the host](./registration.md) with your Mondoo Platform account. + +::: + +```powershell title="1. Set mondoo service to run automatically at startup" +Set-Service -Name mondoo -StartupType Automatic +``` + +```powershell title="2. Start mondoo service" +Set-Service -Name mondoo -Status Running +``` + +```powershell title="3. Validate mondoo is running as a service" +Get-Service mondoo | Select-Object -Property Name, StartType, Status +``` + +![mondoo running as a service](/img/platform/installation/windows-service-running.png) + +#### Mondoo service logging + +Mondoo service writes logging events to the Windows Event Viewer Application logs. To view logs: + +![](/img/platform/installation/windows-event-viewer.png) + +1. Select the **Start Menu** and launch **Event Viewer** +2. Expand **Windows Logs** +3. Select **Application** to view application logs +4. Use **Find...** to search for "cnspec" + + + +If you installed cnspec using the PKG installer, a launchd service is created automatically. If you installed cnspec using Homebrew, you can manually create the service plist file at /Library/LaunchDaemons/com.mondoo.client.plist: + +```xml title="Create the com.mondoo.client.plist file" + + + + + Label + com.mondoo.client + ProgramArguments + + /path/to/cnspec + serve + -t + 60 + --config + /etc/opt/mondoo/mondoo.yml + + RunAtLoad + + + +``` + +You must replace "/path/to/cnspec" with the path to cnspec on your host. You can validate this by opening a terminal and running `which cnspec`. Also, ensure you specify the correct path to Mondoo Platform config ("/etc/opt/mondoo/mondoo.yml" in the example above), which can be validated by opening a terminal and running `cnspec status`. Additionally, you can adjust the scan frequency (60 minutes by default). + +```bash title="Load the Launchd Service" +sudo launchctl load /Library/LaunchDaemons/com.mondoo.client.plist +``` + +To start, stop or check the status of the service, use the _launchctl_ tool: + +```bash +$ sudo launchctl start com.mondoo.client +$ sudo launchctl list | grep cnspec +- 1 com.mondoo.client +``` + + + + +## cnspec serve + +In addition to leveraging the platform service management system, cnspec includes the `cnspec serve` command, which you can use on any supported platform (Linux, Windows, macOS) to continuously run assessments of hosts. + +:::info + +cnspec serve leverages the default configuration of the host if already [registered](./registration.md). + +::: + +### Set a custom scan interval + +Use the `--timer` flag to set a scan interval in minutes. The default is 60. For example, this runs a scan with `cnspec serve` every 15 minutes: + +```bash +cnspec serve --timer 15 +``` + +## cnspec configuration options + +cnspec configuration is stored on the host at this location: + +- **Linux** - `/etc/opt/mondoo/mondoo.yml` +- **Windows** - `C:\ProgramData\Mondoo\mondoo.yml` + +Common cnspec service configuration options: + +| Name | Description | +| -------------- | --------------------------------------------------------------------------- | +| `agent_mrn` | Agent Mondoo resource name, identifies the client | +| `api_endpoint` | The URL of Mondoo Platform (`https://us.api.mondoo.com` is the default) | +| `certificate` | Client's public certificate | +| `loglevel` | Service log level: error, warn, info, debug, trace (default is info) | +| `mrn` | Service Account Mondoo resource name, which identifies the service account | +| `private_key` | Client's private key used to sign requests sent to Mondoo Platform | +| `space_mrn` | Space Mondoo resource name, identifies the space that the client belongs to | +| `annotations` | Annotations that display in the Mondoo Console `condole.mondoo.com` | + +```yaml title=mondoo.yml +# service account mrn +mrn: //agents.api.mondoo.app/spaces/spacex/serviceaccounts/1utIs5XUQ8XayfB6yiQNTLOqPlD +# agent mrn +agent_mrn: //agents.api.mondoo.app/spaces/spacex/agents/1utIqsjg3YSAF8hMMIhg8tBsTPP +# space mrn +space_mrn: //captain.api.mondoo.app/spaces/spacex +# api endpoint +api_endpoint: https://us.api.mondoo.com +# pem-encoded certificate +certificate: | + -----BEGIN CERTIFICATE----- + ... + -----END CERTIFICATE----- +# pem-encoded private key +private_key: | + -----BEGIN PRIVATE KEY----- + ... + -----END PRIVATE KEY----- +# log level: error, warn, info, debug, trace +loglevel: info +# tags +annotations: + - key1: value1 + - key2: value2 +``` + +## cnspec inventory + +cnspec inventory configuration defines a list of targets for cnspec to scan. This example contains an ssh-based scan with annotations: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: cnspec-ssh-inventory + labels: + environment: production +spec: + assets: + # linux with password authentication + - id: linux-ssh-with-password + connections: + - host: 192.168.5.89 + type: ssh + credentials: + - type: password + user: mondoo + password: mondoo + annotations: + key: value +``` + +This example scans the local machine and all running containers: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - id: docker-container + connections: + - type: local + discover: + targets: + - "container" +``` + +This example scans the local machine and all container images: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - id: docker-container + connections: + - type: local + discover: + targets: + - "container-images" +``` + +This example scans the vSphere environment with embedded credentials: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - name: vsphere + connections: + - type: vsphere + host: 192.168.5.24 + credentials: + - type: password + user: mondoo-read@vsphere.local + password: test + discover: + targets: + - host-machines +``` + +This example scans the vSphere environment with extracted credentials and reference: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - name: vsphere + connections: + - type: vsphere + host: 192.168.5.24 + credentials: + - secret_id: my-secret + discover: + targets: + - host-machines + credentials: + my-secret: + type: password + user: mondoo-read@vsphere.local + password: test +``` + +This example scans the vSphere environment with credentials from HashiCorp Vault: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - name: + connections: + - type: vsphere + host: 192.168.5.24 + insecure: true + credentials: + - secret_id: vcenter/mondoo-read + discover: + targets: + - auto + annotations: + Owner: patrick@mondoo.com + vault: + name: cnspec-hashivault + type: hashicorp-vault + options: + url: http://127.0.0.1:8200 + token: XXXXXXXX +``` + +Example to scan a Microsoft 365 account: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - connections: + - type: ms365 + credentials: + - type: pkcs12 + private_key_path: "/Users/atomic111/Projects/presales/m365-scanning/certificate.combo.pem" + options: + client-id: c4b89770-5ed2-4367-b4f6-ff05ffcb3406 + organization: "" + sharepoint-url: "" + tenant-id: d9abc6fc-fd88-4480-a931-2f7939adbac2 + discover: + targets: + - auto +``` + +Example to scan an Azure tenant including all subscriptions: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - connections: + - type: azure + credentials: + - type: pkcs12 + private_key_path: "" + options: + client-id: 9f51cb-66c3-4gg9-b525-fbd717384d96 + lun: "0" + tenant-id: f115cf8c-a2d4-51ef-1234-56f7ed7e18ec + discover: + targets: + - auto +``` + +Example to scan a Google Workspace account: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - connections: + - type: google-workspace + credentials: + - type: json + secret: + options: + customer-id: D34dr1r + impersonated-user-email: user@lunalectric.com +``` + +To execute cnspec with the inventory file, run this command: + +```bash +cnquery scan --inventory-file ./inventory.yml +``` + +--- diff --git a/docs/cnspec/cnspec-adv-install/update.mdx b/docs/cnspec/cnspec-adv-install/update.mdx new file mode 100644 index 000000000..bea5def58 --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/update.mdx @@ -0,0 +1,59 @@ +--- +title: Update cnspec +sidebar_label: Update cnspec +sidebar_position: 10 +displayed_sidebar: cnspec +description: Upgrade cnspec to a new version and understand how versioning works +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec is a versioned binary. To identify the currently installed version of cnspec, run: + +``` +cnspec version +``` + +To learn about cnspec provider versioning, read [Manage cnspec Providers](/cnspec/cnspec-adv-install/providers/). + +## How cnspec versioning works + +Mondoo's versioning policy is _based on_ the semantic versioning standard. For example, in version 6.3.2, 6 is the major version, 3 is the minor version, and 2 is the patch. When we release a new version, we increment one of these three version components depending on the type of changes we introduce. + +### Breaking changes policy + +Major version releases of cnspec contain _soft-breaking_ changes. These may require you to update your policies, or automation scripts in order to avoid disruption, but you have a long time to make those updates. We provide advanced warning before we make these changes, and they don't become _hard-breaking_ changes until the next major release. + +## Update cnspec + +To update cnspec to the latest version, you can use your preferred package manager, such as Homebrew or Chocolatey, or simply re-run the installation script. + +:::tip + +Integrations that run on Mondoo Platform as well as the Kubernetes operator and the AWS Lambda-based integration, automatically update to the latest version; there's no need to manually update. + +::: + +### Update cnspec on Linux or macOS + +```bash +bash -c "$(curl -sSL https://install.mondoo.com/sh)" +``` + +### Update cnspec on Windows + +```powershell +Set-ExecutionPolicy Unrestricted -Scope Process -Force; +[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; +iex ((New-Object System.Net.WebClient).DownloadString('https://install.mondoo.com/ps1/cnspec')); +Install-Mondoo -Product cnspec; +``` + +## Learn more + +- For installation and deployment options, read [Extended Installation Options for cnspec](/cnspec/cnspec-adv-install/overview/). + +- To learn about cnspec provider versioning, read [Manage cnspec Providers](/cnspec/cnspec-adv-install/providers/). + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/cnspec/cnspec-adv-install/windows.mdx b/docs/cnspec/cnspec-adv-install/windows.mdx new file mode 100644 index 000000000..e9f06511d --- /dev/null +++ b/docs/cnspec/cnspec-adv-install/windows.mdx @@ -0,0 +1,222 @@ +--- +title: Install cnspec on Windows +sidebar_label: Windows +sidebar_position: 5 +displayed_sidebar: cnspec +description: This page provides details on installing and configuring cnspec on Windows. +image: /img/featured_img/mondoo-feature.jpg +--- + +:::info +The msi package `REGISTRATIONTOKEN` argument allows you to pass in a temporary registration token to the MSI installer. If the argument is provided, cnspec will be registered automatically during installation. +::: + +## Prerequisites + +Before you integrate Microsoft Windows with Mondoo: + +- Confirm access to the internet using PowerShell or CMD Terminal + +- Confirm access to Mondoo systems using PowerShell or CMD Terminal + +- Synchronize your system clock + +import Partial from "./_providers-note.mdx"; + +{" "} + +### Access to the internet using PowerShell or CMD Terminal + +:::info + +If your organization's [region](/platform/start/organize/regions/) (in the Mondoo Console) is US, you must be able to access to us.api.mondoo.com. If your region is EU, you must be able to access to eu.api.mondoo.com. + +::: + +```powershell title="Check internet connectivity" +# from PowerShell +Test-NetConnection mondoo.com -Port 443 + +# from CMD terminal (activate telnet client if not already activated) +Telnet google.com 443 +``` + +If you have a proxy setting in your environment, you _might_ need to configure it in the PowerShell and CMD Terminal: + +``` +netsh winhttp show proxy +``` + +### Systems access + +Be sure you have access to these systems from PowerShell or CMD Terminal: + +```powershell title="Check the Internet connectivity" +install.mondoo.com Port 443/https +releases.mondoo.com Port 443/https +eu.api.mondoo.com Port 443/https +us.api.mondoo.com Port 443/https +registry.api.mondoo.com Port 443/https +``` + +To check connectivity, follow the approach in the previous section. + +### System clock sync + +Make sure your system clock is in sync with your NTP or internet time: + +``` +w32tm /query /status +w32tm /query /peers +w32tm /resync +``` + +## Install cnspec on Windows + +There are two ways of installing Mondoo on Windows: + +### Option A: Install using the automated install script in PowerShell + +Make sure TLS 1.2 is enabled (it's enabled by default in modern Windows systems): + +```powershell title="TLS version" +# To check +[Net.ServicePointManager]::SecurityProtocol + +# If it is not enabled, enable it: +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +``` + +Install cnspec by downloading a PowerShell script to memory and running it: + +If you wish later the scan happens by loading the configured Policy from your Mondoo Console space, you need to register by having a Registration Token which will be given to you during Integration from https://console.mondoo.com/. + +Without RegistrationToken, the policies will be automatically loaded from our Registry (https://mondoo.com/registry). It is only included the Open Source policies. + +```powershell title="Automated installation script" +# $MONDOO_REGISTRATION_TOKEN="YOUR_TOKEN_HERE" +iex ((New-Object System.Net.WebClient).DownloadString('https://install.mondoo.com/ps1')) +Install-Mondoo # -RegistrationToken $MONDOO_REGISTRATION_TOKEN +``` + +The installation creates one or two directories: + +- The `C:\Program Files\Mondoo` directory contains binaries. + +```` + +- The `C:\ProgramData\Mondoo` directory is only created if the registration token is used. It contains the `mondoo.yml` configuration file. + + +## Option B: Install manually (Mondoo package including cnspec) + +1. Download the [Mondoo Windows installer](https://releases.mondoo.com/mondoo/latest). +2. Execute the installer as administrator. + + Example: + +```powershell title="manual installation" +# PowerShell +Start-Process -Wait msiexec -ArgumentList ' /i mondoo_8.9.1_windows_amd64.msi' + +# CMD Terminal +start /wait msiexec /i mondoo_8.9.1_windows_amd64.msi +```` + +3. Follow the steps and agree to the license agreement. +4. (Optional) Register cnspec with your Mondoo Platform account. + +If you enter a registration token during the installation wizard, cnspec registers automatically. + +You can also register by token later if needed: + +```powershell title="CMD Terminal" +start /wait msiexec /i mondoo_8.9.1_windows_amd64.msi REGISTRATIONTOKEN="XXXXXXXXXXXXXXXXX" +``` + +## Test and troubleshoot + +Make sure the service is running and that it runs automatically at startup: + +```powershell title="PowerShell" +Set-Service -Name mondoo -Status Running -StartupType Automatic +``` + +Validate that the service is running: + +``` +# PowerShell +Get-Service mondoo + +# CMD terminal +sc query mondoo +``` + +Check the cnspec status: + +``` +cnspec status +``` + +If cnspec is already registered, you should see this line in the status: + +``` +loaded configuration from C:\ProgramData\Mondoo\mondoo.yml using source default +``` + +The `mondoo.yaml` file has the certificate, private key, and the api endpoint. + +Scan the local system: + +``` +cnspec scan local +``` + +Here the cnspec will automatically load the policies from Mondoo Console spaces provided you have registered the mondoo with the Token. Otherwise, the policies will be loaded from our Registry. + +You can also force the cnspec to load the policies only from registry: + +``` +cnspec scan local --incognito +``` + +Delete and reinstall: + +In some situations, you might need to remove the services and install again. + +``` +sc stop mondoo +sc delete mondoo +rmdir "C:\Program Files\Mondoo" +rmdir "C:\ProgramData\Mondoo" +``` + +## Proxy configuration + +cnspec also works behind a forward proxy, such as Squid. + +```powershell title="Set https_proxy environment variable" +$env:https_proxy = ":" +``` + +To set the proxy configuration for cnspec permanently, add the proxy configuration during cnspec registration: + +```powershell title="Set Proxy via cnspec command" +cnspec login --token 'YOUR_TOKEN_HERE' --api-proxy 'http://1.1.1.1' --config 'C:\ProgramData\Mondoo\mondoo.yml' +``` + +Or add it to the cnspec configuration directly, follow these steps: + +1. Navigate to the cnspec configuration file under `C:\ProgramData\Mondoo\mondoo.yml` +2. Add this line: + +```yaml title="Set Proxy via cnspec configuration file" +api_proxy: http://1.1.1.1 +``` + +## Learn more + +- [Register cnspec](/cnspec/cnspec-adv-install/registration) +- [Run cnspec as a service](/cnspec/cnspec-adv-install/service) + +--- diff --git a/docs/cnspec/cnspec-aws/README.mdx b/docs/cnspec/cnspec-aws/README.mdx new file mode 100644 index 000000000..cd920caca --- /dev/null +++ b/docs/cnspec/cnspec-aws/README.mdx @@ -0,0 +1,46 @@ +--- +title: Assess AWS Security with cnspec +id: cnspec-aws-intro +sidebar_label: Get Started +displayed_sidebar: cnspec +sidebar_position: 1 +description: Learn how cnspec can assess the security of your AWS infrastructure +image: /img/featured_img/mondoo-aws.jpg +--- + +cnspec assesses your full AWS environment for misconfigurations that put your organization at risk. You can scan your AWS account for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +cnspec can test any aspect of your AWS configuration. For a list of AWS resources you can test, read [Mondoo Amazon Web Services (AWS) Resource Pack Reference](/mql/resources/aws-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnspec with your AWS environment + +### Requirements + +To analyze and explore your AWS environment with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/). +- [An AWS account](https://aws.amazon.com/free/). +- Your AWS credentials. To learn about creating a new access key pair, read [Creating new access keys for an IAM user](https://docs.aws.amazon.com/keyspaces/latest/devguide/access.credentials.html#create.keypair) in the AWS documentation. +- Your `AWS_REGION` configured. To learn how to set your region, read [How to set environment variables](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set) in the AWS documentation. + +### Verify with a quick AWS check + +To quickly confirm that cnspec has access to your AWS environment, run this test from your terminal: + +```bash +cnspec run aws -c 'aws.account.id!="foo"' +``` + +It asserts that your AWS account ID value is not `foo`. + +cnspec returns `[ok]` to indicate that the test passed, and includes the actual value of the AWS account ID: + +```coffee +[ok] value: "123456789000" +``` + +## Next step + +You've successfully used cnspec to run your first check against your AWS account. Now you're ready to [assess your AWS environment.](/cnspec/cnspec-aws/cnspec-aws-account) + +--- diff --git a/docs/cnspec/cnspec-aws/_cnspec-aws-codebuild.mdx b/docs/cnspec/cnspec-aws/_cnspec-aws-codebuild.mdx new file mode 100644 index 000000000..74638082b --- /dev/null +++ b/docs/cnspec/cnspec-aws/_cnspec-aws-codebuild.mdx @@ -0,0 +1,13 @@ +--- +title: write me codebuild +id: cnspec-aws-codebuild +sidebar_label: write me codebuild +displayed_sidebar: cnspec +sidebar_position: 5 +description: write me codebuild +image: /img/featured_img/mondoo-aws.jpg +--- + +Write me! + +--- diff --git a/docs/cnspec/cnspec-aws/cnspec-aws-account.mdx b/docs/cnspec/cnspec-aws/cnspec-aws-account.mdx new file mode 100644 index 000000000..83472d9ce --- /dev/null +++ b/docs/cnspec/cnspec-aws/cnspec-aws-account.mdx @@ -0,0 +1,194 @@ +--- +title: Assess an AWS Account +id: cnspec-aws-account +sidebar_label: Assess an AWS Account +displayed_sidebar: cnspec +sidebar_position: 20 +description: Assess the security and compliance of an AWS account configuration +image: /img/featured_img/mondoo-aws.jpg +--- + +Once you've ensured that [cnspec can access your AWS environment](/cnspec/cnspec-aws/), you can begin testing. The method you choose depends on your goals: + +- For widescale assessment of your AWS infrastructure, scan using policy bundles. These collections of tests work together to present a broad picture of your AWS security posture. +- To run ad hoc checks against your AWS environment, use cnspec's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnspec and learning MQL. + +## Assess AWS security with policy-based scanning + +The AWS Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental AWS security best practices. It checks for misconfigurations across your entire AWS infrastructure. + +To scan using the AWS Security by Mondoo policy, run: + +```bash +cnspec scan aws +``` + +cnspec finds the default policy for AWS and runs a scan based on that policy. It returns a report summarizing the scan results: + +```coffee +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 +→ connecting to asset AWS Account lunalectric-management (177043759486) (api) + +██████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 60% AWS Account lunalectric-management (177043759486) + + +Asset: AWS Account lunalectric-management (177043759486) +======================================================== +Checks: +✕ Fail: Ensure IAM Users Receive Permissions Only Through Groups +✕ Fail: D 20 Checks whether the instance metadata version is configured with IMDSv2 (http tokens required) +✓ Pass: Ensure MFA is enabled for the "root user" account +✕ Fail: D 20 Ensure the default security group of every VPC restricts all traffic +✕ Fail: B 70 Checks whether the active access keys are rotated within the number of days specified in maxAccessKeyAge (default 90) +✓ Pass: Ensure there is only one active access key available for any single IAM user +✓ Pass: Ensure no root user account access key exists +✓ Pass: Checks if the required S3 public access block settings are configured from the account level +✕ Fail: B 70 Ensure VPC flow logging is enabled in all VPCs +! Error: Checks whether the account password policy for IAM users meets the specified requirements +✕ Fail: F 5 Checks whether the AWS IAM users have multi-factor authentication (MFA) enabled +✓ Pass: Checks if Amazon Simple Storage Service (S3) has bucket-level public access restrictions at the bucket level. +✕ Fail: D 20 Ensures no instances have a public IP +✕ Fail: B 70 Ensure EBS volume encryption is enabled by default +✓ Pass: Checks whether IAM groups have at least one IAM user + + +Summary (1 assets) +================== + +Target: AWS Account lunalectric-management (177043759486) +Score: F 0/100 (100% completed) +✓ Passed: ██████ 40% (6) +✕ Failed: ████████ 53% (8) +! Errors: █ 7% (1) +» Skipped: 0% (0) +``` + +:::tip + +To examine scan results in detail, run: + +```bash +cnspec scan aws -o full +``` + +::: + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +### Scan using an assumed role + +To assess AWS resources that you don't normally have access to, you can use an [assumed role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html): + +```bash +cnspec scan aws --option role-arn=ROLEARN +``` + +For `ROLEARN`, substitute the role's Amazon resource name (ARN). + +cnspec supports assumed roles with [external IDs](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html): + +```bash +cnspec scan aws --option role-arn=ROLEARN --option external-id=EXTERNALID +``` + +For `ROLEARN`, substitute the role's Amazon resource name (ARN). For `EXTERNALID`, substitute the external ID for the assumed role. + +## Test AWS with the cnspec shell + +The cnspec shell is handy for quick checks and tests, or for developing your MQL skills. Its auto-complete and help features guide you in writing checks. + +To launch a shell into your AWS environment, enter: + +```bash +cnspec shell aws +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what AWS resources you can test. This command lists all the AWS resources: + +```bash +help aws +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the AWS IAM resources you can test: + +```bash +help aws.iam +``` + +From the resulting list, you can drill down even further. You can also learn about available AWS resources in the [Mondoo Amazon Web Services (AWS) Resource Pack Reference](/mql/resources/aws-pack/). + +### Run tests in the cnspec shell + +Now that you know how to discover what's possible with cnspec, let's run some actual tests in the shell. + +#### Assess CloudTrail encryption + +This test assures that every CloudTrail has a KMS key: + +```bash +aws.cloudtrail.trails.all(kmsKey != null) +``` + +If the test passes (all CloudTrails have KMS keys) then cnspec returns `ok`: + +```coffee +[ok] value: true +``` + +If the test fails, (one or more CloudTrails do not have KMS keys) then cnspec provides details about the failure: + +```coffee +[failed] [].all() + actual: [ + 0: aws.cloudtrail.trail id = arn:aws:cloudtrail:us-east-1:921877552404:trail/s3-events + ] +``` + +The sample results above show that the account's single CloudTrail is not using encryption. + +#### Assess IAM + +When we explored the help for `aws.iam`, we saw that cnspec can run checks against your account's IAM credential report. For example, this test asserts that all users have MFA enabled: + +```bash +aws.iam.credentialReport.all ( mfaActive == true ) +``` + +If one or more users aren't using MFA, cnspec lists them: + +```coffee +[failed] [].all() + actual: [ + 0: aws.iam.usercredentialreportentry id = aws/iam/credentialreport/arn:aws:iam::921000052404:user/abel + 1: aws.iam.usercredentialreportentry id = aws/iam/credentialreport/arn:aws:iam::921000052404:user/coco + 2: aws.iam.usercredentialreportentry id = aws/iam/credentialreport/arn:aws:iam::921000052404:user/ecs-deploy + 3: aws.iam.usercredentialreportentry id = aws/iam/credentialreport/arn:aws:iam::921000052404:user/gitlab-migration-user + ] +``` + +#### Specify fields to include in results + +If you're interested in only some details, specify the fields you want in braces. For example, this is the same test as above, but also asks for each user's ARN, when they last changed their password, and whether they have MFA enabled: + +```bash +aws.iam.credentialReport { mfaActive == true arn passwordLastChanged mfaActive } +``` + +### Exit the cnspec shell + +To exit the cnspec shell, either press `Ctrl + D` or type `exit`. + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- Explore the complete [Mondoo AWS Resource Pack Reference](/mql/resources/aws-pack/). + +## Next step + +Now that you've scanned your AWS environment and run tests using the cnquery shell, you're ready to dive deeper and [test your EC2 instances](/cnspec/cnspec-aws/cnspec-aws-ec2/). + +--- diff --git a/docs/cnspec/cnspec-aws/cnspec-aws-cloudshell.md b/docs/cnspec/cnspec-aws/cnspec-aws-cloudshell.md new file mode 100644 index 000000000..a11006532 --- /dev/null +++ b/docs/cnspec/cnspec-aws/cnspec-aws-cloudshell.md @@ -0,0 +1,99 @@ +--- +title: Assess AWS Security from AWS CloudShell +description: Learn how to install and configure cnspec in AWS CloudShell to run security scans against your AWS account. +displayed_sidebar: cnspec +id: cnspec-aws-cloudshell +sidebar_label: Assess AWS from CloudShell +sidebar_position: 50 +image: /img/featured_img/mondoo-aws.jpg +--- + +If you prefer to work in AWS's browser-based CloudShell, you don't have to switch to a different interface to scan your AWS infrastructure. You can interact with cnspec within CloudShell. + +To learn about CloudShell, read the [AWS documentation](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html). + +## Set up cnspec in CloudShell + +To set up cnspec in CloudShell, [sign up for a free Mondoo account](/platform/start/plat-start-acct). In the Mondoo Console you'll find a guide that helps you install cnspec in AWS CloudShell and run your first security assessment of AWS. + +### Step 1: Launch the Mondoo AWS CloudShell Setup Guide + +![Mondoo AWS Guide - Start](/img/platform/tutorials/aws-cloudshell/aws-guide-start.png) + +1. Open the AWS Guide. + +2. Select **Let's do this!** + +![Mondoo AWS Guide - Choose AWS](/img/cnspec/aws/cs-choose-aws.png) + +3. On the **Choose your cloud service** step, select **Amazon AWS** and choose **Next step**. + +### Step 2: Launch CloudShell + +![Mondoo AWS Guide - Open CloudShell](/img/cnspec/aws/cs-open-cs.png) + +1. Select **Open CloudShell** to open AWS CloudShell in a new browser tab. + +2. Once CloudShell finishes launching, return to the browser tab containing the **Mondoo AWS Guide**. + +3. Select **Next step**. + +### Step 3: Install cnspec in CloudShell and register with Mondoo Platform + +![AWS Setup Guide - Copy Token](/img/cnspec/aws/cs-token.png) + +1. This next step contains a temporary registration token and a one-line install script to install cnspec in CloudShell. Select the copy icon in the command window, and then select **Continue**. + +2. Return to the browser tab with AWS CloudShell and paste the contents of the clipboard with the installation command. + +3. When you paste the command, AWS CloudShell shows a warning about external code. Select **Paste** + +4. Press **Enter** to install cnspec. + +:::info + +The cnspec install script is open source. You can find it in Mondoo's [GitHub organization](https://github.com/mondoohq/installer) + +::: + +## Step 4: Scan + +The `cnspec scan` command checks your assets against policies. `cnspec scan aws` executes policies against your aws account. + +:::tip + +cnspec provides a `--help` command. For instance, `cnspec scan --help` returns detailed information on using cnspec to scan various assets. + +::: + +### How AWS scans work + +When an AWS CloudShell session starts, cnspec relies on your AWS credentials (which you used to log into the AWS console) to run policies against the account. This pre-authentication lets you skip configuring credentials for AWS services with cnspec. + +By running `cnspec scan aws`, cnspec authenticates with Mondoo Platform to find the policies configured for AWS in your account. After syncing policies, cnspec authenticates against the AWS API using the configured credentials in AWS CloudShell and then runs the policies against your account. + +:::info + +Mondoo Platform comes with a default set of policies activated in the registry to get you started. + +::: + +### Scan AWS from CloudShell + +1. Open the Mondoo AWS Setup Guide where you left off in your browser and copy the `cnspec scan aws` command to your clipboard. + +```bash +cnspec scan aws +``` + +2. Paste the `cnspec scan aws` command into AWS CloudShell and press **Enter** to start the scan. + +The scan takes only a few minutes to complete. + +After the scan completes, cnspec returns the results to `STDOUT`and also sends the scan results to the Mondoo Platform. To view results: + +1. Return to the browser tab containing the **Mondoo AWS Guide** and select **Next Step**. Mondoo Platform locates the results from the AWS scan. + +2. Select **Explore Mondoo** to see the results from the scan. + +--- diff --git a/docs/cnspec/cnspec-aws/cnspec-aws-ec2.mdx b/docs/cnspec/cnspec-aws/cnspec-aws-ec2.mdx new file mode 100644 index 000000000..7dbce9201 --- /dev/null +++ b/docs/cnspec/cnspec-aws/cnspec-aws-ec2.mdx @@ -0,0 +1,72 @@ +--- +title: Assess an AWS EC2 Instance +id: cnspec-aws-ec2 +sidebar_label: Assess an AWS EC2 Instance +displayed_sidebar: cnspec +sidebar_position: 30 +description: Assess the security and compliance of an AWS EC2 instance +image: /img/featured_img/mondoo-aws.jpg +--- + +Now that you have an introduction to [assessing your AWS security](/cnspec/cnspec-aws/cnspec-aws-account/) with cnspec, let's dive deeper and test EC2 instances. + +We'll continue working in the cnspec shell, which makes running individual queries easy. If it's not already open, enter `cnspec shell aws` in your terminal. To learn about accessing your AWS account with cnspec, read [Assess AWS Security](/cnspec/cnspec-aws/). + +## EC2 resources + +cnspec lets you test any configuration detail of your EC2 instances. To discover all the resources and fields you can query, read [aws.ec2](/mql/resources/aws-pack/aws.ec2/). You can also use the `help` command in the shell: + +```bash +help aws.ec2 +``` + +## Run tests on EC2 instances + +### No public IPs + +This test assesses whether any running EC2 instances have a public IP: + +```bash +aws.ec2.instances.all( state = "running" && publicIp != "" ) +``` + +If the test passes (no running instances have a public IP) then cnspec returns `ok`: + +```coffee +[ok] value: true` +``` + +If the test fails, (one or more running instances have a public IP) then cnspec provides details about the failure: + +```coffee +[failed] [].all() + actual: [ + 0: aws.ec2.instance id = arn:aws:ec2:us-east-1:177043751234:instance/i-0fde6c8e0210b7i26 + 1: aws.ec2.instance id = arn:aws:ec2:us-east-1:177043751234:instance/i-01d9ac4d064722qa4 + ] +``` + +### More examples + +This test verifies that all EC2 instances require HTTP tokens: + +``` +aws.ec2.instances.all(httpTokens == "required") +``` + +This test ensures that no EBS snapshots are publicly restorable: + +```bash +aws.ec2.snapshots.all(createVolumePermission.none(_['Group'] == "all" )) +``` + +## Learn more about testing EC2 instances + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the AWS resources and fields you can query, read [aws.ec2](/mql/resources/aws-pack/aws.ec2/). + +## Next step + +To discover more of cnspec's AWS capabilities, [test your EKS clusters](/cnspec/cnspec-aws/cnspec-aws-eks/). + +--- diff --git a/docs/cnspec/cnspec-aws/cnspec-aws-eks.mdx b/docs/cnspec/cnspec-aws/cnspec-aws-eks.mdx new file mode 100644 index 000000000..5f71bddee --- /dev/null +++ b/docs/cnspec/cnspec-aws/cnspec-aws-eks.mdx @@ -0,0 +1,53 @@ +--- +title: Assess an AWS EKS Cluster +id: cnspec-aws-eks +sidebar_label: Assess an AWS EKS Cluster +displayed_sidebar: cnspec +sidebar_position: 40 +description: Assess the security and compliance of an AWS EKS cluster +image: /img/featured_img/mondoo-aws.jpg +--- + +Now that you have an introduction to [assessing your AWS account](/cnspec/cnspec-aws/cnspec-aws-account/) with cnspec and have tried an [EC2 test](/cnspec/cnspec-aws/cnspec-aws-ec2), let's dive deeper and test EKS clusters. + +We'll continue working in the cnspec shell, which makes running individual queries easy. If it's not already open, enter `cnspec shell aws` in your terminal. To learn about accessing your AWS account with cnspec, read [Assess AWS Security](/cnspec/cnspec-aws/). + +## EKS resources + +cnspec provides answers to any question about your EKS clusters. To discover all the resources and fields you can query, read [aws.eks](/mql/resources/aws-pack/aws.eks/). You can also use the `help` command in the shell: + +```bash +help aws.eks +``` + +## Run a simple test on EKS clusters + +This test ensures that all EKS clusters use encryption: + +```bash +aws.eks.clusters.all( encryptionConfig != null ) +``` + +If the test passes (all EKS clusters use encryption) then cnspec returns `ok`: + +```coffee +[ok] value: true` +``` + +If the test fails (one or more EKS clusters do not use encryption) then cnspec provides details about the failure: + +```coffee +[failed] [].all() + actual: [ + 0: aws.ec2.instance id = arn:aws:ec2:us-east-1:177043751234:instance/i-0fde6c8e0210b7i26 + 1: aws.ec2.instance id = arn:aws:ec2:us-east-1:177043751234:instance/i-01d9ac4d064722qa4 + ] +``` + +## Learn more about querying EKS clusters + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the AWS resources and fields you can query, read the [Mondoo Amazon Web Services (AWS) Resource Pack Reference](/mql/resources/aws-pack/). +- For a list of all the Kubernetes resources and fields you can query, read the [Mondoo Kubernetes (K8s) Resource Pack Reference](/mql/resources/k8s-pack/). + +--- diff --git a/docs/cnspec/cnspec-aws/cnspec-aws-packer.mdx b/docs/cnspec/cnspec-aws/cnspec-aws-packer.mdx new file mode 100644 index 000000000..072e5094a --- /dev/null +++ b/docs/cnspec/cnspec-aws/cnspec-aws-packer.mdx @@ -0,0 +1,309 @@ +--- +title: Build Secure AMIs with cnspec and HashiCorp Packer +id: cnspec-aws-packer +sidebar_label: Build Secure AMIs with Packer +displayed_sidebar: cnspec +sidebar_position: 60 +description: Learn how to build secure Amazon AMIs with HashiCorp Packer and cnspec +image: /img/featured_img/mondoo-aws.jpg +--- + +You can run security scans during HashiCorp Packer builds using [Packer plugin cnspec by Mondoo](https://github.com/mondoohq/packer-plugin-cnspec). This tutorial includes instructions for using the plugin both with and without an account on Mondoo Platform. + +:::caution + +This tutorial provisions resources that qualify under the AWS Free Tier. If your account doesn't qualify under the AWS Free Tier, Mondoo is not responsible for charges that you incur. + +::: + +### Prerequisites + +Before you begin, be sure you have: + +- An [AWS Account](https://aws.amazon.com/free/) +- The [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) installed and configured +- The latest [HashiCorp Packer](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) version installed + +## Packer plugin cnspec by Mondoo + +[Packer plugin cnspec by Mondoo](https://github.com/mondoohq/packer-plugin-cnspec) scans Linux and Windows [HashiCorp Packer](https://www.packer.io) builds for vulnerabilities and security misconfigurations. The plugin is designed to work with any of the supported Packer builders, including containers. + +### Plugin modes + +Packer plugin cnspec is designed to work in one of two modes: + +- **Unregistered** - In unregistered mode, the plugin works without being registered to Mondoo Platform, and is designed to provide baseline security scanning with minimal configuration. The plugin runs either the [Linux Security by Mondoo](https://github.com/mondoohq/cnspec-policies/blob/main/core/mondoo-linux-security.mql.yaml) policy on Linux builds, or the [Windows Security by Mondoo](https://github.com/mondoohq/cnspec-policies/blob/main/core/mondoo-windows-security.mql.yaml) policy on Windows builds. Each of these policies provides security hardening checks based off of industry standards for Linux and Windows. Scan results are shown in STDOUT during the Packer run. +- **Registered** - In registered mode, the plugin is registered to your account in Mondoo Platform using a service account. Registered mode allows you to configure and customize any of the policies in Mondoo Platform including CIS benchmarks and more. Scan results are shown in STDOUT and sent back to Mondoo Platform for your records. + +:::info + +To scan for vulnerabilities, you must register cnspec with Mondoo Platform. [Sign up for a free account](https://mondoo.com/pricing) today. + +::: + +### AWS authentication + +Before you can run Packer, you must configure AWS credentials with appropriate permissions to build AMIs. For more information see [Configuring the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) in the AWS documentation. + +For a full list of IAM permissions required to run the amazon-ebs builder, refer to the [Packer Amazon AMI Builder documentation](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon#authentication#authentication). + +:::tip +If you don't have access to IAM user credentials, use another authentication method described in the [Packer Amazon AMI Builder documentation](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon#authentication#authentication). +::: + +### Plugin configuration + +Packer plugin cnspec provides this configuration: + +- `score_threshold` - This configuration sets an `int` score threshold for security scans. If the scan produces a score that falls below the threshold, the build will fail. +- `on_failure = "continue"` - This configuration ensures that the Packer build will not fail even if the scan produces a score that falls below the `score_threshold`. +- `sudo` - Some of the security configuration checks require elevated permissions to scan a given resource such as the `sshd_config`. Setting the `sudo` option to `active = true` configures the plugin to run in `sudo` mode. +- `asset_name` - Override the asset name on Mondoo Platform. This configuration is only used in registered mode. +- `annotations` - Custom annotations can be applied to Packer build assets to provide additional metadata for asset tracking. This configuration is only used in registered mode. + +### Register with Mondoo Platform + +To configure the plugin to work in registered mode, you must first create a Base64-encoded service account. If you do not wish to use custom policies and store results on Mondoo Platform you can skip this step. + +To create a Base64-encoded service account: + +1. Navigate to the space you want to create a service account in. +2. Select **Settings** followed by **Service Accounts**. +3. Select **ADD ACCOUNT**. +4. Check the **Base64-encoded** box to Base64-encode the credentials. +5. Select **GENERATE NEW CREDENTIALS**. +6. Copy the Base64-encoded credentials to the clipboard. +7. Open a terminal and run: + +```bash +export MONDOO_CONFIG_BASE64= +``` + +## Run Packer + +With Packer configured, you are ready to run your first build. + +### Amazon Linux 2 template + +Create a new directory named `mondoo_packer`, and change to that directory. + +```bash +mkdir mondoo_packer +cd mondoo_packer +``` + +Create a new file called `aws-amazon2.pkr.hcl`, and then copy/paste this code snippet into that file. + +```bash +packer { + required_plugins { + amazon = { + version = ">= 1.1.0" + source = "github.com/hashicorp/amazon" + } + cnspec = { + version = ">= 6.1.3" + source = "github.com/mondoohq/cnspec" + } + } +} + +variable "aws_region" { + default = "us-east-1" + type = string +} + +variable "image_prefix" { + type = string + description = "Prefix to be applied to image name" + default = "cnspec-tested-amazon-linux-2" +} + +locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } + +source "amazon-ebs" "amazon2" { + ami_name = "${var.image_prefix}-${local.timestamp}" + instance_type = "t2.micro" + region = var.aws_region + source_ami_filter { + filters = { + name = "amzn2-ami-kernel-5.*-x86_64-gp2" + root-device-type = "ebs" + virtualization-type = "hvm" + } + most_recent = true + owners = ["137112412989"] + } + ssh_username = "ec2-user" + tags = { + Base_AMI_Name = "{{ .SourceAMIName }}" + Name = "${var.image_prefix}-${local.timestamp}" + Source_AMI = "{{ .SourceAMI }}" + Creation_Date = "{{ .SourceAMICreationDate }}" + } +} + +build { + name = "${var.image_prefix}-${local.timestamp}" + + sources = [ + "source.amazon-ebs.amazon2" + ] + + provisioner "shell" { + inline = [ + "sudo hostnamectl set-hostname ${var.image_prefix}-${local.timestamp}", + "sudo yum update -y", + "sudo yum upgrade -y"] + } + + provisioner "cnspec" { + score_threshold = 80 + on_failure = "continue" + sudo { + active = true + } + } +} +``` + +This is a complete Packer template that you will use to build an AWS Amazon 2 Linux AMI in the `us-east-1` region. In these sections, you will review each block of this template in more detail. + +### Configure template variables + +The template provides a `variables` section used to configure the builds. + +:::info + +To learn about the various options to override variables set in the Packer template, see [Setting Variables](https://developer.hashicorp.com/packer/docs/templates/legacy_json_templates/user-variables#setting-variables) in the HashiCorp Packer documentation. + +::: + +**AWS region** + +When building AMIs, you must specify which region to build the AMI in. The default region for the template is `us-east-1`: + +```bash +variable "aws_region" { + default = "us-east-1" + type = string +} +``` + +:::tip + +Use the optional [`ami_regions`](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon#authentication/ebs#ami_regions) to configure a list of regions to copy the AMI to. Tags and attributes are copied along with the AMI. + +::: + +**Image prefix** + +By default the template will create the AMI using a default naming prefix of `cnspec-tested-amazon-linux-2`. You can override this with the `image_prefix` variable: + +```bash +variable "image_prefix" { + type = string + description = "Prefix to be applied to image name" + default = "cnspec-tested-amazon-linux-2" +} +``` + +### Initialize the Packer configuration + +Initialize your Packer configuration. + +```bash +packer init aws-amazon2.pkr.hcl +``` + +Executing `packer init` instructs Packer to download the plugins defined in the `required_plugins` section in the template. Plugins are typically downloaded to the `~/.packer.d/plugins`directory. You can run `packer init` as many times as you'd like. If you already have the plugins you need, Packer exits without output. + +### Build the AMI + +Build the image with the `packer build aws-amazon2.pkr.hcl` command. Packer prints output similar to what is shown below. + +```bash +packer build aws-amazon2.pkr.hcl +.amazon-ebs.amazon2: output will be in this color. + +==> .amazon-ebs.amazon2: Prevalidating any provided VPC information +==> .amazon-ebs.amazon2: Prevalidating AMI Name: + .amazon-ebs.amazon2: Found Image ID: ami-0b0dcb5067f052a63 +==> .amazon-ebs.amazon2: Creating temporary keypair: packer_6382573a-e356-c04a-958f-c1ece4083785 +==> .amazon-ebs.amazon2: Creating temporary security group for this instance: packer_6382573d-6f07-acc1-f218-df04593a22f1 +... +==> .amazon-ebs.amazon2: Running cnspec packer provisioner by Mondoo (Version: 0.6.0, Build: dev) + .amazon-ebs.amazon2: activated sudo + .amazon-ebs.amazon2: detected packer build via ssh + .amazon-ebs.amazon2: scan packer build + .amazon-ebs.amazon2: scan completed successfully +... + + .amazon-ebs.amazon2: ✕ Fail: D 20 Ensure sudo logging is enabled + .amazon-ebs.amazon2: ✕ Fail: D 20 Ensure kernel module loading and unloading is collected + .amazon-ebs.amazon2: ✓ Pass: Ensure no duplicate UIDs exist + .amazon-ebs.amazon2: ✕ Fail: D 20 Ensure unsuccessful unauthorized file access attempts are collected + .amazon-ebs.amazon2: ✓ Pass: Ensure prelink is disabled + .amazon-ebs.amazon2: ✕ Fail: F 0 Ensure that strong Key Exchange algorithms are used + .amazon-ebs.amazon2: ✓ Pass: Ensure Samba is stopped and not enabled + .amazon-ebs.amazon2: + .amazon-ebs.amazon2: Vulnerabilities: + .amazon-ebs.amazon2: ■ No advisories found (passed) + .amazon-ebs.amazon2: + .amazon-ebs.amazon2: Overall CVSS score: 0.0 + .amazon-ebs.amazon2: + .amazon-ebs.amazon2: + .amazon-ebs.amazon2: Summary (1 assets) + .amazon-ebs.amazon2: ================== + .amazon-ebs.amazon2: + .amazon-ebs.amazon2: Target: i-0dd30e6f234216dd1 + .amazon-ebs.amazon2: Score: C 50/100 (100% completed) + .amazon-ebs.amazon2: ✓ Passed: ████████ 52% (55) + .amazon-ebs.amazon2: ✕ Failed: ███████ 44% (46) + .amazon-ebs.amazon2: ! Errors: 3% (3) + .amazon-ebs.amazon2: » Skipped: 1% (1) + .amazon-ebs.amazon2: + .amazon-ebs.amazon2: Policies: + .amazon-ebs.amazon2: F 0 Linux Security by Mondoo + .amazon-ebs.amazon2: A 100 Platform Vulnerability Policy by Mondoo +... +==> Wait completed after 10 minutes 7 seconds + +==> Builds finished. The artifacts of successful builds are: +--> .amazon-ebs.amazon2: AMIs were created: +us-east-1: ami-0b3e9a14e02dd8f37 +``` + +### View the scan report in Mondoo Platform (registered mode only) + +To view the scan report in the Mondoo Console, go to **INVENTORY** and find the report. You might need to refresh your browser. + +![Mondoo scan report from HashiCorp Packer build](/img/cnspec/aws/packer-asset.png) + +### View the control details + +Select the Controls tab. + +![Controls tab in a Mondoo scan report from HashiCorp Packer build](/img/cnspec/aws/controls-tab.png) + +Expand any of the checks in the policies that ran against your build to show additional documentation, audit, and remediation steps: + +![Control details in a Mondoo scan result](/img/cnspec/aws/control-details.png) + +## View the image AWS Management Console + +![Mondoo secure base image in AWS Management Console](/img/cnspec/aws/aws-packer-image.png) + +After running the above example, you can navigate to the [AMIs section](https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#Images:visibility=owned-by-me) of AWS Management Console. + +### Remove the image + +You can remove the AMI by first deregistering it on the [AWS AMI management page](https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#Images:visibility=owned-by-me). Next, delete the associated snapshot on the [AWS snapshot management page](https://us-east-1.console.aws.amazon.com/ec2/v2/home?region=us-east-1#Snapshots:). + +## Next steps + +In this tutorial, you built an Amazon AMI and scanned it for vulnerabilities and security misconfigurations with cnspec. + +The GitHub repository for Packer plugin cnspec contains [additional templates](https://github.com/mondoohq/packer-plugin-cnspec/tree/main/examples) for building Ubuntu and Windows images. + +--- diff --git a/docs/cnspec/cnspec-azure/README.mdx b/docs/cnspec/cnspec-azure/README.mdx new file mode 100644 index 000000000..01809b2b7 --- /dev/null +++ b/docs/cnspec/cnspec-azure/README.mdx @@ -0,0 +1,213 @@ +--- +title: Assess Azure Security with cnspec +id: cnspec-azure-intro +sidebar_label: Azure +displayed_sidebar: cnspec +sidebar_position: 1 +description: Assess Azure Security with cnspec +image: /img/featured_img/mondoo-azure.jpg +--- + +cnspec assesses your full Microsoft Azure environment for misconfigurations that put your organization at risk. You can scan your Azure tenant for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +cnspec can test any aspect of your Azure configuration. For a list of Azure resources you can test, read [Mondoo Azure Resource Pack Reference](/mql/resources/azure-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnspec with your Azure environment + +### Requirements + +To test your Azure environment with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/). +- An [Azure account](https://azure.microsoft.com/en-us/free/) +- The [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) installed + +### Log into Azure + +Using the Azure CLI, log into your subscription: + +```bash +az login +``` + +### Verify with a quick Azure check + +To quickly confirm that cnspec has access to your Azure environment, run this check from your terminal: + +```bash +cnspec run azure -c 'azure.subscription.resources { id!="foo" }' +``` + +It asserts that none of your Azure resources have the ID `foo`. + +cnspec lists your resources and indicates that the check is true, none of them has `foo` as its ID: + +```coffee +azure.subscription.resources: [ + 0: { + id != "foo": true + } + 1: { + id != "foo": true + } + 2: { + id != "foo": true + } + 3: { + id != "foo": true + } + 4: { + id != "foo": true + } +] +``` + +You've successfully used cnspec to run your first check on your Azure environment. Now you're ready to explore. The method you choose depends on your goals: + +- For widescale assessment of your Azure infrastructure, scan using policy bundles. These collections of tests work together to present a broad picture of your Azure security posture. + +- To run ad hoc checks against your Azure environment, use cnspec's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnspec and learning MQL. + +## Assess Azure security with policy-based scanning + +The Azure Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental Azure security best practices. It checks for misconfigurations across your entire Azure infrastructure. + +To scan using the Azure Security by Mondoo policy, run: + +```bash +cnspec scan azure +``` + +This scans all the subscriptions available under your account when you're logged in using `az login`. You can also scan a specific subscription. For ID, substitute your subscription ID: + +```bash +cnspec scan azure --subscription YOUR-SUBSCRIPTION-ID +``` + +cnspec follows these steps to load policies on which it bases the scan: + +- cnspec tries to read a config file, mondoo.yml, which includes the certificate and private key for authenticating with Mondoo Platform. If it finds the config, it loads the policies enabled for the Azure integration in the Mondoo space this Azure environment belongs to. You can enter `cnspec status` to see if the config file exists and cnspec is registered. + +2. If there is no config file (you have not registered cnspec or you've removed the mondoo.yml file), then cnspec loads Mondoo's open source policies and scans based on those. + +:::info + +If cnspec is registered but you want to use the open source policies (and not share results with Mondoo Platform), you can scan in incognito mode: + +```bash +cnspec scan azure --incognito +``` + +::: + +You can also specify a particular policy bundle. cnspec uses only the bundle you specify: + +```bash +cnspec scan azure --policy-bundle mondoo-azure-security.mql.yaml +``` + +You can download open source policy bundles from the [GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). + +It is also possible to scan the Azure environment through an Azure registered app and fully control what resources the cnspec has permission to scan. To learn how to register and configure the app, read [Continuously Scan with an Azure Integration](/platform/infra/cloud/azure/azure-integration-scan-subscription/). + +After you register the app, you can use either of these commands to scan, depending on how you configured the app to authenticate with the Azure portal: + +```bash +cnspec scan azure --subscription YOUR-SUBSCRIPTION-ID --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --certificate-path certificate.combo.pem --policy-bundle mondoo-azure-security.mql.yaml +``` + +OR: + +```bash +cnspec scan azure --subscription YOUR-SUBSCRIPTION-ID --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --client-secret YOUR-CLIENT-SECRET-VALUE --policy-bundle mondoo-azure-security.mql.yaml +``` + +### Assess the security of Azure VM instances, snapshots, and disks + +Use cnspec to evaluate the security of your Azure virtual machines. You can scan managed disks, instances, and snapshots. + +To scan an Azure VM instance, run this command, substituting the instance name, client ID, tenant ID, and client secret: + +```bash +cnspec scan azure compute instance NAME --client-id YOUR-CLIENT-ID --tenant-id YOUR-TENANT-ID --client-secret YOUR-CLIENT-SECRET-VALUE +``` + +To scan an Azure compute snapshot, run this command, substituting the snapshot name, client ID, tenant ID, and client secret: + +```bash +cnspec scan azure compute snapshot NAME --client-id YOUR-CLIENT-ID --tenant-id YOUR-TENANT-ID --client-secret YOUR-CLIENT-SECRET-VALUE +``` + +To scan an Azure compute disk, run this command, substituting the snapshot name, client ID, tenant ID, and client secret: + +```bash +cnspec scan azure compute disk NAME --client-id YOUR-CLIENT-ID --tenant-id YOUR-TENANT-ID --client-secret YOUR-CLIENT-SECRET-VALUE +``` + +## Test Azure with the cnspec shell + +The cnspec shell is handy for quick checks and tests, or for developing your MQL skills. Its auto-complete and help features guide you in writing checks. + +To launch a shell into your Azure environment, enter: + +```bash +cnspec shell azure +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Azure resources you can test. This command lists all the Azure resources: + +```bash +help azure +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the Azure Compute resources you can test: + +```bash +help azure.subscription.compute +``` + +From the resulting list, you can drill down even further. You can also learn about available Azure resources in the [Mondoo Azure Resource Pack Reference](/mql/resources/azure-pack/). + +### Run tests in the cnspec shell + +Now that you know how to discover what's possible with cnspec, let's run some actual tests in the shell. + +#### Assess SQL server auditing + +This test assures that auditing is turned on for your SQL servers: + +```bash +azure.subscription.sql.servers { auditingPolicy['state'] == "Enabled" } +``` + +If the test passes (all SQL servers have auditing enabled) then cnspec returns `ok`: + +```coffee +[ok] value: true +``` + +If the test fails, (one or more Cloud Storage buckets don't use uniform bucket-level access) then cnspec provides details about the failure. + +#### Assess public access to storage + +This test asserts that no storage accounts allow public access: + +```bash +azure.subscription.storage.accounts { containers { properties['publicAccess'] == "None" } } +``` + +If one or more storage accounts allow public access, cnspec lists them. Otherwise, cnspec indicates that the test passed. + +### Exit the cnspec shell + +To exit the cnspec shell, either press `Ctrl + D` or type `exit`. + +## Learn more about querying Azure + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the Azure resources and fields you can query, read the [Mondoo Azure Resource Pack Reference](/mql/resources/azure-pack/). + +--- diff --git a/docs/cnspec/cnspec-gcp/README.mdx b/docs/cnspec/cnspec-gcp/README.mdx new file mode 100644 index 000000000..43f0478a7 --- /dev/null +++ b/docs/cnspec/cnspec-gcp/README.mdx @@ -0,0 +1,278 @@ +--- +title: Assess Google Cloud Security with cnspec +id: cnspec-gcp-intro +sidebar_label: Get Started +displayed_sidebar: cnspec +sidebar_position: 1 +description: Assess Google Cloud Security with cnspec +image: /img/featured_img/mondoo-gcp.jpg +--- + +cnspec assesses your full GCP environment for misconfigurations that put your organization at risk. You can scan your GCP account for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +cnspec can test any aspect of your GCP configuration. For a list of GCP resources you can test, read [Mondoo Google Cloud Platform (GCP) Resource Pack Reference](/mql/resources/gcp-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +:::info + +You can also use cnspec with HashiCorp Packer to [build secure VM images in Google Cloud](/cnspec/cnspec-gcp/cnspec-gcp-packer/). + +::: + +## Connect cnspec with your GCP environment + +### Requirements + +To test your GCP environment with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/) +- A [Google Platform account](https://cloud.google.com/free) +- [Google Cloud SDK](https://cloud.google.com/sdk/install) installed +- [Cloud Resource Manager API](https://console.cloud.google.com/marketplace/product/google/cloudresourcemanager.googleapis.com) enabled + +### Provide access credentials + +In your terminal, log into GCP with this command: + +```bash +gcloud auth login --update-adc +``` + +### Configure the GCP project you want assess + +To test a GCP project, you must set up the project: + +```bash +gcloud config set project PROJECTID +``` + +For `PROJECTID`, substitute the ID of the project you want to assess. + +GCP confirms the setup: + +```bash +Updated property [core/project]. +``` + +To verify your configuration, enter: + +```shell +gcloud config list +``` + +GCP returns results similar to these: + +```ini +[core] +account = suki@lunalectric.com +disable_usage_reporting = True +project = gcp-project-id + +Your active configuration is: [default] +``` + +### Verify with a quick GCP check + +To quickly confirm that cnspec has access to your GCP environment, run this check from your terminal: + +```bash +cnspec run gcp project PROJECT-ID -c 'gcp.project.id!="foo"' +``` + +For `PROJECT-ID`, substitute your GCP project ID. + +It asserts that your GCP project ID value is not `foo`. + +cnspec returns `[ok]` to indicate that the test passed, and includes the actual value of the GCP project ID, similar to this: + +```coffee +[ok] value: "luna-dev-262317" +``` + +You've successfully used cnspec to run your first check on your GCP environment. Now you're ready to explore. + +Once you've ensured that [cnspec can access your GCP environment](/cnspec/cnspec-gcp/), you can begin testing. The method you choose depends on your goals: + +- For widescale assessment of your GCP infrastructure, scan using policy bundles. These collections of tests work together to present a broad picture of your GCP security posture. +- To run ad hoc checks against your GCP environment, use cnspec's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnspec and learning MQL. + +## Assess GCP security with policy-based scanning + +The Google Cloud (GCP) Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental GCP security best practices. It checks for misconfigurations across your entire GCP infrastructure. + +To scan an organization using the Google Cloud (GCP) Security by Mondoo policy, run: + +```bash +cnspec scan gcp org ORGANIZATION-ID +``` + +For `ORGANIZATION-ID`, substitute the ID of the organization you want to scan. + +To scan a project using the Google Cloud (GCP) Security by Mondoo policy, run: + +```bash +cnspec scan gcp project PROJECT-ID +``` + +For `PROJECT-ID`, substitute the ID of the project you want to scan. + +To scan a folder using the Google Cloud (GCP) Security by Mondoo policy, run: + +```bash +cnspec scan gcp folder FOLDER-ID +``` + +For `FOLDER-ID`, substitute the ID of the folder you want to scan. + +cnspec finds the default policy for GCP and runs a scan based on that policy. It returns a report summarizing the scan results.: + +```text +→ loaded configuration from /Users/suki/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 + + GCP project luna-dev-262317 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% score: A + + +Asset: GCP project luna-dev-262317 +---------------------------------- +Data queries: +gcp.project.iamPolicy.where: [ + 0: gcp.resourcemanager.binding id = luna-dev-262317 +] +gcp.project.labels: {} +gcp.project.gke.clusters: [] +gcp.compute.instances.where: [] +gcp.compute.networks.length: 1 + +... + +Checks: +✓ Pass: A 100 Ensure oslogin is enabled for compute instances +✓ Pass: A 100 Ensure that Cloud Storage buckets are not anonymously or publicly accessible +✓ Pass: A 100 Ensure "Block Project-wide SSH keys" is enabled for VM instances +✓ Pass: A 100 Ensure that Cloud Storage buckets have uniform bucket-level access enabled +✓ Pass: A 100 Ensure that instances are not configured to use the default service account +✓ Pass: A 100 Ensure instances are not configured to use the default service account with full access to all Cloud APIs + +Scanned 1 assets + +GCP Project + A GCP project luna-dev-262317 +``` + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +## Test GCP with the cnspec shell + +The cnspec shell is handy for quick checks and tests, or for developing your MQL skills. Its auto-complete and help features guide you in writing checks. + +To launch a shell into your GCP environment to run queries and checks, run: + +```bash +cnspec shell gcp org ORGANIZATION-ID +``` + +For `PROJECT-ID`, substitute the ID of the project you want to explore. + +To launch a shell into your GCP environment on the project level, substitute PROJECT-ID with the ID of the project you want to access and run the following command: + +```bash +cnspec shell gcp project PROJECT-ID +``` + +To launch a shell into your GCP environment on the folder level, substitute FOLDER-ID with the ID of the folder you want to access and run the following command: + +```bash +cnspec shell gcp folder FOLDER-ID +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what GCP resources you can test. This command lists all the GCP resources: + +```bash +help gcp +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the GCP service resources you can test: + +```bash +help gcp.service +``` + +From the resulting list, you can drill down even further. You can also learn about available GCP resources in the [Mondoo Google Cloud Platform (GCP) Resource Pack Reference](/mql/resources/gcp-pack/). + +### Run tests in the cnspec shell + +Now that you know how to discover what's possible with cnspec, let's run some actual tests in the shell. + +#### Assess Cloud Storage bucket access + +This test assures that all Cloud Storage buckets have uniform bucket-level access enabled: + +```coffee +gcp.project.storageService.buckets.all( iamConfiguration['UniformBucketLevelAccess']['Enabled'] == true ) +``` + +If the test passes (all Cloud Storage buckets have uniform bucket-level access enabled) then cnspec returns `ok`: + +```coffee +[ok] value: true +``` + +If the test fails, (one or more Cloud Storage buckets don't use uniform bucket-level access) then cnspec provides details about the failure: + +```coffee +[failed] [].all() + actual: [ + 0: gcp.project.storageService.bucket id = luna-bucket-3 + ] +``` + +The sample results above show that the `luna-bucket-3` storage bucket doesn't use uniform bucket-level access. + +#### Assess Compute Engine access + +This test asserts that all Compute Engine instances have OS Login enabled: + +```coffee +gcp.project.computeService.instances.all( metadata['enable-oslogin'] == true ) +``` + +If one or more instance aren't using OS Login, cnspec lists them: + +```coffee +[failed] [].all() + actual: [ + 0: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/5894326198680570314 + 1: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/7160119628481766684 + 2: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/5917688252380140477 + 3: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/3877422285743886958 + 4: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/3907771157037563687 + 5: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/4114342986437780688 + 6: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/9121791747047534080 + 7: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/2350609386795184202 + 8: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/3078531271735985553 + 9: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/1236920519697087164 + 10: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/6674678823862797263 + 11: gcp.project.computeService.instance id = gcp.project.computeService.instance/luna-dev-262313/3498829478465908910 + ] + +``` + +### Exit the cnspec shell + +To exit the cnspec shell, either press `Ctrl + D` or type `exit`. + +## Learn more about securing Google Cloud + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the GCP resources and fields you can query, read the [Mondoo Google Cloud Platform (GCP) Resource Pack Reference](/mql/resources/gcp-pack/). + +## Next step + +Learn how to use [snapshot scanning](/cnspec/cnspec-gcp/gcp-snapshot/) to assess GCP instances without affecting your production workload. + +--- diff --git a/docs/cnspec/cnspec-gcp/cnspec-gcp-packer.mdx b/docs/cnspec/cnspec-gcp/cnspec-gcp-packer.mdx new file mode 100644 index 000000000..848e90d01 --- /dev/null +++ b/docs/cnspec/cnspec-gcp/cnspec-gcp-packer.mdx @@ -0,0 +1,337 @@ +--- +title: Build Secure VM Images in Google Cloud with cnspec and HashiCorp Packer +id: cnspec-gcp-packer +sidebar_label: Build Secure VMs with Packer +displayed_sidebar: cnspec +sidebar_position: 3 +image: /img/featured_img/mondoo-gcp.jpg +description: Learn how to build secure machine images in Google Cloud with cnspec and HashiCorp Packer. +--- + +[Packer plugin cnspec by Mondoo](https://github.com/mondoohq/packer-plugin-cnspec) lets you run security scans during HashiCorp Packer builds of [Google Cloud VM images](https://cloud.google.com/build/docs/building/build-vm-images-with-packer). This ensures that new VM images meet your security standards before they even reach production. + +:::caution + +This tutorial provisions resources in your Google Cloud project. Mondoo is not responsible for charges that you incur. + +::: + +### Requirements + +You must have: + +- [A Google Platform Account](https://cloud.google.com/free) +- [The Google Cloud SDK](https://cloud.google.com/sdk/install) +- [Packer v1.8.1 or later](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) installed +- (Recommended) A code editor such as [Visual Studio Code](https://code.visualstudio.com/) + +## Packer Plugin cnspec by Mondoo + +[Packer Plugin cnspec by Mondoo](https://github.com/mondoohq/packer-plugin-cnspec) scans Linux and Windows [HashiCorp Packer](https://www.packer.io) builds for vulnerabilities and security misconfigurations. The plugin is designed to work with any of the supported Packer builders, including containers. + +### Plugin modes + +Packer plugin cnspec is designed to work in one of two modes: + +- **Unregistered** - In unregistered mode, the plugin works without being registered to Mondoo Platform, and is designed to provide baseline security scanning with minimal configuration. The plugin runs either the [Linux Security by Mondoo](https://github.com/mondoohq/cnspec-policies/blob/main/core/mondoo-linux-security.mql.yaml) policy on Linux builds, or the [Windows Security by Mondoo](https://github.com/mondoohq/cnspec-policies/blob/main/core/mondoo-windows-security.mql.yaml) policy on Windows builds. Each of these policies provides security hardening checks based off of industry standards for Linux and Windows. Scan results are shown in STDOUT during the Packer run. +- **Registered** - In registered mode, the plugin is registered to your account in Mondoo Platform using a service account. Registered mode allows you to configure and customize any of the policies in Mondoo Platform including CIS benchmarks and more. Scan results are shown in STDOUT and sent back to Mondoo Platform for your records. + +:::info + +To scan for vulnerabilities, you must register cnspec with Mondoo Platform. [Sign up for a free account](https://mondoo.com/pricing) today. + +::: + +### Plugin configuration + +Packer plugin cnspec provides this configuration: + +- `score_threshold` - This configuration sets an `int` score threshold for security scans. If the scan produces a score that falls below the threshold, the build will fail. +- `on_failure = "continue"` - This configuration ensures that the Packer build will not fail even if the scan produces a score that falls below the `score_threshold`. +- `sudo` - Some of the security configuration checks require elevated permissions to scan a given resource such as the `sshd_config`. Setting the `sudo` option to `active = true` configures the plugin to run in `sudo` mode. +- `asset_name` - Override the asset name on Mondoo Platform. This configuration is only used in registered mode. +- `annotations` - Custom annotations can be applied to Packer build assets to provide additional metadata for asset tracking. This configuration is only used in registered mode. + +### Register with Mondoo Platform + +To configure the plugin to work in registered mode, you must first create a Base64-encoded service account. If you do not wish to use custom policies and store results on Mondoo Platform you can skip this step. + +To create a Base64-encoded service account: + +1. Navigate to the space you want to create a service account in. +2. Select **Settings** followed by **Service Accounts**. +3. Select **ADD ACCOUNT**. +4. Check the **Base64-encoded** box to Base64-encode the credentials. +5. Select **GENERATE NEW CREDENTIALS**. +6. Copy the Base64-encoded credentials to the clipboard. +7. Open a terminal and run: + +```bash +export MONDOO_CONFIG_BASE64= +``` + +## Google Cloud setup + +Before building an image, you must install the [Google Cloud SDK](https://cloud.google.com/sdk/docs/install) and authenticate using [User Application Default Credentials](https://cloud.google.com/sdk/gcloud/reference/auth/application-default). You don't need to specify an account file if you are using this method. The user or service account must have these roles: + +- [`roles/iam.serviceAccountUser`](https://cloud.google.com/compute/docs/access/iam#iam.serviceAccountUser) (Service Account User) +- [`roles/compute.instanceAdmin.v1`](https://cloud.google.com/compute/docs/access/iam#compute.instanceAdmin.v1) (Compute Instance Admin v1) + +To learn more about creating service accounts, read [Create and manage service accounts](https://cloud.google.com/iam/docs/creating-managing-service-accounts#iam-service-accounts-create-console) in the Google Cloud documentation. + +:::tip + +You can find more authentication methods for the `googlecompute` builder in the [Packer documentation](https://developer.hashicorp.com/packer/integrations/hashicorp/googlecompute/latest/components/builder/googlecompute). + +::: + +### Configure the Google Cloud project + +You must create machine images within a Google Cloud project. Run `gcloud projects list` to get a list of the projects you have access to, or run `gcloud projects create` to create a new project to build your images in. + +### Enable the required APIs + +Enable these APIs in the project: + +```bash +gcloud services enable sourcerepo.googleapis.com +gcloud services enable compute.googleapis.com +gcloud services enable servicemanagement.googleapis.com +gcloud services enable storage-api.googleapis.com +``` + +## Run Packer + +A Packer template is a configuration file that defines the image you want to build and how to build it. Packer templates use the HashiCorp Configuration Language (HCL). + +Create a new directory named `mondoo_packer`. This directory will contain your Packer template for this tutorial. + +```bash +mkdir mondoo_packer +``` + +Navigate into the directory. + +```bash +cd mondoo_packer +``` + +### Ubuntu 2004 Packer Template + +Create a file `gcp-ubuntu2004.pkr.hcl`, add this HCL block to it, and save the file. + +```bash +packer { + required_plugins { + googlecompute = { + version = ">= 1.0.0" + source = "github.com/hashicorp/googlecompute" + } + cnspec = { + version = ">= 6.1.3" + source = "github.com/mondoohq/cnspec" + } + } +} + +variable "zone" { + default = "us-east5-a" + description = "GCP zone to build the image in" +} + +variable "project_id" { + type = string + description = "GCP Project ID to build the image in" +} + +variable "image_prefix" { + type = string + description = "Prefix to be applied to image name" + default = "cnspec-tested-ubuntu-2004" +} + +locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } + +source "googlecompute" "ubuntu2004" { + image_name = "${var.image_prefix}-${local.timestamp}" + machine_type = "e2-small" + source_image = "ubuntu-pro-2004-focal-v20220627a" + ssh_username = "packer" + temporary_key_pair_type = "rsa" + temporary_key_pair_bits = 2048 + zone = var.zone + project_id = var.project_id +} + +build { + sources = ["source.googlecompute.ubuntu2004"] + provisioner "shell" { + inline = [ + "echo Hello From ${source.type} ${source.name}" + ] + } + + provisioner "cnspec" { + score_threshold = 80 + on_failure = "continue" + sudo { + active = true + } + } +} +``` + +This is a complete Packer template that you will use to build an Ubuntu 20.04 image in the `us-east5-a` zone. In these sections, you will review each block of this template in more detail. + +### Configure template variables + +The template provides a `variables` section used to configure the builds. + +:::info + +To learn about the various options to override variables set in the Packer template, see [Setting Variables](https://developer.hashicorp.com/packer/docs/templates/legacy_json_templates/user-variables#setting-variables) in the HashiCorp Packer documentation. + +::: + +**Zone** + +By default the template will build the image in GCP's us-east5-a zone: + +``` +variable "zone" { + default = "us-east5-a" + description = "GCP zone to build the image in" +} +``` + +**Project ID** + +You must set the `project_id` variable with the ID of the project from your GCP account: + +``` +variable "project_id" { + type = string + description = "GCP Project ID to build the image in" +} +``` + +**Image prefix** + +By default the template will create the VM image using a default naming prefix of `cnspec-tested-ubuntu-2004`. You can override this with the `image_prefix` variable: + +```bash +variable "image_prefix" { + type = string + description = "Prefix to be applied to image name" + default = "cnspec-tested-ubuntu-2004" +} +``` + +### Initialize the Packer configuration + +Initialize your Packer configuration. + +```bash +packer init gcp-ubuntu2004.pkr.hcl +``` + +Executing `packer init` instructs Packer to download the plugins defined in the `required_plugins` section in the template. Plugins are typically downloaded to the `~/.packer.d/plugins`directory. You can run `packer init` as many times as you'd like. If you already have the plugins you need, Packer will exit without an output. + +## Build the Packer image + +Build the image with the `packer build gcp-ubuntu2004.pkr.hcl` command. Packer prints output similar to what is shown below. + +```bash +packer build gcp-ubuntu2004.pkr.hcl +: output will be in this color. + +==> : Checking image does not exist... +==> : Creating temporary RSA SSH key for instance... +==> : Using image: ubuntu-pro-2004-focal-v20220627a +==> : Creating instance... + : Loading zone: us-east5-a + : Loading machine type: e2-small + : Requesting instance creation... + : Waiting for creation operation to complete... + : Instance has been created! +==> : Waiting for the instance to become running... + : IP: 34.162.0.117 +==> : Using SSH communicator to connect: 34.162.0.117 +==> : Waiting for SSH to become available... +... + : + : + : Summary + : ======================== + : + : Target: cnspec-tested-ubuntu-2004-20220630154951 + : Score: A 86/100 (100% completed) + : ✓ Passed: ███████ 49% (80) + : ✕ Failed: ██████ 37% (61) + : ! Errors: ██ 14% (23) + : » Skipped: 0% (0) + : + : Policies: + : A 100 Platform End-of-Life Policy by Mondoo + : A 100 Platform Vulnerability Policy by Mondoo + : + : Report URL: https://console.mondoo.com/space/inventory/ +==> : Deleting instance... + : Instance has been deleted! +==> : Creating image... +==> : Deleting disk... + : Disk has been deleted! +Build '' finished after 5 minutes 46 seconds. +``` + +## View the scan results in STDOUT + +During the build process you will see scan results similar to this: + +```bash +: Summary +: ======================== +: +: Target: cnspec-tested-ubuntu-2004-20220630154951 +: Score: A 86/100 (100% completed) +: ✓ Passed: ███████ 49% (80) +: ✕ Failed: ██████ 37% (61) +: ! Errors: ██ 14% (23) +: » Skipped: 0% (0) +: +: Policies: +: A 100 Platform End-of-Life Policy by Mondoo +: A 100 Platform Vulnerability Policy by Mondoo +: +: Report URL: https://console.mondoo.com/space/inventory/ +``` + +### View the report in Mondoo Platform + +Packer Plugin Mondoo sends the scan results to your account in Mondoo Platform. To view the scan report in the Mondoo Console, go to **INVENTORY** and find the report. You might need to refresh your browser. + +![Mondoo scan report from HashiCorp Packer build](/img/cnspec/gcp/packer-asset.png) + +### View the control details + +Select the Controls tab. + +![Controls tab in a Mondoo scan report from HashiCorp Packer build](/img/cnspec/aws/controls-tab.png) + +Expand any of the checks in the policies that ran against your build to show additional documentation, audit, and remediation steps: + +![Control details in a Mondoo scan result](/img/cnspec/aws/control-details.png) + +## View the image Google Cloud Console + +![Mondoo secure base image in GCP Cloud Console](/img/cnspec/gcp/gcp-console-machine-image.png) + +After running the above example, you can navigate to the [Storage Images](https://console.cloud.google.com/compute/images) of Google Cloud Console. + +## Next steps + +In this tutorial, you built a Google Cloud machine image and scanned it for vulnerabilities and misconfigurations with cnspec. Although we ran the one policy, you should now have a general idea of how Packer Plugin Mondoo works, and you should be ready to add any additional policies for your builds. + +The GitHub repository for Packer plugin cnspec contains [additional templates](https://github.com/mondoohq/packer-plugin-cnspec/tree/main/examples) for other platforms and cloud environments. + +--- diff --git a/docs/cnspec/cnspec-gcp/gcp-snapshot.mdx b/docs/cnspec/cnspec-gcp/gcp-snapshot.mdx new file mode 100644 index 000000000..1224cc62a --- /dev/null +++ b/docs/cnspec/cnspec-gcp/gcp-snapshot.mdx @@ -0,0 +1,88 @@ +--- +title: Scan GCP Instances Using Snapshots +id: gcp-snapshot +sidebar_label: Scan Instance Snapshots +displayed_sidebar: cnspec +sidebar_position: 2 +image: /img/featured_img/mondoo-gcp.jpg +description: Learn how to scan GCP instances with no impact to your production workload. +--- + +cnspec can assess the security of a GCP instance without affecting your production workload. It creates a snapshot of the instance, scans that snapshot, and then removes it. + +To snapshot scan a GCP instance, you create a VM instance and scan from that VM. The VM instance from which you scan must have adequate permissions. + +## Set up permissions for snapshot scanning + +To create and scan a snapshot of a GCP instance, you must create a service account for the VM instance from which you execute the snapshot scan. The service account you create needs specific permissions, which you provide using a custom role. + +1. In the [Google Cloud console](https://console.cloud.google.com/iam-admin/roles), create a new role named **cnspec-snapshot-scanner** with these permissions: + + - compute.disks.create + - compute.disks.createSnapshot + - compute.disks.delete + - compute.disks.get + - compute.disks.setLabels + - compute.disks.use + - compute.disks.useReadOnly + - compute.instances.attachDisk + - compute.instances.detachDisk + - compute.instances.get + - compute.snapshots.create + - compute.snapshots.get + - compute.snapshots.list + - compute.snapshots.useReadOnly + - compute.zoneOperations.get + + To learn how, read [Grant an IAM role by using the Google Cloud console](https://cloud.google.com/iam/docs/grant-role-console) in the GCP documentation. + +2. In the [Google Cloud console](https://console.cloud.google.com/projectselector2/iam-admin/serviceaccounts), create a new service account and assign it these roles: + + - cnspec-snapshot-scanner + - Service Account User + + To learn how, read [Create service accounts](https://cloud.google.com/iam/docs/service-accounts-create) in the GCP documentation. + +## Create a VM from which to run a cnspec snapshot scan + +In the [Google Cloud console](https://console.cloud.google.com/compute/instances), create a new VM instance using the service account you created in the previous steps. To learn how, read [Create a VM that uses a user-managed service account](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances) in the GCP documentation. + +:::tip + +You can create a VM instance template to make it easier to spin up VM instances for snapshot scanning. To learn how, read [Create instance templates](https://cloud.google.com/compute/docs/instance-templates/create-instance-templates) in the GCP documentation. + +::: + +## Create, scan, and destroy a snapshot + +Connect to the VM instance you created in the steps above and then run: + +```bash +cnspec scan gcp instance INSTANCE-NAME --project-id PROJECT-ID --zone INSTANCE-ZONE +``` + +Example: + +```bash +cnspec scan gcp instance lunalectric-rover --project-id rover-123 --zone us-central1-a +``` + +## Scan an existing snapshot + +cnspec lets you scan a specific, existing snapshot. This gives you insight into the instance's state at a particular point in time. You can also use the data to assess change over a span of time. + +To scan an existing snapshot, you must be logged into the instance. + +```bash +cnspec scan gcp snapshot SNAPSHOT-NAME --project-id PROJECT-ID +``` + +Example: + +```bash +cnquery scan gcp snapshot suse12 --project-id rover-123 +``` + +## Next step + +Learn how you can [Build Secure VM Images in Google Cloud with cnspec and HashiCorp Packer](/cnspec/cnspec-gcp/cnspec-gcp-packer/). diff --git a/docs/cnspec/cnspec-k8s/README.mdx b/docs/cnspec/cnspec-k8s/README.mdx new file mode 100644 index 000000000..6cb63275f --- /dev/null +++ b/docs/cnspec/cnspec-k8s/README.mdx @@ -0,0 +1,50 @@ +--- +title: Assess Kubernetes Security with cnspec +id: cnspec-k8s-intro +sidebar_label: Get Started +displayed_sidebar: cnspec +sidebar_position: 1 +description: Learn how cnspec can assess the security of your Kubernetes infrastructure +image: /img/featured_img/mondoo-k8s.jpg +--- + +cnspec assesses your full Kubernetes environment for misconfigurations that put your organization at risk. You can scan your Kubernetes clusters for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +You can also scan Kubernetes manifests to catch misconfigurations. Integrating manifest scanning in your development process can eliminate risks before they reach production. + +For a list of Kubernetes resources you can test, read [Mondoo Kubernetes (k8s) Resource Pack Reference](/mql/resources/k8s-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnspec with your Kubernetes environment + +### Requirements + +To test your Kubernetes environment with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/). +- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) installed on your workstation. To ensure that kubectl is successfully installed and you can access your Kubernetes infrastructure, run `kubectl describe nodes`. + +### Verify with a quick Kubernetes check + +To quickly confirm that cnspec has access to your Kubernetes environment, run this check from your terminal: + +```bash +cnspec run k8s -c 'k8s.deployment.uid != "foo"' +``` + +This asserts that none of your deployments are named `foo`. cnspec returns a report listing your deployments. For each, it indicates whether the deployment meets the requirement (not named `foo`): + +```coffee +[passed] k8s.deployment.uid != "foo" + +[ok] value: "057e7351-5738-4d3b-bd5f-46d86403c563" + +[ok] value: "8038b1f4-020d-4f3f-a1da-8ec86044b9d7" + +[ok] value: "aadd280e-4498-4071-8fd0-1fad781a2d07" +``` + +## Next step + +You've successfully used cnspec to run your first check against your Kubernetes infrastructure. Now you're ready to [explore more Kubernetes information.](/cnspec/cnspec-k8s/cnspec-k8s-cluster) + +--- diff --git a/docs/cnspec/cnspec-k8s/cnspec-k8s-cluster.mdx b/docs/cnspec/cnspec-k8s/cnspec-k8s-cluster.mdx new file mode 100644 index 000000000..e56c525e7 --- /dev/null +++ b/docs/cnspec/cnspec-k8s/cnspec-k8s-cluster.mdx @@ -0,0 +1,1054 @@ +--- +title: Assess a Kubernetes Cluster +id: cnspec-k8s-cluster +sidebar_label: Assess a Kubernetes Cluster +displayed_sidebar: cnspec +sidebar_position: 20 +description: Assess the security and compliance of a Kubernetes cluster +image: /img/featured_img/mondoo-k8s.jpg +--- + +Once you've ensured that [cnspec can access your Kubernetes environment](/cnspec/cnspec-k8s/), you can begin testing. The method you choose depends on your goals: + +- For widescale assessment of your Kubernetes infrastructure, scan using policy bundles. These collections of tests work together to present a broad picture of your Kubernetes security posture. +- To run ad hoc checks against your Kubernetes environment, use cnspec's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnspec and learning MQL. + +## Assess Kubernetes security with policy-based scanning + +The Kubernetes Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental Kubernetes security best practices. It checks for misconfigurations across your entire Kubernetes infrastructure. + +To scan using the Kubernetes Security by Mondoo policy, run: + +```bash +cnspec scan k8s +``` + +cnspec finds the default policy for Kubernetes and runs a scan based on that policy. It returns a report summarizing the scan results: + +
+Show or hide example scan results. + +```coffee +→ loaded configuration from /Users/user/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ use cluster name from kube config cluster-name=minikube +→ discovery option auto is used. This will detect the assets: cluster, jobs, cronjobs, pods, statefulsets, deployments, replicasets, daemonsets +→ resolved assets resolved-assets=20 +→ connecting to asset K8s Cluster minikube (api) + +███████████████████████████████████████████████████████████████████████████ 100% K8s Cluster minikube +→ connecting to asset kube-system/coredns (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% kube-system/coredns +→ connecting to asset luna/luna-frontend (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/luna-frontend +→ connecting to asset luna/postgres (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/postgres +→ connecting to asset kube-system/coredns-565d847f94-zxkk2 (k8s-object) + +████████████████████████████████████████████████████████████████ 100% kube-system/coredns-565d847f94-zxkk2 +→ connecting to asset kube-system/etcd-minikube (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% kube-system/etcd-minikube +→ connecting to asset kube-system/kube-apiserver-minikube (k8s-object) + +█████████████████████████████████████████████████████████████████ 100% kube-system/kube-apiserver-minikube +→ connecting to asset kube-system/kube-controller-manager-minikube (k8s-object) + +████████████████████████████████████████████████████████ 100% kube-system/kube-controller-manager-minikube +→ connecting to asset kube-system/kube-proxy-cdzrr (k8s-object) + +████████████████████████████████████████████████████████████████████████ 100% kube-system/kube-proxy-cdzrr +→ connecting to asset kube-system/kube-scheduler-minikube (k8s-object) + +█████████████████████████████████████████████████████████████████ 100% kube-system/kube-scheduler-minikube +→ connecting to asset kube-system/storage-provisioner (k8s-object) + +█████████████████████████████████████████████████████████████████████ 100% kube-system/storage-provisioner +→ connecting to asset luna/luna-frontend-7fb96c846b-2k5j7 (k8s-object) + +█████████████████████████████████████████████████████████████████ 100% luna/luna-frontend-7fb96c846b-2k5j7 +→ connecting to asset luna/luna-frontend-7fb96c846b-8b94j (k8s-object) + +█████████████████████████████████████████████████████████████████ 100% luna/luna-frontend-7fb96c846b-8b94j +→ connecting to asset luna/luna-frontend-7fb96c846b-jglt9 (k8s-object) + +█████████████████████████████████████████████████████████████████ 100% luna/luna-frontend-7fb96c846b-jglt9 +→ connecting to asset luna/postgresql-655d75f54b-btbzv (k8s-object) + +██████████████████████████████████████████████████████████████████████ 100% luna/postgresql-655d75f54b-btbzv +→ connecting to asset luna/postgresql-655d75f54b-qhhxv (k8s-object) + +██████████████████████████████████████████████████████████████████████ 100% luna/postgresql-655d75f54b-qhhxv +→ connecting to asset kube-system/kube-proxy (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% kube-system/kube-proxy +→ connecting to asset kube-system/coredns-565d847f94 (k8s-object) + +██████████████████████████████████████████████████████████████████████ 100% kube-system/coredns-565d847f94 +→ connecting to asset luna/luna-frontend-7fb96c846b (k8s-object) + +███████████████████████████████████████████████████████████████████████ 100% luna/luna-frontend-7fb96c846b +→ connecting to asset luna/postgresql-655d75f54b (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/postgresql-655d75f54b + + +Asset: K8s Cluster minikube +=========================== +Data queries: +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +mondoo.version: "8.11.0" +platform.title: "Kubernetes Cluster" +platform.arch: "linux/arm64" +platform.release: "v1.25.3" + +Checks: + +Asset: kube-system/coredns +========================== +Data queries: +platform.arch: "" +platform.title: "Kubernetes Deployment, Kubernetes Cluster" +platform.release: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +mondoo.version: "8.11.0" + +Checks: +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Pod should not run with hostIPC +✓ Pass: Pod should not run with hostPID +✓ Pass: Deployments should not bind to a host port +✓ Pass: Deployments should not run with NET_RAW capability +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Container should request memory +✓ Pass: Deployments should not run in the default namespace +✓ Pass: Container should configure a livenessProbe +. Unknown: Pods should not run Kubernetes dashboard +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Container should configure a readinessProbe +✓ Pass: Container should request CPU +✓ Pass: Pod should not define hostAliases +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Container should not mount the containerd socket +✕ Fail: F 0 Container should not run as root +✓ Pass: Pod should not run with the default service account +✓ Pass: Container should not allow privilege escalation +✓ Pass: Deployments should mount any host path volumes as read-only +✓ Pass: Deployments should not run Tiller (Helm v2) +✓ Pass: Container should use an immutable root filesystem +✓ Pass: Container should not mount the Docker socket +✓ Pass: Container should not run as a privileged container +✓ Pass: Deployments should not run with SYS_ADMIN capability +✓ Pass: Pod should not run with hostNetwork + +Asset: kube-system/coredns-565d847f94 +===================================== +Data queries: +platform.title: "Kubernetes ReplicaSet, Kubernetes Cluster" +platform.release: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +mondoo.version: "8.11.0" +platform.arch: "" + +Checks: +✓ Pass: Container should request CPU +✓ Pass: Container should configure a readinessProbe +✓ Pass: Container should not mount the containerd socket +✓ Pass: Pod should not run with hostNetwork +✓ Pass: Pod should not define hostAliases +✓ Pass: Container should not mount the Docker socket +✓ Pass: Container should configure a livenessProbe +✓ Pass: Pod should not run with hostIPC +✓ Pass: ReplicaSets should not bind to a host port +✓ Pass: ReplicaSets should not run with NET_RAW capability +✓ Pass: Container should have a memory limit +✓ Pass: Container should not allow privilege escalation +✓ Pass: ReplicaSets should mount any host path volumes as read-only +✓ Pass: Container should use an immutable root filesystem +✓ Pass: Container should not run as a privileged container +✓ Pass: Pod should not run with the default service account +✓ Pass: Pod should not run with hostPID +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: ReplicaSets should not run in the default namespace +✕ Fail: F 0 Container should not run as root +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Container should request memory +✓ Pass: ReplicaSets should not run with SYS_ADMIN capability +✕ Fail: A 80 Container should have a CPU limit + +Asset: kube-system/coredns-565d847f94-zxkk2 +=========================================== +Data queries: +platform.arch: "" +mondoo.version: "8.11.0" +platform.title: "Kubernetes Pod, Kubernetes Cluster" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.release: "" + +Checks: +✓ Pass: Container should not mount the Docker socket +✓ Pass: Pods should have an owner +✓ Pass: Container should not allow privilege escalation +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Workloads should not run in default namespace +✓ Pass: Container should not mount the containerd socket +✓ Pass: Container should not run as a privileged container +✓ Pass: Pods should not run Kubernetes dashboard +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Pod should not run with hostIPC +✓ Pass: Pod should not define hostAliases +✓ Pass: Container should configure a readinessProbe +✓ Pass: Container should use an immutable root filesystem +✕ Fail: F 0 Container should not run as root +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Pods should not bind to a host port +✓ Pass: Pod should not run with hostPID +✓ Pass: Pod should not run with the default service account +✓ Pass: Pods should not run Tiller (Helm v2) +✓ Pass: Container should request CPU +✓ Pass: Container should configure a livenessProbe +✓ Pass: Container should have a memory limit +✓ Pass: Pods should not run with NET_RAW capability +✓ Pass: Pod should not run with hostNetwork +✓ Pass: Pods should mount any host path volumes as read-only +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Pods should not bind to a host port +✓ Pass: Container should request memory + +Asset: kube-system/etcd-minikube +================================ +Data queries: +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.title: "Kubernetes Pod, Kubernetes Cluster" +platform.release: "" +mondoo.version: "8.11.0" + +Checks: +✕ Fail: F 0 Container should not run as root +✕ Fail: D 20 Pods should mount any host path volumes as read-only +✓ Pass: Container should request memory +✓ Pass: Pod should not define hostAliases +✕ Fail: D 20 Pod should not run with hostNetwork +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Container should not mount the containerd socket +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Container should not mount the Docker socket +✓ Pass: Pod should not run with hostPID +✓ Pass: Pod should not run with hostIPC +✕ Fail: D 20 Pods should not run with NET_RAW capability +✓ Pass: Container should not run as a privileged container +✓ Pass: Pods should not bind to a host port +✓ Pass: Container should configure a livenessProbe +✓ Pass: Pod should not run with the default service account +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Pods should have an owner +✓ Pass: Container should request CPU +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Container should not allow privilege escalation +✓ Pass: Workloads should not run in default namespace +✕ Fail: A 80 Container should have a CPU limit +. Unknown: Pods should not run Kubernetes dashboard +. Unknown: Pods should not run Tiller (Helm v2) +✓ Pass: Pods should not bind to a host port +✕ Fail: A 80 Container should configure a readinessProbe + +Asset: kube-system/kube-apiserver-minikube +========================================== +Data queries: +platform.arch: "" +platform.title: "Kubernetes Pod, Kubernetes Cluster" +platform.release: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +mondoo.version: "8.11.0" + +Checks: +. Unknown: Pods should not run Kubernetes dashboard +✕ Fail: A 80 Container should request memory +✓ Pass: Workloads should not run in default namespace +✓ Pass: Pod should not run with hostPID +✓ Pass: Pod should not run with hostIPC +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Container should configure a livenessProbe +✓ Pass: Container should request CPU +✓ Pass: Container should configure a readinessProbe +✓ Pass: Container should not mount the Docker socket +✓ Pass: Pods should not bind to a host port +✓ Pass: Container should not run as a privileged container +✓ Pass: Pods should have an owner +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Container should not mount the containerd socket +✕ Fail: D 20 Pod should not run with hostNetwork +✕ Fail: F 0 Container should not run as root +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Pods should not bind to a host port +✓ Pass: Pod should not define hostAliases +✓ Pass: Container should not allow privilege escalation +✓ Pass: Pods should mount any host path volumes as read-only +. Unknown: Pods should not run Tiller (Helm v2) +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Pod should not run with the default service account +✕ Fail: D 20 Pods should not run with NET_RAW capability +✓ Pass: Container should not mount the CRI-O socket +✕ Fail: D 20 Container should use an immutable root filesystem + +Asset: kube-system/kube-controller-manager-minikube +=================================================== +Data queries: +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.release: "" +mondoo.version: "8.11.0" +platform.title: "Kubernetes Pod, Kubernetes Cluster" + +Checks: +✓ Pass: Pods should not bind to a host port +✕ Fail: D 20 Pods should mount any host path volumes as read-only +✓ Pass: Container should not run as a privileged container +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Workloads should not run in default namespace +✓ Pass: Pod should not run with the default service account +✕ Fail: A 80 Container should request memory +. Unknown: Pods should not run Tiller (Helm v2) +✓ Pass: Pod should not run with hostIPC +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Container should configure a livenessProbe +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: A 80 Container should configure a readinessProbe +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Pod should not run with hostPID +✓ Pass: Container should not mount the containerd socket +✓ Pass: Pods should not bind to a host port +✕ Fail: D 20 Pods should not run with NET_RAW capability +. Unknown: Pods should not run Kubernetes dashboard +✕ Fail: F 0 Container should not run as root +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Container should not mount the Docker socket +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Pods should have an owner +✓ Pass: Container should request CPU +✕ Fail: D 20 Pod should not run with hostNetwork +✓ Pass: Container should not allow privilege escalation +✓ Pass: Pod should not define hostAliases + +Asset: kube-system/kube-proxy +============================= +Data queries: +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +mondoo.version: "8.11.0" +platform.title: "Kubernetes DaemonSet, Kubernetes Cluster" +platform.release: "" + +Checks: +✓ Pass: Pod should not run with hostIPC +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Container should not mount the containerd socket +✕ Fail: F 0 Container should not run as root +✓ Pass: DaemonSets should not run with SYS_ADMIN capability +✕ Fail: A 80 Container should configure a livenessProbe +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: D 20 Pod should not run with hostNetwork +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Pod should not run with the default service account +✕ Fail: A 80 Container should configure a readinessProbe +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Container should not allow privilege escalation +✓ Pass: DaemonSets should not run in the default namespace +✓ Pass: Pod should not define hostAliases +✕ Fail: D 20 DaemonSets should not run with NET_RAW capability +✓ Pass: Pod should not run with hostPID +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Container should not mount the Docker socket +✕ Fail: A 80 Container should request CPU +✕ Fail: D 20 DaemonSets should mount any host path volumes as read-only +✕ Fail: F 0 Container should not run as a privileged container +✕ Fail: A 80 Container should request memory +✓ Pass: DaemonSets should not bind to a host port + +Asset: kube-system/kube-proxy-cdzrr +=================================== +Data queries: +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +mondoo.version: "8.11.0" +platform.release: "" +platform.title: "Kubernetes Pod, Kubernetes Cluster" + +Checks: +✓ Pass: Pod should not run with the default service account +. Unknown: Pods should not run Tiller (Helm v2) +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Pods should not run with SYS_ADMIN capability +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: D 20 Pods should mount any host path volumes as read-only +✕ Fail: A 80 Container should configure a livenessProbe +✓ Pass: Pod should not run with hostPID +✕ Fail: A 80 Container should request memory +✓ Pass: Container should not mount the Docker socket +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Pods should not bind to a host port +. Unknown: Pods should not run Kubernetes dashboard +✕ Fail: D 20 Container should use an immutable root filesystem +✕ Fail: A 80 Container should request CPU +✓ Pass: Pod should not define hostAliases +✕ Fail: D 20 Pod should not run with hostNetwork +✓ Pass: Container should not allow privilege escalation +✕ Fail: A 80 Container should configure a readinessProbe +✓ Pass: Container should not mount the containerd socket +✕ Fail: D 20 Pods should not run with NET_RAW capability +✓ Pass: Pods should have an owner +✓ Pass: Pods should not bind to a host port +✓ Pass: Pod should not run with hostIPC +✕ Fail: F 0 Container should not run as root +✕ Fail: A 80 Container should have a CPU limit +✕ Fail: F 0 Container should not run as a privileged container +✓ Pass: Workloads should not run in default namespace + +Asset: kube-system/kube-scheduler-minikube +========================================== +Data queries: +platform.release: "" +platform.title: "Kubernetes Pod, Kubernetes Cluster" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.arch: "" +mondoo.version: "8.11.0" + +Checks: +✕ Fail: A 80 Container should have a CPU limit +✕ Fail: D 20 Pods should not run with NET_RAW capability +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Pods should not bind to a host port +✕ Fail: D 20 Pod should not run with hostNetwork +✓ Pass: Pod should not run with the default service account +✓ Pass: Workloads should not run in default namespace +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Pods should not bind to a host port +✓ Pass: Pods should mount any host path volumes as read-only +✓ Pass: Container should request CPU +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Pod should not run with hostPID +✕ Fail: A 80 Container should configure a readinessProbe +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Container should not mount the Docker socket +✓ Pass: Pods should have an owner +. Unknown: Pods should not run Tiller (Helm v2) +✓ Pass: Container should not run as a privileged container +✓ Pass: Container should not mount the containerd socket +✓ Pass: Container should not allow privilege escalation +✕ Fail: A 80 Container should request memory +✓ Pass: Pod should not define hostAliases +✓ Pass: Container should configure a livenessProbe +✕ Fail: F 0 Container should not run as root +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Pod should not run with hostIPC + +Asset: kube-system/storage-provisioner +====================================== +Data queries: +platform.title: "Kubernetes Pod, Kubernetes Cluster" +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +mondoo.version: "8.11.0" +platform.release: "" + +Checks: +✓ Pass: Pods should not run with SYS_ADMIN capability +. Unknown: Pods should not run Tiller (Helm v2) +. Unknown: Pods should not run Kubernetes dashboard +✕ Fail: D 20 Pods should not run with NET_RAW capability +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Pods should not bind to a host port +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: A 80 Container should have a CPU limit +✕ Fail: D 20 Pods should mount any host path volumes as read-only +. Skipped: Container should configure a readinessProbe +✕ Fail: D 20 Container should use an immutable root filesystem +✕ Fail: D 20 Pod should not run with hostNetwork +✓ Pass: Pods should not bind to a host port +✓ Pass: Container should not mount the Docker socket +. Skipped: Container should configure a livenessProbe +✓ Pass: Pod should not define hostAliases +✕ Fail: A 80 Container should request CPU +✕ Fail: A 80 Container should request memory +✓ Pass: Container should not allow privilege escalation +✓ Pass: Workloads should not run in default namespace +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Container should not run as a privileged container +✓ Pass: Pod should not run with the default service account +✓ Pass: Pod should not run with hostIPC +✓ Pass: Pod should not run with hostPID +✕ Fail: C 50 Pods should have an owner +✕ Fail: F 0 Container should not run as root +✓ Pass: Container should not mount the containerd socket + +Asset: luna/luna-frontend +========================= +Data queries: +platform.arch: "" +platform.release: "" +platform.title: "Kubernetes Deployment, Kubernetes Cluster" +mondoo.version: "8.11.0" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} + +Checks: +✓ Pass: Pod should not run with hostNetwork +✕ Fail: A 80 Container should request CPU +✓ Pass: Deployments should not run in the default namespace +✕ Fail: A 80 Container should request memory +✕ Fail: A 80 Container should configure a readinessProbe +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Container should not mount the Docker socket +✕ Fail: F 0 Container should not run as root +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Container should not mount the containerd socket +✓ Pass: Pod should not run with the default service account +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Pod should not run with hostIPC +✓ Pass: Deployments should not bind to a host port +✓ Pass: Pod should not define hostAliases +✓ Pass: Pod should not run with hostPID +✕ Fail: D 20 Container should use an immutable root filesystem +✕ Fail: D 20 Deployments should not run with NET_RAW capability +✕ Fail: A 80 Container should configure a livenessProbe +✓ Pass: Container should not allow privilege escalation +. Unknown: Deployments should not run Tiller (Helm v2) +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Deployments should mount any host path volumes as read-only +✓ Pass: Container should not run as a privileged container +✓ Pass: Deployments should not run with SYS_ADMIN capability + +Asset: luna/luna-frontend-7fb96c846b +==================================== +Data queries: +mondoo.version: "8.11.0" +platform.arch: "" +platform.release: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.title: "Kubernetes ReplicaSet, Kubernetes Cluster" + +Checks: +✕ Fail: A 80 Container should have a memory limit +✕ Fail: A 80 Container should request CPU +✓ Pass: Pod should not run with hostPID +✕ Fail: D 20 ReplicaSets should not run with NET_RAW capability +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Container should not mount the containerd socket +✓ Pass: Container should not mount the CRI-O socket +✕ Fail: A 80 Container should configure a readinessProbe +✓ Pass: ReplicaSets should not run in the default namespace +✕ Fail: A 80 Container should request memory +✓ Pass: Pod should not run with hostIPC +✓ Pass: ReplicaSets should not run with SYS_ADMIN capability +✕ Fail: A 80 Container should configure a livenessProbe +✓ Pass: Container should not allow privilege escalation +✕ Fail: F 0 Container should not run as root +✓ Pass: Pod should not define hostAliases +✓ Pass: Pod should not run with the default service account +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Pod should not run with hostNetwork +✓ Pass: Container should not mount the Docker socket +✓ Pass: ReplicaSets should mount any host path volumes as read-only +✓ Pass: ReplicaSets should not bind to a host port +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Container should not run as a privileged container + +Asset: luna/luna-frontend-7fb96c846b-2k5j7 +========================================== +Data queries: +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.release: "" +platform.title: "Kubernetes Pod, Kubernetes Cluster" +platform.arch: "" +mondoo.version: "8.11.0" + +Checks: +✓ Pass: Container should not mount the Docker socket +✓ Pass: Pod should not run with hostIPC +✓ Pass: Workloads should not run in default namespace +. Unknown: Pods should not run Tiller (Helm v2) +✓ Pass: Pods should not bind to a host port +✓ Pass: Container should not allow privilege escalation +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Pod should not run with hostNetwork +✕ Fail: A 80 Container should have a memory limit +✕ Fail: F 0 Container should not run as root +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Pod should not run with hostPID +✓ Pass: Container should not mount the containerd socket +✓ Pass: Pods should mount any host path volumes as read-only +✕ Fail: A 80 Container should configure a livenessProbe +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Container should not mount the CRI-O socket +✕ Fail: A 80 Container should request CPU +✓ Pass: Container should not run as a privileged container +✕ Fail: D 20 Pods should not run with NET_RAW capability +✕ Fail: A 80 Container should configure a readinessProbe +✓ Pass: Pod should not define hostAliases +✕ Fail: A 80 Container should have a CPU limit +✕ Fail: A 80 Container should request memory +✓ Pass: Pods should not bind to a host port +✕ Fail: B 70 Pod should not run with the default service account +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Pods should have an owner + +Asset: luna/luna-frontend-7fb96c846b-8b94j +========================================== +Data queries: +mondoo.version: "8.11.0" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.arch: "" +platform.title: "Kubernetes Pod, Kubernetes Cluster" +platform.release: "" + +Checks: +✓ Pass: Pods should not bind to a host port +✕ Fail: A 80 Container should have a memory limit +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: B 70 Pod should not run with the default service account +✓ Pass: Pod should not run with hostNetwork +✕ Fail: A 80 Container should configure a livenessProbe +✓ Pass: Container should not allow privilege escalation +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Container should not mount the containerd socket +✓ Pass: Container should not mount the CRI-O socket +✕ Fail: D 20 Pods should not run with NET_RAW capability +. Unknown: Pods should not run Tiller (Helm v2) +✕ Fail: A 80 Container should configure a readinessProbe +✓ Pass: Pods should not bind to a host port +✕ Fail: A 80 Container should request memory +✓ Pass: Pods should have an owner +✓ Pass: Workloads should not run in default namespace +✓ Pass: Pod should not run with hostIPC +✓ Pass: Container should not mount the Docker socket +✓ Pass: Pod should not run with hostPID +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Pods should mount any host path volumes as read-only +✕ Fail: A 80 Container should request CPU +✓ Pass: Pod should not define hostAliases +✕ Fail: F 0 Container should not run as root +✓ Pass: Container should not run as a privileged container +✕ Fail: A 80 Container should have a CPU limit + +Asset: luna/luna-frontend-7fb96c846b-jglt9 +========================================== +Data queries: +platform.arch: "" +platform.release: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.title: "Kubernetes Pod, Kubernetes Cluster" +mondoo.version: "8.11.0" + +Checks: +✕ Fail: D 20 Pods should not run with NET_RAW capability +✕ Fail: A 80 Container should configure a livenessProbe +✕ Fail: A 80 Container should request memory +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Container should not mount the Docker socket +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Pods should have an owner +. Unknown: Pods should not run Tiller (Helm v2) +✓ Pass: Pod should not define hostAliases +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Pod should not run with hostNetwork +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: A 80 Container should have a memory limit +✕ Fail: F 0 Container should not run as root +✓ Pass: Container should not run as a privileged container +✓ Pass: Pods should not run with SYS_ADMIN capability +✕ Fail: B 70 Pod should not run with the default service account +✓ Pass: Pod should not run with hostIPC +✕ Fail: A 80 Container should configure a readinessProbe +✓ Pass: Container should not mount the containerd socket +✓ Pass: Pods should not bind to a host port +✕ Fail: A 80 Container should request CPU +✓ Pass: Pods should mount any host path volumes as read-only +✓ Pass: Container should not allow privilege escalation +✓ Pass: Pods should not bind to a host port +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Workloads should not run in default namespace +✓ Pass: Pod should not run with hostPID + +Asset: luna/postgresql +====================== +Data queries: +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.title: "Kubernetes Deployment, Kubernetes Cluster" +mondoo.version: "8.11.0" +platform.release: "" + +Checks: +✓ Pass: Deployments should not bind to a host port +✕ Fail: A 80 Container should request memory +✓ Pass: Pod should not run with hostNetwork +✓ Pass: Pod should not define hostAliases +. Unknown: Deployments should not run Tiller (Helm v2) +✓ Pass: Deployments should mount any host path volumes as read-only +✓ Pass: Deployments should not run with SYS_ADMIN capability +✓ Pass: Deployments should not run in the default namespace +✓ Pass: Container should not mount the CRI-O socket +✕ Fail: F 0 Container should not run as root +✕ Fail: D 20 Deployments should not run with NET_RAW capability +✕ Fail: A 80 Container should have a memory limit +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Container should not mount the Docker socket +✕ Fail: A 80 Container should request CPU +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Pod should not run with hostIPC +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Container should not mount the containerd socket +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Pod should not run with hostPID +✓ Pass: Container should not run as a privileged container +✓ Pass: Container should not allow privilege escalation +✕ Fail: A 80 Container should configure a livenessProbe +✓ Pass: Pod should not run with the default service account +✕ Fail: A 80 Container should configure a readinessProbe + +Asset: luna/postgresql-655d75f54b +================================= +Data queries: +mondoo.version: "8.11.0" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.arch: "" +platform.title: "Kubernetes ReplicaSet, Kubernetes Cluster" +platform.release: "" + +Checks: +✓ Pass: Container should not run as a privileged container +✓ Pass: Pod should not run with hostPID +✕ Fail: A 80 Container should request memory +✕ Fail: A 80 Container should configure a readinessProbe +✓ Pass: Pod should not define hostAliases +✓ Pass: ReplicaSets should not bind to a host port +✓ Pass: Pod should not run with hostNetwork +✓ Pass: ReplicaSets should mount any host path volumes as read-only +✕ Fail: A 80 Container should have a memory limit +✓ Pass: ReplicaSets should not run with SYS_ADMIN capability +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: A 80 Container should have a CPU limit +✕ Fail: D 20 Container should use an immutable root filesystem +✕ Fail: D 20 ReplicaSets should not run with NET_RAW capability +✓ Pass: ReplicaSets should not run in the default namespace +✓ Pass: Container should not mount the containerd socket +✓ Pass: Container should not allow privilege escalation +✕ Fail: F 0 Container should not run as root +✓ Pass: Container should not mount the Docker socket +✕ Fail: A 80 Container should request CPU +✕ Fail: A 80 Container should configure a livenessProbe +✓ Pass: Pod should not run with hostIPC +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Pod should not run with the default service account + +Asset: luna/postgresql-655d75f54b-btbzv +======================================= +Data queries: +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.title: "Kubernetes Pod, Kubernetes Cluster" +mondoo.version: "8.11.0" +platform.release: "" +platform.arch: "" + +Checks: +✕ Fail: C 40 Container image pull should be consistent +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Pods should mount any host path volumes as read-only +✓ Pass: Container should not run as a privileged container +✓ Pass: Pods should have an owner +. Unknown: Pods should not run Tiller (Helm v2) +✕ Fail: A 80 Container should request memory +✓ Pass: Pods should not bind to a host port +✕ Fail: A 80 Container should configure a livenessProbe +✕ Fail: B 70 Pod should not run with the default service account +✓ Pass: Container should not mount the Docker socket +✕ Fail: A 80 Container should configure a readinessProbe +✕ Fail: D 20 Pods should not run with NET_RAW capability +✓ Pass: Pod should not run with hostNetwork +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Pod should not run with hostPID +✓ Pass: Container should not mount the containerd socket +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Pod should not define hostAliases +✓ Pass: Container should not allow privilege escalation +✕ Fail: A 80 Container should request CPU +✓ Pass: Pods should not bind to a host port +✕ Fail: F 0 Container should not run as root +✓ Pass: Workloads should not run in default namespace +✓ Pass: Pods should not run with SYS_ADMIN capability +✓ Pass: Pod should not run with hostIPC +✓ Pass: Container should not mount the CRI-O socket +✕ Fail: D 20 Container should use an immutable root filesystem + +Asset: luna/postgresql-655d75f54b-qhhxv +======================================= +Data queries: +platform.release: "" +mondoo.version: "8.11.0" +platform.title: "Kubernetes Pod, Kubernetes Cluster" +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} + +Checks: +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Pods should not bind to a host port +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Pod should not run with hostNetwork +✓ Pass: Pods should not run with SYS_ADMIN capability +✕ Fail: F 0 Container should not run as root +✓ Pass: Pods should mount any host path volumes as read-only +✓ Pass: Container should not mount the Docker socket +✕ Fail: C 40 Container image pull should be consistent +. Unknown: Pods should not run Tiller (Helm v2) +✓ Pass: Pod should not run with hostPID +✓ Pass: Pod should not define hostAliases +✓ Pass: Pod should not run with hostIPC +. Unknown: Pods should not run Kubernetes dashboard +✕ Fail: A 80 Container should configure a readinessProbe +✕ Fail: A 80 Container should configure a livenessProbe +✕ Fail: A 80 Container should request memory +✓ Pass: Container should not mount the containerd socket +✓ Pass: Workloads should not run in default namespace +✓ Pass: Pods should not bind to a host port +✓ Pass: Container should not run as a privileged container +✓ Pass: Pods should have an owner +✓ Pass: Container should not allow privilege escalation +✕ Fail: B 70 Pod should not run with the default service account +✕ Fail: A 80 Container should request CPU +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Container should not mount the CRI-O socket +✕ Fail: D 20 Pods should not run with NET_RAW capability +``` + +
+ +:::tip + +To see scan results in full detail, run: + +```bash +cnspec scan k8s -o full +``` + +::: + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +## Test Kubernetes with the cnspec shell + +The cnspec shell is handy for quick checks and tests, or for developing your MQL skills. Its auto-complete and help features guide you in writing checks. + +To launch a shell into your Kubernetes environment, enter: + +```bash +cnspec shell k8s +``` + +cnquery automatically discovers all the Kubernetes assets available to query: + +```text +→ resolved assets resolved-assets=20 + + Available assets + + 8. luna/luna-frontend-7fb96c846b-2k5j7 (k8s-pod) + > 9. luna/luna-frontend-7fb96c846b-8b94j (k8s-pod) + 10. luna/luna-frontend-7fb96c846b-jglt9 (k8s-pod) + 11. kube-system/kube-controller-manager-minikube (k8s-pod) + 12. kube-system/kube-proxy-cdzrr (k8s-pod) + 13. kube-system/kube-scheduler-minikube (k8s-pod) + 14. kube-system/storage-provisioner (k8s-pod) + + ••• +``` + +Arrow through the list and select Enter to choose the asset you want to explore. + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Kubernetes resources you can test. This command lists all the Kubernetes resources: + +```coffee +help k8s +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the Kubernetes service resources you can test: + +```coffee +help k8s.service +``` + +From the resulting list, you can drill down even further. You can also learn about available Kubernetes resources in the [Mondoo Kubernetes (K8s) Resource Pack Reference](/mql/resources/k8s-pack/). + +### Run tests in the cnspec shell + +Now that you know how to discover what's possible with cnspec, let's run some actual tests in the shell. + +#### Ensure that Pods aren't managed by HostAliases + +This test assures that DNS entries aren't managed locally using `/etc/hosts` within Pods: + +```coffee +k8s.pod { podSpec['hostAliases'] == null } +``` + +If the test passes (no Pods are managed using HostAliases) then cnspec returns `ok`. If the test fails, (one or more Pods are managed using HostAliases) then cnspec provides details about the failure. + +#### Test workload management + +This test asserts that you don't run any workloads in the default namespace: + +```coffee +k8s.pods { namespace != "default" } +``` + +cnspec lists the individual Pod results: + +```coffee +k8s.pods: [ + 0: { + namespace != "default": false + } + 1: { + namespace != "default": true + } + 2: { + namespace != "default": true + } + 3: { + namespace != "default": true + } + +... + +] +``` + +#### Specify fields to include in results + +If you need more information in the results, specify the fields you want in braces. For example, this is the same test as above, but also asks for each Pod's ID, name, date created, and namespace: + +```coffee +k8s.pods { namespace != "default" id name created namespace } +``` + +cnspec returns detailed results like this: + +```coffee +k8s.pods: [ + 0: { + namespace: "default" + name: "coredns-565d847f94-zxkk2" + created: 2022-12-14 15:17:51 -0800 PST + id: "pod:kube-system:coredns-565d847f94-zxkk2" + namespace != "default": false + } + 1: { + namespace: "luna" + name: "luna-frontend-7fb96c846b-2k5j7" + created: 2022-12-14 15:28:23 -0800 PST + id: "pod:luna:luna-frontend-7fb96c846b-2k5j7" + namespace != "default": true + } + 2: { + namespace: "luna" + name: "luna-frontend-7fb96c846b-8b94j" + created: 2022-12-14 15:28:23 -0800 PST + id: "pod:luna:luna-frontend-7fb96c846b-8b94j" + namespace != "default": true + } + 3: { + namespace: "luna" + name: "luna-frontend-7fb96c846b-jglt9" + created: 2022-12-14 15:28:23 -0800 PST + id: "pod:luna:luna-frontend-7fb96c846b-jglt9" + namespace != "default": true + } + +... + +] +``` + +### Learn more about writing tests against Kubernetes clusters + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). +- For a list of all the Kubernetes resources and fields you can query, read the [Mondoo Kubernetes (K8s) Resource Pack Reference](/mql/resources/k8s-pack/). + +### Exit the cnspec shell + +To exit the cnspec shell, either press `Ctrl + D` or type `exit`. + +## Next step + +Now that you've scanned your Kubernetes environment and run tests using the cnquery shell, you're ready to dive deeper and [test Kubernetes manifests](/cnspec/cnspec-k8s/cnspec-k8s-manifest/). + +--- diff --git a/docs/cnspec/cnspec-k8s/cnspec-k8s-manifest.mdx b/docs/cnspec/cnspec-k8s/cnspec-k8s-manifest.mdx new file mode 100644 index 000000000..3620e9646 --- /dev/null +++ b/docs/cnspec/cnspec-k8s/cnspec-k8s-manifest.mdx @@ -0,0 +1,163 @@ +--- +title: Assess a Kubernetes Manifest +id: cnspec-k8s-manifest +sidebar_label: Assess a Kubernetes Manifest +displayed_sidebar: cnspec +sidebar_position: 30 +description: Assess the security and compliance of a Kubernetes Manifest +image: /img/featured_img/mondoo-k8s.jpg +--- + +Use cnspec to scan Kubernetes manifests for security and best practices. You can assess manifests using the same policies that you rely on for testing your live clusters. + +To scan a Kubernetes manifest, you need a Kubernetes policy. If you haven't already [downloaded the Kubernetes Security by Mondoo policy](/cnspec/cnspec-k8s/cnspec-k8s-cluster/#assess-kubernetes-security-with-policy-based-scanning), do so now. + +From the directory where you downloaded the policy, run: + +```bash +cnspec scan k8s MANIFESTFILE +``` + +For MANIFESTFILE, substitute the path to the manifest file you want to scan. For example, run: + +```bash +cnspec scan k8s luna-postgres.yml +``` + +cnspec returns a report summarizing the scan results. + +
+Show or hide example scan results. + +``` +→ loaded configuration from /Users/user/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ discovery option auto is used. This will detect the assets: cluster, jobs, cronjobs, pods, statefulsets, deployments, replicasets, daemonsets +→ resolved assets resolved-assets=3 +→ connecting to asset K8s Manifest luna-postgres (code) + +██████████████████████████████████████████████████████████████████████████ 100% K8s Manifest luna-postgres +→ connecting to asset luna/postgresql (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/postgres +→ connecting to asset luna/postgresql-secondary (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/postgresql-secondary + + +Asset: K8s Manifest luna-postgresql +=================================== +Data queries: +mondoo.version: "8.11.0" +platform.title: "Kubernetes Manifest" +platform.release: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.arch: "" + +Checks: + +Asset: luna/postgresql +====================== +Data queries: +platform.arch: "" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.title: "Kubernetes Deployment, Kubernetes Manifest File" +mondoo.version: "8.11.0" +platform.release: "" + +Checks: +✓ Pass: Pod should not run with hostNetwork +✓ Pass: Deployments should not run in the default namespace +✕ Fail: A 80 Container should configure a livenessProbe +. Unknown: Pods should not run Kubernetes dashboard +✕ Fail: F 0 Container should not run as root +✓ Pass: Container should not allow privilege escalation +✕ Fail: C 40 Container image pull should be consistent +✕ Fail: A 80 Container should have a memory limit +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Pod should not run with hostIPC +✕ Fail: A 80 Container should configure a readinessProbe +✕ Fail: D 20 Deployments should not run with NET_RAW capability +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Deployments should not run with SYS_ADMIN capability +✓ Pass: Deployments should mount any host path volumes as read-only +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Deployments should not bind to a host port +✓ Pass: Pod should not define hostAliases +✓ Pass: Container should not mount the Docker socket +✕ Fail: A 80 Container should request memory +. Unknown: Deployments should not run Tiller (Helm v2) +✓ Pass: Container should not run as a privileged container +✓ Pass: Container should not mount the containerd socket +✕ Fail: A 80 Container should request CPU +✓ Pass: Pod should not run with hostPID +✓ Pass: Pod should not run with the default service account + +Asset: luna/postgresql-secondary +================================ +Data queries: +mondoo.version: "8.11.0" +mondoo.jobEnvironment: { + id: "client.mondoo.com" + name: "Mondoo Client" +} +platform.arch: "" +platform.title: "Kubernetes Deployment, Kubernetes Manifest File" +platform.release: "" + +Checks: +✓ Pass: Deployments should not run with SYS_ADMIN capability +✕ Fail: F 0 Container should not run as root +✕ Fail: A 80 Container should request memory +✓ Pass: Pod should not run with hostPID +✕ Fail: A 80 Container should have a memory limit +✓ Pass: Pod should not run with hostNetwork +✓ Pass: Container should not mount the CRI-O socket +✓ Pass: Container should not run as a privileged container +. Unknown: Pods should not run Kubernetes dashboard +✓ Pass: Pod should not run with the default service account +✕ Fail: D 20 Container should use an immutable root filesystem +✓ Pass: Deployments should mount any host path volumes as read-only +. Unknown: Deployments should not run Tiller (Helm v2) +✕ Fail: A 80 Container should configure a readinessProbe +✕ Fail: A 80 Container should have a CPU limit +✓ Pass: Container should not allow privilege escalation +✕ Fail: D 20 Deployments should not run with NET_RAW capability +✕ Fail: C 40 Container image pull should be consistent +✓ Pass: Deployments should not bind to a host port +✕ Fail: A 80 Container should configure a livenessProbe +✕ Fail: A 80 Container should request CPU +✓ Pass: Deployments should not run in the default namespace +✓ Pass: Container should not mount the containerd socket +✓ Pass: Pod should not run with hostIPC +✓ Pass: Pod should not define hostAliases +✓ Pass: Container should not mount the Docker socket + +``` + +
+ +:::tip + +To see scan results in full detail, run: + +```bash +cnspec scan k8s -o full +``` + +::: + +## Learn more about testing Kubernetes + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the Kubernetes resources and fields you can query, read the [Mondoo Kubernetes (K8s) Resource Pack Reference](/mql/resources/k8s-pack/). + +--- diff --git a/docs/cnspec/cnspec-oci/README.mdx b/docs/cnspec/cnspec-oci/README.mdx new file mode 100644 index 000000000..c0e403932 --- /dev/null +++ b/docs/cnspec/cnspec-oci/README.mdx @@ -0,0 +1,202 @@ +--- +title: Assess Oracle Cloud Infrastructure (OCI) Security with cnspec +id: cnspec-oci-intro +sidebar_label: OCI +displayed_sidebar: cnspec +sidebar_position: 1 +description: Assess Oracle Cloud Infrastructure (OCI) Security with cnspec +image: /img/featured_img/mondoo-oci.jpg +--- + +cnspec assesses your full Oracle Cloud Infrastructure (OCI) environment for misconfigurations that put your organization at risk. You can scan your OCI tenancy for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +cnspec can test any aspect of your OCI configuration. For a list of OCI resources you can test, read [Mondoo Oracle Cloud Infrastructure (OCI) Resource Pack Reference](/mql/resources/oci-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnspec with your OCI environment + +### Requirements + +To test your OCI environment with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/). + +- Access to an [OCI tenancy](https://docs.oracle.com/en/cloud/foundation/cloud_architecture/governance/tenancy.html#what-is-a-tenancy) + +### Configure command-line access to OCI + +For cnspec to communicate with your OCI tenancy, you need to configure secure access from the command line. You download a private API key and create a config file to automatically authenticate you with Oracle. + +1. In the top-right corner of the Oracle Cloud Infrastructure Console, select your profile icon and select **My profile**. + + ![OCI profile menu](/img/cnspec/oci/profile-menu.png) + +2. Under Resources, select **API keys**. + + ![OCI API keys](/img/cnspec/oci/api-keys.png) + +3. Select the **Add API key** button. + + ![Add OCI API key](/img/cnspec/oci/add-api-key.png) + +4. Leave **Generate API key pair** selected and select the **Download private key** button. + +5. Create a new directory on your workstation, `~/.oci/`, and move the downloaded private key file into the new directory. + +6. Select the **Add** button. OCI generates a config file for you. Copy the contents of the **Configuration file preview** box. + + ![OCI config preview](/img/cnspec/oci/config-preview.png) + +7. In the new directory, create a file named `config` and paste the content you copied in step 6. Replace the `key_file` placeholder on the last line with the path and file name of your private key file. + + ```text + [DEFAULT] + user=ocid1.user.oc1..aaaaaaaavixjk7guncl6q7jf663vyeygprgjtgg5yiesxpwx4i6m6r23xmna + fingerprint=c9:1d:c8:e1:54:26:b7:82:2c:7d:b5:be:0a:62:b7:b8 + tenancy=ocid1.tenancy.oc1..aaaaaaaabnjfuyr73mmvv6ep7heu57576abelhju5ni333c6rrfqiu6q6joq + region=us-ashburn-1 + key_file=/Users/stella/.oci/stella@lunalectric.com_2023-05-31T22_43_19.044Z.pem + ``` + +### Verify with a quick OCI check + +To quickly confirm that cnspec has access to your OCI environment, run this check from your terminal: + +```bash +cnspec run oci -c 'oci.tenancy { id!="foo" }' +``` + +It asserts that your tenancy does not have the ID `foo`. + +cnspec indicates that the check is true, that your tenancy is not named `foo`: + +```coffee +oci.tenancy: { + id != "foo": true +} +``` + +You've successfully used cnspec to run your first check on your OCI environment. Now you're ready to explore. The method you choose depends on your goals: + +- For widescale assessment of your OCI infrastructure, scan using policy bundles. These collections of tests work together to present a broad picture of your OCI security posture. + +- To run ad hoc checks against your OCI environment, use cnspec's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnspec and learning MQL. + +## Assess OCI security with policy-based scanning + +The CIS Oracle Cloud Infrastructure Foundation Benchmark policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental OCI security best practices. It checks for misconfigurations across your entire OCI infrastructure. + +To scan using the OCI Security by Mondoo policy, run: + +```bash +cnspec scan oci +``` + +This scans the tenancy to which your OCI account gives you access. + +cnspec follows these steps to load policies on which it bases the scan: + +- cnspec tries to read a config file, mondoo.yml, which includes the certificate and private key for authenticating with Mondoo Platform. If it finds the config, it loads the policies enabled for the OCI integration in the Mondoo space this OCI environment belongs to. You can enter `cnspec status` to see if the config file exists and cnspec is registered. + +2. If there is no config file (you have not registered cnspec or you've removed the mondoo.yml file), then cnspec loads Mondoo's open source policies and scans based on those. + +:::info + +If cnspec is registered but you want to use the open source policies (and not share results with Mondoo Platform), you can scan in incognito mode: + +```bash +cnspec scan oci --incognito +``` + +::: + +You can also specify a particular policy bundle. cnspec uses only the bundle you specify: + +```bash +cnspec scan oci --policy mondoohq/oracle-cloud-infrastructure-foundation-level-1 +``` + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +## Test OCI with the cnspec shell + +The cnspec shell is handy for quick checks and tests, or for developing your MQL skills. Its auto-complete and help features guide you in writing checks. + +To launch a shell into your OCI environment, enter: + +```bash +cnspec shell oci +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what OCI resources you can test. This command lists all the OCI resources: + +```bash +help oci +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the OCI Object Storage resources you can test: + +```bash +help oci.objectStorage +``` + +From the resulting list, you can drill down even further. You can also learn about available OCI resources in the [Mondoo OCI Resource Pack Reference](/mql/resources/oci-pack/). + +### Run tests in the cnspec shell + +Now that you know how to discover what's possible with cnspec, let's run some actual tests in the shell. + +#### Assess MFA for console users + +This test assures that multi-factor authentication (MFA) is enabled for all users with console access: + +```bash +oci.identity.users.all( mfaActivated ) +``` + +If the test passes, that means all users have MFA enabled. If the test fails, cnspec lists all the user accounts that don't have MFA enabled. + +```coffee +[failed] [].all() + actual: [ + 0: oci.identity.user { + name: "mwezi@lunalectric.com" + mfaActivated: false + } + 1: oci.identity.user { + name: "stella@lunalectric.com" + mfaActivated: false + } + 2: oci.identity.user { + name: "tsuki@lunalectric.com" + mfaActivated: false + } + 3: oci.identity.user { + name: "cosmo@lunalectric.com" + mfaActivated: false + } + ] +``` + +#### Assess audit log retention + +This test asserts that audit logs remain in storage for 365 days: + +```bash +oci.tenancy.retentionPeriod == 365 * time.day +``` + +cnspec returns `ok` or `failed` and the actual retention time. + +### Exit the cnspec shell + +To exit the cnspec shell, either press `Ctrl + D` or type `exit`. + +## Learn more about querying OCI + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the OCI resources and fields you can query, read the [Mondoo OCI Resource Pack Reference](/mql/resources/oci-pack/). + +--- diff --git a/docs/cnspec/cnspec-oper/cnspec-linux.mdx b/docs/cnspec/cnspec-oper/cnspec-linux.mdx new file mode 100644 index 000000000..db8d550f4 --- /dev/null +++ b/docs/cnspec/cnspec-oper/cnspec-linux.mdx @@ -0,0 +1,64 @@ +--- +title: Assess Linux Security with cnspec +id: cnspec-linux-intro +sidebar_label: Linux +displayed_sidebar: cnspec +sidebar_position: 1 +description: Assess Linux Security with cnspec +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec assesses your Linux assets for misconfigurations that put your organization at risk. You can evaluate a Linux asset for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/). You also can write individual tests to run on the fly or include in automated tasks. + +For a list of Linux resources you can test, read [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Requirements + +To test a Linux asset with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/) +- Access to the asset + +## Assess Linux security with policy-based scanning + +The Linux Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental Linux security best practices. + +To scan a local machine using the Linux Security by Mondoo policy, run: + +```bash +cnspec scan +``` + +To scan a remote machine using the Linux Security by Mondoo policy, run: + +```bash +cnspec scan ssh user@HOST +``` + +For `HOST`, substitute the hostname of the remote Linux asset. + +cnspec finds the default policy for Linux and runs a scan based on that policy. It returns a report summarizing the scan results. + +To learn more about the command, read [cnspec scan](/cnspec/cli/cnspec_scan/). + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +## Learn more + +cnspec also provides an interactive shell in which you can explore. It helps you understand the checks that cnspec policies use, and write your own as well. It's also a great way to interact with both local and remote targets on the fly. To learn more, read [Create Checks in cnspec Shell](/cnspec/cnspec-scan/). + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the operating system resources and fields you can query, read the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/). + +- To learn about cnspec commands, read: + + - [cnspec scan](/cnspec/cli/cnspec_scan/) + + - [cnspec shell](/cnspec/cli/cnspec_shell/) + + - [cnspec run](/cnspec/cli/cnspec_run/) + + - [cnspec vuln](/cnspec/cli/cnspec_vuln/) + +--- diff --git a/docs/cnspec/cnspec-oper/cnspec-mac.mdx b/docs/cnspec/cnspec-oper/cnspec-mac.mdx new file mode 100644 index 000000000..dffacde03 --- /dev/null +++ b/docs/cnspec/cnspec-oper/cnspec-mac.mdx @@ -0,0 +1,64 @@ +--- +title: Assess macOS Security with cnspec +id: cnspec-macos-intro +sidebar_label: macOS +displayed_sidebar: cnspec +sidebar_position: 2 +description: Assess macOS Security with cnspec +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec assesses your macOS assets for misconfigurations that put your organization at risk. You can evaluate a macOS asset for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +For a list of macOS resources you can test, read [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Requirements + +To test a macOS asset with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/) +- Access to the asset + +## Assess macOS security with policy-based scanning + +The macOS Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental macOS security best practices. + +To scan a local machine using the macOS Security by Mondoo policy, run: + +```bash +cnspec scan +``` + +To scan a remote machine using the macOS Security by Mondoo policy, run: + +```bash +cnspec scan ssh user@IP_ADDRESS +``` + +For `IP_ADDRESS`, substitute the IP address of the remote macOS asset. + +cnspec finds the default policy for macOS and runs a scan based on that policy. It returns a report summarizing the scan results. + +To learn more about the command, read [cnspec scan](/cnspec/cli/cnspec_scan/). + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +## Learn more + +cnspec also provides an interactive shell in which you can explore. It helps you understand the checks that cnspec policies use, and write your own as well. It’s also a great way to interact with both local and remote targets on the fly. To learn more, read [Create Checks in cnspec Shell](/cnspec/cnspec-scan/). + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the operating system resources and fields you can query, read the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/). + +- To learn about cnspec commands, read: + + - [cnspec scan](/cnspec/cli/cnspec_scan/) + + - [cnspec shell](/cnspec/cli/cnspec_shell/) + + - [cnspec run](/cnspec/cli/cnspec_run/) + + - [cnspec vuln](/cnspec/cli/cnspec_vuln/) + +--- diff --git a/docs/cnspec/cnspec-oper/cnspec-windows.mdx b/docs/cnspec/cnspec-oper/cnspec-windows.mdx new file mode 100644 index 000000000..d1fac67b2 --- /dev/null +++ b/docs/cnspec/cnspec-oper/cnspec-windows.mdx @@ -0,0 +1,72 @@ +--- +title: Assess Windows Security with cnspec +id: cnspec-windows-intro +sidebar_label: Windows +displayed_sidebar: cnspec +sidebar_position: 3 +description: Assess Windows Security with cnspec +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec assesses your Windows assets for misconfigurations that put your organization at risk. You can evaluate a Windows asset for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +For a list of Windows resources you can test, read [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Requirements + +To test a Windows asset with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/) +- Access to the asset + +## Assess Windows security with policy-based scanning + +The Windows Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental Windows security best practices. + +To scan a local machine using the Windows Security by Mondoo policy, run: + +```bash +cnspec scan +``` + +To scan a remote machine using the Windows Security by Mondoo policy, run: + +```bash +cnspec scan ssh user@IP_ADDRESS +``` + +For `IP_ADDRESS`, substitute the IP address of the remote Windows asset. + +If you prefer WinRM for remote access, enter: + +```bash +cnspec scan winrm Administrator@IP_ADDRESS --ask-pass +``` + +For `IP_ADDRESS`, substitute the IP address of the remote Windows asset. + +cnspec finds the default policy for Windows and runs a scan based on that policy. It returns a report summarizing the scan results. + +To learn more about the command, read [cnspec scan](/cnspec/cli/cnspec_scan/). + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +## Learn more + +cnspec also provides an interactive shell in which you can explore. It helps you understand the checks that cnspec policies use, and write your own as well. It’s also a great way to interact with both local and remote targets on the fly. To learn more, read [Create Checks in cnspec Shell](/cnspec/cnspec-scan/). + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the operating system resources and fields you can query, read the [Mondoo Operating Systems (OS) Resource Pack Reference](/mql/resources/os-pack/). + +- To learn about cnspec commands, read: + + - [cnspec scan](/cnspec/cli/cnspec_scan/) + + - [cnspec shell](/cnspec/cli/cnspec_shell/) + + - [cnspec run](/cnspec/cli/cnspec_run/) + + - [cnspec vuln](/cnspec/cli/cnspec_vuln/) + +--- diff --git a/docs/cnspec/cnspec-platform.mdx b/docs/cnspec/cnspec-platform.mdx new file mode 100644 index 000000000..d540a0453 --- /dev/null +++ b/docs/cnspec/cnspec-platform.mdx @@ -0,0 +1,66 @@ +--- +title: Log into Mondoo Platform for More Capabilities +id: cnspec-platform +sidebar_label: Log into Mondoo Platform for More +displayed_sidebar: cnspec +sidebar_position: 3 +description: Expand your cnspec capabilities with a free Mondoo Platform account. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can expand your cnspec capabilities with a free Mondoo Platform account. Mondoo Platform includes a web-based UI through which you can: + +- Continuously monitor infrastructure security and compliance +- Save, review, search, and share scan results +- Access over 200 free security policies, including specific compliance checks against regional and industry guidelines +- Manage and share policies across your entire infrastructure +- See the relationships between different assets in your infrastructure +- Integrate with AWS Lambda, EBS volume scans, Kubernetes controller, and more + +This is just a partial list of capabilities. To learn more about what you can accomplish with Mondoo Platform, visit [mondoo.com](https://mondoo.com). + +## Log into Mondoo Platform + +1. In your web browser, go to [the Mondoo signup page](https://mondoo.com/pricing). + +![Sign up for Mondoo Platform](/img/platform/start/mondoo-platform-pricing.png) + +2. Register for a free trial. Mondoo sends you email with new account instructions. + +3. Follow the steps in the email to create your new account. + +## Register cnspec + +When you first log in, Mondoo greets you with a landing page. + +![Landing Page](/img/platform/start/welcome_to_mondoo.png) + +1. Select **Browse Integrations**. + +![Add cnspec](/img//cnspec/cnspec-add-integration.png) + +2. Under Workstation, select **cnspec**. Mondoo provides quick setup commands and a token for registering cnspec. + +![Register cnspec with Mondoo Platform](/img/cnspec/cnspec-platform-quick-setup.png) + +3. Select your operating system and then copy the commands in the box below. + +4. In a terminal window, paste and run the copied commands. + +cnspec is now registered with Mondoo Platform. The next time you scan your infrastructure with cnspec, you can see the results in the Mondoo console. + +To learn about working in the Mondoo console, see the [Mondoo Platform documentation](/platform/home/). + +## Specify a proxy server for communication with Mondoo + +You can specify a proxy server for communication between cnspec and Mondoo Platform. This is useful if your default system proxy restricts communication, or if you need to monitor different types of traffic. + +1. Find the Mondoo configuration file: `/etc/opt/mondoo/mondoo.yml`. + +2. Add this line to `mondoo.yml`: + + ```yaml + api_proxy: https://1.1.1.1:8080 + ``` + +--- diff --git a/docs/cnspec/cnspec-policies/README.md b/docs/cnspec/cnspec-policies/README.md new file mode 100644 index 000000000..3683ef83f --- /dev/null +++ b/docs/cnspec/cnspec-policies/README.md @@ -0,0 +1,59 @@ +--- +title: About Policies +id: cnspec-policies +sidebar_label: About Policies +displayed_sidebar: cnspec +sidebar_position: 1 +description: Retrieve, store, customize, and create cnquery policies +image: /img/featured_img/mondoo-feature.jpg +--- + +Policies are the specifications that cnspec uses when it scans a system. Think of a policy as a checklist that cnspec relies on to ensure that a system is secure. In Mondoo and cnspec, these collections of security requirements are expressed as highly readable code. + +## Policy as code​ + +Security policies and compliance frameworks typically are documents. Text describes each guideline and its rationale, and sometimes the consequences of not complying. + +But documents don't check your environments. The work to verify that your infrastructure follows security standards is often manual, time intensive, and error prone. For example, if you need to manually demonstrate compliance for an audit, it can take weeks just to provide a snapshot of a single moment in time. + +_Policy as code_ lets you automate compliance using security benchmarks and best practices. The code serves two purposes: It documents the security guidelines and it tests your systems to ensure they follow those guidelines. + +## cnspec policies and policy bundles + +Each cnspec policy is codified as a collection of checks that test for certain configuration settings. For example, the _Mondoo Linux Security - Users and Groups_ policy includes these checks: + +- There are no users in the root group. +- No duplicate user names exist. +- All system accounts are non-login. + +_Policy bundles_ are YAML files that contain at least one policy. They group related policies. For example, the _Mondoo Linux Security_ policy bundle contains a _Configure SSH Server_ policy that is specific to Linux, a _Logging_ policy that is specific to Linux, and other policies that define secure Linux practices. + +Find policy bundles in Mondoo's [cnspec-policies](https://github.com/mondoohq/cnspec-policies) GitHub repo. + +## How cnspec uses policies + +When cnspec scans a target for compliance with security and other best practices, it refers to policies to learn what checks to make against the target. + +For example, when you run this command, cnspec automatically detects the local platform and scans using the applicable policy or policies: + +```bash +cnspec scan local +``` + +For example, if the local system is Windows, cnspec finds all policy bundles that apply to Windows. It runs all the checks in the policies in the Windows policy bundles. + +This scan command specifies the policy bundle to use: + +```bash +cnspec scan local --policy-bundle luna.mql.yaml +``` + +Instead of detecting the local system and finding appropriate policy bundles, cnspec refers to `luna.mql.yaml`, a custom policy bundle, to find the checks to run against the local system. + +## Learn more + +- To learn how to modify existing policies or write your own, read the [Policy Authoring Guide](/cnspec/cnspec-policies/write/). + +- To learn about applying policies across your infrastructure and storing your own policies, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies) + +--- diff --git a/docs/cnspec/cnspec-policies/cnspec-manage-policies.mdx b/docs/cnspec/cnspec-policies/cnspec-manage-policies.mdx new file mode 100644 index 000000000..c61eacc5d --- /dev/null +++ b/docs/cnspec/cnspec-policies/cnspec-manage-policies.mdx @@ -0,0 +1,57 @@ +--- +title: Manage Policies +id: cnspec-manage-policies +sidebar_label: Manage Policies +displayed_sidebar: cnspec +sidebar_position: 2 +description: Scale policies across your infrastructure and store your own policies +image: /img/featured_img/mondoo-feature.jpg +--- + +If you customize or build your own policies, you can store and share access to them using Mondoo Platform. + +## Scale cnspec across your infrastructure + +The easiest way to scale cnspec across your infrastructure is to have all of your infrastructure pull policies from a central location. One simple approach is to sign up for a free account on [Mondoo Platform](/platform/start/plat-what-is/). The platform is designed for multi-tenancy and provides a secure, private environment that keeps data about your assets in your own account. With Mondoo Platform, all assets can report on policies and you can define custom exceptions for your infrastructure. + +To use cnspec with Mondoo Platform, run: + +```bash +cnspec login +``` + +Once authenticated, you can scan any target: + +```bash +cnspec scan +``` + +cnspec returns the results from the scan to STDOUT and to Mondoo Platform. + +## Upload policies to your account + +With an account on Mondoo Platform, you can upload policies: + +```bash +cnspec policy upload mypolicy.mql.yaml +``` + +## Create a policy bundle + +To learn about policies and policy bundles, read [Policies](/cnspec/cnspec-policies/). + +To set up a new policy bundle: + +```bash +cnspec bundle init example.mql.yaml +``` + +## Validate a policy bundle + +Validate a policy bundle to ensure that the bundle compiles and that all queries and references work: + +```bash +cnspec bundle validate example.mql.yaml +``` + +--- diff --git a/docs/cnspec/cnspec-policies/open-registry.mdx b/docs/cnspec/cnspec-policies/open-registry.mdx new file mode 100644 index 000000000..f92ec32d1 --- /dev/null +++ b/docs/cnspec/cnspec-policies/open-registry.mdx @@ -0,0 +1,14 @@ +--- +title: Discover New Policies in GitHub +sidebar_label: Discover New Policies +displayed_sidebar: cnspec +sidebar_position: 3 +description: Explore open source security policies by Mondoo and the Mondoo community. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo's [cnspec-policies](https://github.com/mondoohq/cnspec-policies) GitHub repository is a free source of security, best practices, and compliance policy bundles created by Mondoo and the Mondoo community. You can download any of these policy bundles and use them to scan your assets with cnspec. + +The `core` directory contains copies of the policy bundles that cnspec uses by default, so there's no need to download those policies. + +--- diff --git a/docs/cnspec/cnspec-policies/write/README.md b/docs/cnspec/cnspec-policies/write/README.md new file mode 100644 index 000000000..88fd15d2e --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/README.md @@ -0,0 +1,36 @@ +--- +title: Policy Authoring Guide +sidebar_label: Policy Authoring Guide +displayed_sidebar: cnspec +sidebar_position: 1 +description: Learn how to write custom security policies to meet the special needs of your organization +image: /img/featured_img/mondoo-feature.jpg +--- + +Policies are the specifications that cnspec uses when it scans an asset. cnspec compares your asset's configuration against the standards set in policies, and calculates a score based on the comparison. Scores tell you how secure your different assets are and allow you to see your progress as you improve your security posture. + +Mondoo provides dozens of free policy bundles (collections of policies) that cover the most common types of assets—and Mondoo Platform has over 200! If your organization has unique needs that these policy bundles don't meet, you can create custom policy bundles. + +Read these topics to learn how to build your own policies: + +1. [Write Custom Policies](/cnspec/cnspec-policies/write/simple) + +2. [Score Policies](/cnspec/cnspec-policies/write/policy-scoring) + +3. [Reuse Queries and Checks](/cnspec/cnspec-policies/write/reuse) + +4. [Break up a Policy into Groups / Chapters](/cnspec/cnspec-policies/write/chapters) + +5. [Limit Target Assets with Filters](/cnspec/cnspec-policies/write/filters) + +6. [Define Properties](/cnspec/cnspec-policies/write/properties) + +7. [Make Policies Flexible with Variants](/cnspec/cnspec-policies/write/variants) + +The queries and checks that policies use to retrieve information from your infrastructure are written in Mondoo's GraphQL-based query language, MQL. + +- Learn how to [write MQL queries and checks](/mql/mql.write) + +- Read about all the different [resources](/mql/resources/) from which MQL can retrieve information + +--- diff --git a/docs/cnspec/cnspec-policies/write/_category_.json b/docs/cnspec/cnspec-policies/write/_category_.json new file mode 100644 index 000000000..91ea83a14 --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Policy Authoring Guide", + "position": 10 +} diff --git a/docs/cnspec/cnspec-policies/write/_exceptions.mdx b/docs/cnspec/cnspec-policies/write/_exceptions.mdx new file mode 100644 index 000000000..9ceb6308d --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/_exceptions.mdx @@ -0,0 +1,76 @@ +--- +title: Policy Authoring Guide | Exceptions +sidebar_label: Something about Exceptions +displayed_sidebar: cnspec +sidebar_position: 8 +description: Description something write me +image: /img/featured_img/mondoo-feature.jpg +--- + +** IGNORE. THIS DOESN'T GET COMPILED. ** + +Now that you've learned how to [combine policies in a bundle and make more efficient policies by reusing queries and checks](/cnspec/cnspec-policies/write/reuse/), you can learn how to arrange a policy into chapters. + +A _group_ is a collection of related checks and queries in a policy. Groups provide a way to organize your policy. One type of group is a _chapter_. These are an arbitrary way of breaking up a policy into more manageable sections. + +A common way to use groups is to match the chapters in a written benchmark, policy, or other compliance document. For each chapter in the document, you can create a group in the policy. + +Here's another simple example of a policy bundle containing one policy: + +```yaml showLineNumbers +policies: + - uid: example-with-chapters + name: Simple example with chapters + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + groups: + - type: chapter + title: SSH + checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params + - type: chapter + + type: chapter + title: Packages + checks: + - uid: pkg-01 + title: Ensure AIDE is installed + mql: package("aide").installed + impact: 70 + + - uid: pkg-02 + title: Ensure prelink is disabled + mql: package("prelink").installed == false + impact: 70 +``` + +The policy contains two chapters: + +- The `SSH` chapter begins on line 10. It has two checks and one query, all concerning SSH parameters. + +- The `Packages`chapter begins on line 28. It has two checks, both of which concern installed packages. + +A policy can have as many chapters as you need. + +## Next steps + +- To learn about controlling the types of assets a policy applies to, read [Limit Target Assets with Filters](/cnspec/cnspec-policies/write/filters/). + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +--- diff --git a/docs/cnspec/cnspec-policies/write/_import.mdx b/docs/cnspec/cnspec-policies/write/_import.mdx new file mode 100644 index 000000000..19073b554 --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/_import.mdx @@ -0,0 +1,106 @@ +--- +title: Policy Authoring Guide | Import Policies +sidebar_label: Import Policies +displayed_sidebar: cnspec +sidebar_position: 6 +description: Import a policy from one bundle into another bundle +image: /img/featured_img/mondoo-feature.jpg +--- + +THIS TOPIC IS NOT VISIBLE TO READERS + +Now that you've learned how to [break policies into chapters](/cnspec/cnspec-policies/write/chapters/), you can learn how to import policies into a policy bundle. + +Importing policies is another organizational tactic that can also save time. You can import a policy from a Mondoo policy bundle or from another one of your own policy bundles. + +Here's a simple example of a policy bundle containing one policy: + +```yaml showLineNumbers +policies: + - uid: simple-example1 + mrn: //policies/simple-example1 + name: Simple example policy 1 + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + groups: + - checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params +``` + +Notice the `mrn` on line 3. This value allows you to import the policy into other policies or policy bundles. + +Here's an example of a policy that imports `Simple example policy 1`. + +```yaml showLineNumbers +policies: + - uid: example-with-chapters + name: Simple example with chapters + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + groups: + - type: chapter + title: SSH + checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params + - type: chapter + + type: chapter + title: Packages + checks: + - uid: pkg-01 + title: Ensure AIDE is installed + mql: package("aide").installed + impact: 70 + + - uid: pkg-02 + title: Ensure prelink is disabled + mql: package("prelink").installed == false + impact: 70 +``` + +The policy contains two chapters: + +- The `SSH` chapter begins on line 10. It has two checks and one query, all concerning SSH parameters. + +- The `Packages`chapter begins on line 28. It has two checks, both of which concern installed packages. + +A policy can have as many chapters as you need. + +## Next steps + +- To learn about controlling the types of assets a policy applies to, read [Limit Target Assets with Filters](/cnspec/cnspec-policies/write/filters/). + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +--- diff --git a/docs/cnspec/cnspec-policies/write/_include-lint.mdx b/docs/cnspec/cnspec-policies/write/_include-lint.mdx new file mode 100644 index 000000000..e94ffbd6e --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/_include-lint.mdx @@ -0,0 +1,5 @@ +:::tip + +To check for errors in the policy bundles you write, run `cnspec bundle lint BUNDLE-NAME.mql.yaml`. For BUNDLE-NAME, substitute the name of your file. + +::: diff --git a/docs/cnspec/cnspec-policies/write/chapters.mdx b/docs/cnspec/cnspec-policies/write/chapters.mdx new file mode 100644 index 000000000..81201588e --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/chapters.mdx @@ -0,0 +1,73 @@ +--- +title: Policy Authoring Guide | Break up a Policy into Groups / Chapters +sidebar_label: Break up a Policy into Groups +displayed_sidebar: cnspec +sidebar_position: 4 +description: Use groups to separate your policy into chapters +image: /img/featured_img/mondoo-feature.jpg +--- + +A _group_ is a collection of related checks and queries in a policy. Groups are a way of breaking up a policy into more manageable sections. + +A common way to use groups is to match the chapters in a written benchmark, policy, or other compliance document. For each chapter in the document, you can create a group in the policy. + +Here's another simple example of a policy bundle containing one policy: + +```yaml showLineNumbers +policies: + - uid: example-with-chapters + name: Simple example with chapters + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + groups: + - title: SSH + checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params + + - title: Packages + checks: + - uid: pkg-01 + title: Ensure AIDE is installed + mql: package("aide").installed + impact: 70 + + - uid: pkg-02 + title: Ensure prelink is disabled + mql: package("prelink").installed == false + impact: 70 +``` + +The policy contains two groups: + +- The `SSH` group begins on line 10. It has two checks and one query, all concerning SSH parameters. + +- The `Packages` group begins on line 26. It has two checks, both of which concern installed packages. + +A policy can have as many groups as you need. + +import Partial from "./_include-lint.mdx"; + +{" "} + +## Next steps + +- To learn about controlling the types of assets a policy applies to, read [Limit Target Assets with Filters](/cnspec/cnspec-policies/write/filters/). + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +--- diff --git a/docs/cnspec/cnspec-policies/write/filters.mdx b/docs/cnspec/cnspec-policies/write/filters.mdx new file mode 100644 index 000000000..4585a540d --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/filters.mdx @@ -0,0 +1,123 @@ +--- +title: Policy Authoring Guide | Limit Target Assets with Filters +sidebar_label: Limit Target Assets with Filters +displayed_sidebar: cnspec +sidebar_position: 6 +description: Add policy filters to limit what types of target assets a policy or part of a policy applies to +image: /img/featured_img/mondoo-feature.jpg +--- + +Filters can specify what target assets a policy, group, check, or query can run against. A filter is simply a condition, written in [MQL](/mql/mql.write/), that must be met. Any fields you can query about any [resources](/mql/resources/) can be the basis for a filter. + +The most common basis for filters is platform information. For example, you can add a filter that tells cnspec to run a policy only on AWS EKS clusters. Or you can add a filter that tells cnspec to run a check only on certain versions of an operating system. + +:::info + +Filters are an essential part of creating variants. To learn about variants, read [Make Policies Flexible with Variants](/cnspec/cnspec-policies/write/variants). + +::: + +## Apply a filter to a check or query + +Add `filters` information to a check or query to apply a filter to it. + +This is an example of a check with a filter: + +```yaml +- uid: ssh-root-login-is-disabled + title: Ensure SSH root login is disabled + filters: package('openssh-server').installed + impact: 90 + mql: sshd.config.params["PermitRootLogin"] == "no" +``` + +The filter in the `ssh-root-login-is-disabled` check tells cnspec to run the check only on assets that have the SSH Server package installed. When scanning an asset without SSH Server, cnspec skips this check. + +## Apply a filter to a chapter or group + +Add `filters` information to a group to apply a filter to it. + +This is an example of a [chapter](/cnspec/cnspec-policies/write/chapters) type of group with two filters: + +```yaml +groups: + - title: AWS Compute Services + type: chapter + filters: | + asset.name == "aws" + asset.kind == "api" + checks: + + ... + +``` + +Unless the asset is an AWS compute service, cnspec skips all the checks and queries in this group when scanning the asset. + +## Apply a filter to a policy + +The policy in this bundle has a filter: + + +```yaml showLineNumbers +policies: + - uid: ssh-with-filter + name: SSH policy that uses a filter + +... + + groups: + - title: my-group + checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params + + filters: + - mql: asset.family.contains('unix') +``` + + +This bundle contains only one policy, `ssh-with-filter`. The section beginning on line 24 defines _filters_ for the policy. In this case, cnspec uses the policy to scan only assets that are based on UNIX (Linux distributions and macOS). + +import Partial from "./_include-lint.mdx"; + +{" "} + +## More examples of filters + +This filter limits scans to only GCP projects: + +```coffee +asset.platform == "gcp-project" +``` + +This filter limits scans to only kubelets: + +```coffee +asset.family.contains('linux') +processes.where( executable == /kubelet/ ).list != [] +``` + +To learn how to write your own filters, read [Write Effective MQL](/mql/mql.write/) and the [MQL Reference](/mql/resources/). + +## Next steps + +- To learn an efficient way to define the ideal values that policies check against, read [Define Properties](/cnspec/cnspec-policies/write/properties/). + +- You can find many examples of policy bundles in Mondoo's [cnspec-policies](https://github.com/mondoohq/cnspec-policies) GitHub repo. + +- To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +--- diff --git a/docs/cnspec/cnspec-policies/write/policy-scoring.mdx b/docs/cnspec/cnspec-policies/write/policy-scoring.mdx new file mode 100644 index 000000000..c5b4fe7fe --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/policy-scoring.mdx @@ -0,0 +1,113 @@ +--- +title: Policy Authoring Guide | Score Policies +sidebar_label: Score Policies +displayed_sidebar: cnspec +sidebar_position: 3 +description: Choose how a Mondoo scores assets based on a policy +image: /img/featured_img/mondoo-feature.jpg +--- + +Now that you've [explored the very basic elements of a policy and a policy bundle](/cnspec/cnspec-policies/write/simple/), you can decide how to calculate asset security based on this policy. + +Each scanned target receives a graded score that summarizes how well it compares to the checks in the policy: + +```text + 80 .. 100 A (100 A+ 95 A 85 A- 80) + 60 .. 79 B ( 79 B+ 75 B 65 B- 60) + 30 .. 59 C ( 59 C+ 50 C 40 C- 30) + 10 .. 29 D ( 29 D+ 25 D 15 D- 10) + 0 .. 9 F +``` + +The score is based on the number of checks that return a `true` value (pass) compared to how many return a `false` value (fail). + +When assessing the overall security of an asset, some checks may be more important than others. For example, suppose a strong cipher is more important to your organization than SSH using port 22. You can use the `impact` attribute to give more importance to one check and less importance to another check. The `Ensure the port is set to 22` check has an impact of `30` (on line 18) and the `Prevent weaker CBC ciphers from being used` check has an impact of `60` (on line 23): + +```yaml showLineNumbers +policies: + - uid: simple-example1 + name: Simple example policy 1 + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + docs: + desc: |- + Descriptive documentation about this policy + groups: + - title: group1 + checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params +``` + +How Mondoo uses these values to calculate an asset's score depends on the `scoring_system` setting (line 5). You can choose the `average` scoring system or the `highest impact` scoring system: + +#### Average scoring system + +The `average` scoring system considers impact before averaging check scores. Failed checks with higher impact _lower_ an overall score _more_ than checks with lower impact. This is how the `average` scoring system calculates the overall score: + +- If a check passes (returns `true`), the asset receives a 100 for that check. + +- If a check fails (returns `false`), the asset receives (100-impact) for that check. For example, if an asset fails a check with an impact of 10, it receives a 90 for that check. + +Here are possible results of our simple example query, which has a port check and a cipher check: + +| Port (impact 30) | Cipher (impact 60) | Overall score | +| -------------------- | -------------------- | ----------------------------------- | +| Pass (100) | Pass (100) | (100 + 100) / 2 = **100** or **A+** | +| Pass (100) | Fail (100 - 60 = 40) | (100 + 40) / 2 = **70** or **B** | +| Fail (100 - 30 = 70) | Pass (100) | (100 + 70) / 2 = **85** or **A** | +| Fail (100 - 30 = 70) | Fail (100 - 60 = 40) | (70 + 40) / 2 = **55** or **C** | + +To use the average scoring system, set the `scoring system` value to `average`: + +```yaml +policies: + - uid: simple-example1 + name: Simple example policy 1 + version: "1.0.0" + scoring_system: average +``` + +#### Highest (failed) impact scoring system + +The `highest impact` scoring system only considers the highest impact check in the policy. It relies on the same method of subtraction as the `average` scoring system: It subtracts the `impact` value from 100 if a check fails. However, unlike the `average` scoring system, it doesn't average all the check scores to calculate the overall score. Instead, it just takes the score of the highest-impact **failed** check and makes that the overall score. + +Here are possible results of our simple example query, which has a port check and a cipher check: + +| Port (impact 30) | Cipher (impact 60) | Overall score | +| --------------------- | --------------------- | ----------------- | +| True (100) | True (100) | **100** or **A+** | +| True (100) | False (100 - 60 = 40) | **40** or **C** | +| False (100 - 30 = 70) | True (100) | **70** or **B** | +| False (100 - 30 = 70) | False (100 - 60 = 40) | **40** or **C** | + +To use the highest impact scoring system, set the `scoring system` value to `highest impact`: + +```yaml +policies: + - uid: simple-example1 + name: Simple example policy 1 + version: "1.0.0" + scoring_system: highest impact +``` + +## Next steps + +- To learn how to write more powerful policies, read [Reuse Queries and Checks](/cnspec/cnspec-policies/write/reuse/). + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). diff --git a/docs/cnspec/cnspec-policies/write/properties.mdx b/docs/cnspec/cnspec-policies/write/properties.mdx new file mode 100644 index 000000000..c3aa79006 --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/properties.mdx @@ -0,0 +1,106 @@ +--- +title: Policy Authoring Guide | Define Properties +sidebar_label: Define Properties +displayed_sidebar: cnspec +sidebar_position: 7 +description: Use properties to define the values for settings that policies check against. +image: /img/featured_img/mondoo-feature.jpg +--- + +Properties are an optional method of defining the ideal values for [checks](/cnspec/cnspec-policies/write/simple/#checks). Instead of defining a value in the check itself, you can define it in a property and reference that property in the check. Multiple checks in a policy can share a single property. + +This policy does not use properties. It checks that you have strong IAM policies in AWS: + +```yaml showLineNumbers +policies: + - uid: no-properties-example + name: Example policy without properties + version: "1.0.0" + authors: + - name: Lunalectric + email: security@lunalectric.com + groups: + - title: group01 + checks: + - uid: aws-iam-01 + title: Require long passwords + mql: aws.iam.accountPasswordPolicy['MinimumPasswordLength'] >= 8 + + - uid: aws-iam-02 + title: Require uppercase characters + mql: aws.iam.accountPasswordPolicy['RequireUppercaseCharacters'] == true + + - uid: aws-iam-03 + title: Limit password age + mql: aws.iam.accountPasswordPolicy['MaxPasswordAge'] <= 90 +``` + +The `no-properties-example` policy above performs three checks: + +- Line 13 checks whether the minimum password length is set to 8 or higher. + +- Line 17 checks whether uppercase letters are required in passwords. + +- Line 21 checks whether passwords expire after 90 or fewer days. + +In each of these lines, the ideal value that the policy checks against is in the check itself. + +An alternate way to structure these checks is to put all the ideal values in properties. You define properties separately from the checks themselves—similar to defining variables in code. + +This policy shows how you can use properties to achieve the same results as the `no-properties-example` policy: + +```yaml showLineNumbers +policies: + - uid: example-with-properties + name: Example policy using properties + version: "1.0.0" + authors: + - name: Lunalectric + email: security@lunalectric.com + groups: + - title: group01 + checks: + - uid: aws-iam-01 + title: Require long passwords + mql: aws.iam.accountPasswordPolicy['MinimumPasswordLength'] >= props.passwordMinLength + + - uid: aws-iam-02 + title: Require uppercase character + mql: aws.iam.accountPasswordPolicy['RequireUppercaseCharacters'] == props.passwordUppercase + + - uid: aws-iam-03 + title: Require password rotation + mql: aws.iam.accountPasswordPolicy['MaxPasswordAge'] <= props.passwordMaxAge +props: + - uid: passwordMinLength + title: Minimum password length + mql: "8" + + - uid: props.passwordUppercase + title: Whether to require at least one uppercase character in passwords + mql: "true" + + - uid: props.passwordMaxAge + title: Maximum time that a user can go without changing their password + mql: "90" +``` + +In the `example-with-properties` policy above, the three checks refer to properties for the ideal values to check against. The `props` sections of the policy (beginning on line 21) assigns a value to each of the three properties. + +import Partial from "./_include-lint.mdx"; + +{" "} + +## Use one property for multiple checks + +Multiple checks in a policy can share a single property. This can make updates easier when your organization's requirements change. + +As a simple example, suppose you create a policy that checks IAM best practices across multiple platforms. Even though the platforms are different, your company's minimum password length requirement is the same. If you create password length checks for each different platform, you don't need to define the minimum password length value multiple times. Instead, all of the password length checks can point to a single property. That way, there's only one value to change when your company's minimum password length requirement changes. + +## Next steps + +- To learn about changing what a policy checks based on different conditions, read [Make Policies Flexible with Variants](/cnspec/cnspec-policies/write/variants). + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +--- diff --git a/docs/cnspec/cnspec-policies/write/reuse.mdx b/docs/cnspec/cnspec-policies/write/reuse.mdx new file mode 100644 index 000000000..16fb27a8c --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/reuse.mdx @@ -0,0 +1,96 @@ +--- +title: Policy Authoring Guide | Reuse Queries and Checks +sidebar_label: Reuse Queries and Checks +displayed_sidebar: cnspec +sidebar_position: 4 +description: Learn how to combine policies in a bundle and make more efficient policies by reusing queries and checks +image: /img/featured_img/mondoo-feature.jpg +--- + +Now that you've [explored the very basic elements of a policy and a policy bundle](/cnspec/cnspec-policies/write/simple/) and defined [policy scoring](/cnspec/cnspec-policies/write/policy-scoring/), you can learn how to include multiple policies in a bundle and reuse queries and checks among them. + +Here's another simple example of a policy bundle: + +```yaml showLineNumbers +policies: + - uid: luna1 + name: Lunalectric policy 1 + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + docs: + desc: |- + Descriptive documentation about this policy + groups: + - title: test + checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + + - uid: shared1 + + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params + + - uid: luna2 + name: Luna policy 2 + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + groups: + - title: test2 + checks: + - uid: sshd-03 + title: Ensure SSH protocol is set to 2 + mql: sshd.config.params["Protocol"] == 2 + impact: 50 + + - uid: shared1 + +queries: + - uid: shared1 + title: Enable strict mode + mql: sshd.config.params["StrictModes"] == "yes" + impact: 70 +``` + +## Multiple policies in a bundle + +Policy bundles can contain any number of policies. You write them in the `policies` section of the bundle. The example above has two policies: `Luna policy 1` (lines 2-25) and `Luna policy 2` (lines 27-42). To learn the basic elements of a policy, read [Write Custom Policies](/cnspec/cnspec-policies/write/simple/). + +## Reusing queries and checks + +Notice that the example policy bundle above has a main section at the end named `queries`. It's at the same level in the hierarchy as the `policies` section. This is the _shared_ queries and checks section, intended for items you'll use more than once. Here you can put queries and checks that you want to include in multiple policies. Instead of writing the same query or check twice or ten times in many policies, you can write it once, store it in this shared `queries` section, and simply _reference_ it in any policy you want to include it in. + +In the example policy bundle above, there's one shared item in the shared `queries` section: `Enable strict mode`. Line 45 defines the shared item's UID as `shared1`. Both policies reference it (include it in their checks) using its that `shared1` UID (on lines 21 and 42). + +:::info + +The shared `queries` main section of a policy bundle can contain _both_ queries that only collect information _and_ checks (queries that make assertions and produce scores when the scan runs). + +::: + +import Partial from "./_include-lint.mdx"; + +{" "} + +## Next steps + +- To learn how to organize a policy into sections, read [Break up a Policy into Groups](/cnspec/cnspec-policies/write/chapters/). + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +--- diff --git a/docs/cnspec/cnspec-policies/write/simple.mdx b/docs/cnspec/cnspec-policies/write/simple.mdx new file mode 100644 index 000000000..a83a57a1f --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/simple.mdx @@ -0,0 +1,115 @@ +--- +title: Policy Authoring Guide | Write Custom Policies +sidebar_label: Write Custom Policies +displayed_sidebar: cnspec +sidebar_position: 2 +description: Create your own policies for cnspec and Mondoo to scan your infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Policies are the specifications that cnspec uses when it scans an asset. cnspec compares your asset's configuration against the standards set in policies, and calculates a score based on the comparison. + +Mondoo provides dozens of free policy bundles (collections of policies) with cnspec that cover the most common types of assets—and Mondoo Platform has even more. If your organization has unique needs that these policy bundles don't meet, you can create custom policy bundles. + +## A very simple policy bundle + +All cnspec policies are stored in YAML files. These files are called bundles because they bundle policies together. Their filename ends in `.mql.yaml`. To learn more about policies and policy bundles, read [About Policies](/cnspec/cnspec-policies/). + +Here's a very simple example of a policy bundle. It contains only one policy, `Simple example policy 1`: + +```yaml showLineNumbers +policies: + - uid: simple-example1 + name: Simple example policy 1 + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com + docs: + desc: |- + Descriptive documentation about this policy + groups: + - title: group1 + checks: + - uid: sshd-01 + title: Ensure the port is set to 22 + mql: sshd.config.params["Port"] == 22 + impact: 30 + + - uid: sshd-02 + title: Prevent weaker CBC ciphers from being used + mql: sshd.config.ciphers.none( /cbc/ ) + impact: 60 + + queries: + - uid: sshd-d-1 + title: Gather SSH config params + mql: sshd.config.params +``` + +We'll use this simple policy bundle example to explore how to write a policy. + +## Basic policy attributes + +| The attribute... | On line... | Defines... | +| ---------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| uid | 2 | A unique identifier for the policy | +| name | 3 | A descriptive name for the policy | +| version | 4 | The current version of the policy.
We recommend using semantic versioning to keep track of major and minor policy changes. | +| scoring_system | 5 | How Mondoo calculates the score for an asset: `average` or `highest impact`. To learn more, read [Score Policies](/cnspec/cnspec-policies/write/policy-scoring/). | +| authors | 6-7 | The person or entity to credit for writing the policy, and email where they can be reached. | +| docs | 9-11 | Optional documentation section for describing the policy's purpose and makeup. | + +The `groups` section of the policy defines the checks and queries that define how to assess and report on asset security. To learn more, read [Break up a Policy into Groups / Chapters](/cnspec/cnspec-policies/write/chapters/). + +## Queries + +A _query_ is an [MQL](/mql/mql.write/) inquiry that requests information about an asset. For example, a query can ask what version of an OS is running on a container or request the UIDs, names, and statuses are of all users in an application. + +Queries in a policy add helpful insights to scan report output. (They're also the bases for checks, which are described below.) + +The simple example policy bundle above contains one query (on lines 26-28). It requests the configuration values of the SSH server scanned. This information is included in the scan report output. + +| The attribute... | On line... | Defines... | +| ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------- | +| uid | 26 | A unique identifier for the query | +| title | 27 | A descriptive name for the query | +| mql | 28 | The [MQL](/mql/mql.write/) query that requests information, such as the number of root accounts or the state of a port | + +To learn how to create MQL queries, read [Write Effective MQL](/mql/mql.write/). + +### Checks + +An [MQL](/mql/mql.write/) query that also makes an assertion and produces a score is called a _check_. Checks retrieve a value just like any query. For example, a check can ask _What OS version is running?_ How they differ from other queries is that they compare the retrieved value to a _desired_ value and create a score based on that comparison. For example, a check can assert that the value should be 8.3.1 or higher. All checks return a Boolean `true` or `false`. In our example, if the current OS version on the scanned asset is 8.2, the check returns `false`. If the current OS version is 8.3.1 or 8.3.5, the check returns `true`. + +Checks are the building blocks of policies. A typical policy identifies a number of desired configurations (such as _MFA is enabled_ and _no ports are publicly accessible_) and instructs Mondoo to compare that to the actual configuration on the scan target. This is a collection of checks. + +The simple example policy bundle above contains two checks: + +- The check defined in lines 15-18 ensures the SSH port is set to 22. + +- The check defined in lines 20-23 ensures that SSH uses a strong cipher. + +Each check has its own attributes: + +| The attribute... | On lines... | Defines... | +| ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| uid | 15 & 20 | A unique identifier for the check | +| title | 16 & 21 | A descriptive name for the check that's useful in report output | +| mql | 17 & 22 | The [MQL](/mql/mql.write/) assertion that identifies the desired condition or configuration, such as logging is enabled or encryption is required | +| impact | 18 & 23 | How important (on a scale from 0 to 100) the check is in the scope of the entire policy. The impact and result of each check determine the asset's score on the policy. To learn more, read [Score Policies](/cnspec/cnspec-policies/write/policy-scoring/). | + +To learn how to create MQL queries and checks, read [Write Effective MQL](/mql/mql.write/). + +import Partial from "./_include-lint.mdx"; + +{" "} + +## Next steps + +- To learn how scoring works in Mondoo policies, read [Score Policies](/cnspec/cnspec-policies/write/policy-scoring/). + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +--- diff --git a/docs/cnspec/cnspec-policies/write/variants.mdx b/docs/cnspec/cnspec-policies/write/variants.mdx new file mode 100644 index 000000000..4312e237c --- /dev/null +++ b/docs/cnspec/cnspec-policies/write/variants.mdx @@ -0,0 +1,150 @@ +--- +title: Policy Authoring Guide | Make Policies Flexible with Variants +sidebar_label: Make Policies Flexible with Variants +displayed_sidebar: cnspec +sidebar_position: 8 +description: Use variants to change what a policy checks based on different conditions +image: /img/featured_img/mondoo-feature.jpg +--- + +Variants are checks that behave differently based on conditions you define. They're alternative versions of checks. + +For example, suppose you want to ensure that Remote Desktop Protocol (RDP) is restricted from the internet. You want to perform this check both in GCP projects and in Terraform files. You can do this by creating one variant for GCP projects and another for Terraform files: + +- The GCP variant queries if the asset is a GCP project and checks RDP access using the GCP resource. + +- The Terraform variant queries if the asset is a Terraform file and checks RDP access using the Terraform resource. + +- If the asset is neither a GCP project nor a Terraform file, cnspec doesn't execute an RDP check. + +## Filters + +cnspec relies on _filters_ to determine which variant to run against an asset. A filter is a condition written in [MQL](/mql/mql.write/). Any fields you can query about any [resources](/mql/resources/) can be the basis for a filter. + +To learn more about filters, read [Limit Target Assets with Filters](/cnspec/cnspec-policies/write/filters/). + +## Create variants + +To create variants for a check, you define the variants in a `variants` section of the check. This tells cnspec that the check is made up of variants, and what those variants are. + +```yml showLineNumbers +policies: + - uid: okta-security-example-with-variants + name: Example of a policy that uses variants + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com +checks: + - uid: password-minimum-length + title: Minimum password length + impact: 30 + variants: + - uid: password-minimum-length-runtime + - uid: password-minimum-length-terraform-hcl + - uid: password-minimum-length-terraform-plan + - uid: password-minimum-length-terraform-state + - uid: password-minimum-length-runtime + title: Minimum password length - runtime variant + filters: asset.platform == "okta-org" + impact: 30 + mql: | + okta.policies.password.all( settings['password']['complexity']['minLength'] >= 15 ) + - uid: password-minimum-length-terraform-hcl + title: Minimum password length - Terraform HCL variant + filters: asset.platform == "terraform-hcl" && terraform.providers.one( nameLabel == "okta" ) + impact: 30 + mql: | + terraform.resources.where( nameLabel == /okta_policy_password/ ).all( arguments['password_min_length'] == /var/ || arguments['password_min_length'] >= 15 ) + - uid: password-minimum-length-terraform-plan + title: Minimum password length - Terraform plan variant + filters: asset.platform == "terraform-plan" && terraform.plan.resourceChanges.contains( providerName == /okta/ ) + impact: 30 + mql: | + terraform.plan.resourceChanges.where( type == /okta_policy_password/ ).all( change.after['password_min_length'] >= 15 ) + - uid: password-minimum-length-terraform-state + title: Minimum password length - Terraform state variant + filters: asset.platform == "terraform-state" && terraform.state.resources.contains( type == /okta_policy_password/ ) + impact: 30 + mql: | + terraform.state.resources.where( type == /okta_policy_password/ ).all( values['password_min_length'] >= 15 ) +``` + +Lines 13-17 in the `okta-security-example-with-variants` policy establish the variants for the `password-minimum-length` check. These are the four variants: + +- Lines 18-23 define the `password-minimum-length-runtime` variant. The filter on line 20 tells cnspec to run this variant only on one condition: The asset is an Okta organization. Line 23 is the check to run if that condition is true. + +- Lines 24-29 define the `password-minimum-terraform-hcl` variant. The filter on line 26 tells cnspec to run this variant only on one condition: The asset is an Okta Terraform HCL file. Line 29 is the check to run if that condition is true. + +- Lines 30-35 define the `password-minimum-terraform-plan` variant. The filter on line 32 tells cnspec to run this variant only on one condition: The asset is an Okta Terraform plan. Line 35 is the check to run if that condition is true. + +- Lines 36-41 define the `password-minimum-terraform-state` variant. The filter on line 38 tells cnspec to run this variant only on one condition: The asset is an Okta Terraform state. Line 41 is the check to run if that condition is true. + +## Use one property for multiple variants + +Often you use variants to ensure that different types of assets have one common [property](/cnspec/cnspec-policies/write/properties), as in the example above. All of the variants in the `okta-security-example-with-variants` policy check that the minimum password length is `15`; they just check the value using different resources for different assets. + +For efficiency and easier maintenance, you can write all four variants to use one property instead of defining `15` multiple times: + +```yml showLineNumbers +policies: + - uid: okta-security-example-with-variants + name: Example of a policy that uses variants + version: "1.0.0" + scoring_system: highest impact + authors: + - name: Lunalectric + email: security@lunalectric.com +checks: + - uid: password-minimum-length + title: Minimum password length + impact: 30 + variants: + - uid: password-minimum-length-runtime + - uid: password-minimum-length-terraform-hcl + - uid: password-minimum-length-terraform-plan + - uid: password-minimum-length-terraform-state + - uid: password-minimum-length-runtime + title: Minimum password length - runtime variant + filters: asset.platform == "okta-org" + impact: 30 + mql: | + okta.policies.password.all( settings['password']['complexity']['minLength'] >= props.minPass ) + - uid: password-minimum-length-terraform-hcl + title: Minimum password length - Terraform HCL variant + filters: asset.platform == "terraform-hcl" && terraform.providers.one( nameLabel == "okta" ) + impact: 30 + mql: | + terraform.resources.where( nameLabel == /okta_policy_password/ ).all( arguments['password_min_length'] == /var/ || arguments['password_min_length'] >= props.minPass ) + - uid: password-minimum-length-terraform-plan + title: Minimum password length - Terraform plan variant + filters: asset.platform == "terraform-plan" && terraform.plan.resourceChanges.contains( providerName == /okta/ ) + impact: 30 + mql: | + terraform.plan.resourceChanges.where( type == /okta_policy_password/ ).all( change.after['password_min_length'] >= props.minPass ) + - uid: password-minimum-length-terraform-state + title: Minimum password length - Terraform state variant + filters: asset.platform == "terraform-state" && terraform.state.resources.contains( type == /okta_policy_password/ ) + impact: 30 + mql: | + terraform.state.resources.where( type == /okta_policy_password/ ).all( values['password_min_length'] >= props.minPass ) +Props: + - uid: minPass + title: Minimum password length + mql: "15" +``` + +import Partial from "./_include-lint.mdx"; + +{" "} + +To learn more about properties, read [Define Properties](/cnspec/cnspec-policies/write/properties). + +## Next steps + +- If you're ready to create your own policy: To learn how to set up, validate, and store policy bundles, read [Manage Policies](/cnspec/cnspec-policies/cnspec-manage-policies/). + +- Learn how to [write MQL queries and checks](/mql/mql.write). + +- Read about all the different [resources](/mql/resources/) from which MQL can retrieve information. diff --git a/docs/cnspec/cnspec-scan.md b/docs/cnspec/cnspec-scan.md new file mode 100644 index 000000000..beda026f0 --- /dev/null +++ b/docs/cnspec/cnspec-scan.md @@ -0,0 +1,53 @@ +--- +title: Create Checks in cnspec Shell +id: cnspec-scan +sidebar_label: Create Checks in cnspec Shell +displayed_sidebar: cnspec +sidebar_position: 5 +description: Use cnquery's interactive shell to learn about checks +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec provides an interactive shell in which you can explore. It helps you understand the checks that cnspec policies use, and write your own as well. It’s also a great way to interact with both local and remote targets on the fly. + +Run the shell: + +```bash +cnspec shell local +``` + +The shell provides a `help` command to get information on the resources that power cnspec. Running help without any arguments lists all of the available MQL resources and their fields. You can also run `help RESOURCE` to get more information on a specific resource. For `RESOURCE`, substitute the name of the resource you want to learn about. For example, this command: + +``` +cnspec> help ports +``` + +Returns this help: + +``` +ports: TCP/IP ports on the system + list []port: TCP/IP ports on the system + listening []port: All listening ports +``` + +The shell features auto-complete, which makes it easy to explore. + +Once inside the shell, you can enter MQL checks like this: + +```coffee +ports.listening.none( port == 23 ) +``` + +To clear the terminal, type `clear`. + +To exit cnspec shell, press `CTRL + D` or type `exit`. + +## Learn more​ + +- To explore cnspec commands, read the [CLI Reference](/cnspec/cli/cnspec/). + +- To explore MQL resources, read the [MQL Reference](/mql/resources/). + +- To learn about scanning systems using policies, read [Get Started](/cnspec/). + +--- diff --git a/docs/cnspec/cnspec-supported.md b/docs/cnspec/cnspec-supported.md new file mode 100644 index 000000000..20e5b3fe5 --- /dev/null +++ b/docs/cnspec/cnspec-supported.md @@ -0,0 +1,47 @@ +--- +title: Supported Scan Targets +id: cnspec-supported +sidebar_label: Supported Scan Targets +displayed_sidebar: cnspec +sidebar_position: 6 +description: A list of technologies that cnspec can scan +image: /img/featured_img/mondoo-feature.jpg +--- + +cnquery can request information from: + +| Target | Provider | Example | +| ---------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| AWS accounts | `aws` | `cnspec scan aws` | +| AWS EC2 instances | `ssh` | `cnspec scan ssh user@host` | +| AWS EC2 Instance Connect | `aws ec2 instance-connect` | `cnspec scan aws ec2 instance-connect ec2-user@INSTANCEID` | +| AWS EC2 EBS snapshot | `aws ec2 ebs snapshot` | `cnspec scan aws ec2 ebs snapshot SNAPSHOTID` | +| AWS EC2 EBS volume | `aws ec2 ebs volume` | `cnspec scan aws ec2 ebs volume VOLUMEID` | +| Container images | `container`, `docker` | `cnspec scan container ubuntu:latest` | +| Container registries | `container registry` | `cnspec scan container registry index.docker.io/library/rockylinux:8 ` | +| DNS records | `host` | `cnspec scan host mondoo.com` | +| GitHub organizations | `github org` | `cnspec scan github org mondoohq` | +| GitHub repositories | `github repo` | `cnspec scan github repo mondoohq/cnspec` | +| GitLab groups | `gitlab` | `cnspec scan gitlab --group mondoohq` | +| Google Cloud projects | `gcp` | `cnspec scan gcp` | +| Google Workspace | `google-workspace` | `cnspec shell google-workspace --customer-id CUSTOMER_ID --impersonated-user-email EMAIL --credentials-path JSON_FILE` | +| Kubernetes cluster nodes | `local`, `ssh` | `cnspec scan ssh user@host` | +| Kubernetes clusters | `k8s` | `cnspec scan k8s` | +| Kubernetes manifests | `k8s` | `cnspec scan k8s manifest.yaml ` | +| Kubernetes workloads | `k8s` | `cnspec scan k8s --discover pods,deployments` | +| Linux hosts | `local`, `ssh` | `cnspec scan local` or

`cnspec scan ssh user@host` | +| macOS hosts | `local`, `ssh` | `cnspec scan local` or

`cnspec scan ssh user@IP_ADDRESS` | +| Microsoft 365 accounts | `ms365` | `cnspec scan ms365 --tenant-id TENANT_ID --client-id CLIENT_ID --certificate-path PFX_FILE` | +| Microsoft Azure accounts | `azure` | `cnspec scan azure --subscription SUBSCRIPTION_ID` | +| Microsoft Azure instances | `ssh` | `cnspec scan ssh user@host` | +| Okta | `okta` | `cnspec shell okta --token TOKEN --organization ORGANIZATION` | +| Oracle Cloud Interface (OCI) | `oci` | `cnspec shell oci` | +| Running containers | `docker` | `cnspec scan docker CONTAINER_ID` | +| Slack | `slack` | `cnspec shell slack --token TOKEN` | +| SSL certificates on websites | `host` | `cnspec scan host mondoo.com` | +| Terraform HCL | `terraform` | `cnspec scan terraform HCL_FILE_OR_PATH` | +| Terraform plan | `terraform plan` | `cnspec scan terraform plan plan.json` | +| Terraform state | `terraform state` | `cnspec scan terraform state state.json` | +| Vagrant virtual machines | `vagrant` | `cnspec scan vagrant HOST` | +| VMware vSphere | `vsphere` | `cnspec scan vsphere user@domain@host --ask-pass` | +| Windows hosts | `local`, `ssh`, `winrm` | `cnspec scan local`,

`cnspec scan ssh Administrator@IP_ADDRESS --ask-pass` or

`cnspec scan winrm Administrator@IP_ADDRESS --ask-pass` | diff --git a/docs/cnspec/home.md b/docs/cnspec/home.md new file mode 100644 index 000000000..b96a35c7e --- /dev/null +++ b/docs/cnspec/home.md @@ -0,0 +1,55 @@ +--- +title: cnspec Docs +hide_title: true +sidebar_label: cnspec Docs Home +displayed_sidebar: cnspec +description: cnspec documentation home +image: /img/featured_img/mondoo-feature.jpg +hide_table_of_contents: true +--- + +![cnspec Docs](/img/cnspec/cnspec-logo.png) + +cnspec is an open source, cloud-native tool that evaluates the security of your entire infrastructure. It's also a core component of the [Mondoo Platform](/platform/start/plat-what-is/), serving as both a CLI and an agent for scanning. + +### [What Is cnspec?](/cnspec/cnspec-about/) + +Get to know cnspec and explore its capabilities. + +### [Install cnspec](/cnspec/) + +Download and install cnspec on your assets. + +### Get Started with: + +- [AWS](/cnspec/cnspec-aws/) + +- [Azure](/cnspec/cnspec-azure/) + +- [GCP](/cnspec/cnspec-gcp/) + +- [Kubernetes](/cnspec/cnspec-k8s/) + +- [Linux](/cnspec/cnspec-oper/cnspec-linux-intro) + +- [macOS](/cnspec/cnspec-oper/cnspec-macos-intro) + +- [Windows](/cnspec/cnspec-oper/cnspec-windows-intro) + +### [CLI Command Reference](/cnspec/cli/cnspec/) + +Find the commands you need to scan and make checks. + +### See also: + +- To learn all the resources that you can query in your infrastructure and how to access the information, read the [MQL Reference](/mql/resources/), + +- To learn how to create queries and checks, read [Write Effective MQL](/mql/mql.write). + +- To learn how to structure and build your own policies, read the Mondoo [Policy Authoring Guide](/cnspec/cnspec-policies/write/). + +#### Can't find what you need?​ + +Join our [community discussion on GitHub](https://github.com/orgs/mondoohq/discussions). + +--- diff --git a/docs/cnspec/report.mdx b/docs/cnspec/report.mdx new file mode 100644 index 000000000..0b14b13be --- /dev/null +++ b/docs/cnspec/report.mdx @@ -0,0 +1,16 @@ +--- +title: View and Share a Scan Report in a Web Browser +id: report +sidebar_label: View and Share a Scan Report in a Web Browser +displayed_sidebar: cnspec +description: Install and use cnspec, an open source, cloud-native tool for securing your full stack +image: /img/featured_img/mondoo-feature.jpg +--- + +This feature is deprecated. + +To learn how to create a report of scan results, read [Report Results](/cnspec/results). + +For far more capabilities, more policies, and easy, browser-based management, log into [Mondoo Platform](/cnspec/cnspec-platform/). + +--- diff --git a/docs/cnspec/results.mdx b/docs/cnspec/results.mdx new file mode 100644 index 000000000..cc4a62fbb --- /dev/null +++ b/docs/cnspec/results.mdx @@ -0,0 +1,39 @@ +--- +title: Report Results +sidebar_label: Report Results +displayed_sidebar: cnspec +description: Install and use cnspec, an open source, cloud-native tool for securing your full stack +image: /img/featured_img/mondoo-feature.jpg +--- + +cnspec supports different ways of reporting scan results. You can generate a JSON report or view and print results in the Mondoo Console. + +## Create a JSON report from the command line + +To save the results of your scan to a JSON file, append your scan command with the `-o` flag: + +``` +-o json > FILENAME.json +``` + +For `FILENAME`, substitute the name you want to give the file. For example, this scans a Kubernetes cluster and reports the results to a file named `k8s-test-results.json`: + +``` +cnspec scan k8s -o json > k8s-test-results.json +``` + +## View and print results in the Mondoo Console + +When cnspec completes a scan, it provides a link to the Mondoo Console, where you can view graphical results. + +:::note + +You must register cnspec to see results in the Mondoo Console. To learn how, read [Log into Mondoo Platform for More Capabilities](/cnspec/cnspec-platform/). + +::: + +![Results in the Mondoo console](/img/cnspec/console.png) + +To open printer-friendly results in a new browser tab, select the print icon near the top-right corner of the Mondoo Console. + +--- diff --git a/docs/cnspec/saas/_overview.mdx b/docs/cnspec/saas/_overview.mdx new file mode 100644 index 000000000..4e6a8bd17 --- /dev/null +++ b/docs/cnspec/saas/_overview.mdx @@ -0,0 +1,24 @@ +--- +title: Assess SaaS Security with cnspec +sidebar_label: Overview +displayed_sidebar: cnspec +description: Secure your SaaS infrastructure with cnspec +--- + +Rely on Mondoo to secure your business-critical SaaS platforms: + +- **[GitHub](/cnspec/saas/github/)** + +- **[Google Workspace](/cnspec/saas/google_workspace/)** + +- **[Microsoft 365](/cnspec/saas/ms365/)** + +- **[Okta](/cnspec/saas/okta/)** + +- **[Slack](/cnspec/saas/slack/)** + +#### Get help + +Join our [community discussion on GitHub](https://github.com/orgs/mondoohq/discussions). + +--- diff --git a/docs/cnspec/saas/github.md b/docs/cnspec/saas/github.md new file mode 100644 index 000000000..ce2dbb83c --- /dev/null +++ b/docs/cnspec/saas/github.md @@ -0,0 +1,118 @@ +--- +title: Assess the configuration of GitHub organizations and repositories with cnspec +sidebar_label: GitHub +sidebar_position: 2 +displayed_sidebar: cnspec +description: Secure and enforce policy for GitHub +image: /img/featured_img/mondoo-feature.jpg +--- + +Rely on cnspec to ensure your GitHub organizations and private repositories (repos) follow recommended security and operational best practices. + +You can also use cnspec to assess public repos and open source projects your team depends on. cnspec evaluates the risk a project poses to your business. + +:::tip + +Open source projects that don't adhere to GitHub's recommended security best practices pose a higher risk of introducing malicious code into your environments. + +::: + +## Give cnspec access using the GitHub API + +To scan GitHub organizations and repos, cnspec needs access. You give cnspec the access it needs through the GitHub API. First, you create GitHub personal access token. Then you share that token with cnspec using an environment variable. + +### Create a GitHub personal access token + +cnspec needs a personal access token to scan a GitHub organization, public repo, or private repo. The token's level of access determines how much information cnspec can retrieve. + +To learn how to create a personal access token, read [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) in the GitHub documentation. + +### Configure a GITHUB_TOKEN environment variable + +You supply your personal access token to cnspec using the `GITHUB_TOKEN` environment variable. + +#### Linux / macOS + +```bash +export GITHUB_TOKEN= +``` + +#### Windows + +```powershell +$Env:GITHUB_TOKEN = "" +``` + +## Scan a GitHub organization + +To scan the configuration of your GitHub organization and all repos within it, run this command: + +```bash +cnspec scan github org +``` + +:::caution + +Scanning large GitHub organizations and all repositories may exceed GitHub API rate limits. To learn more, read [About rate limits](https://docs.github.com/en/rest/rate-limit?apiVersion=2022-11-28#about-rate-limits) in the GitHub documentation. + +::: + +### Scan a GitHub organization but not its repos + +Use the `--discover organization` flag to scan your GitHub organization and discover and scan all of the repos within it: + +```bash +cnspec scan github org --discover organization +``` + +### Scan GitHub repos + +To scan the configuration of a GitHub repo: + +```bash +cnspec scan github repo +``` + +## Example checks + +Run `cnspec shell` to open the cnspec interactive shell. From there you can make checks like the examples below. + +Ensure two-factor authentication is enabled for GitHub organizations: + +```coffee +cnspec> github.organization.twoFactorRequirementEnabled +[failed] github.organization.twoFactorRequirementEnabled + expected: == true + actual: false +``` + +Ensure the GitHub organization domain is verified: + +```coffee +cnspec> github.organization.isVerified +[failed] github.organization.isVerified + expected: == true + actual: false +``` + +Ensure the GitHub organization default permissions is set to _read_: + +```coffee +cnspec> github.organization.defaultRepositoryPermission == "read" +[ok] value: "read" +``` + +Ensure the default branch is configured with branch protection: + +```coffee +cnspec> github.repository.branches.where( isDefault == true ).all( protected == true ) +[ok] value: true +``` + +## Learn more + +- To learn about all the GitHub resources and properties, read the [Mondoo GitHub Resource Pack Reference](/mql/resources/github-pack/). + +- To learn how to write checks, read [Write Effective MQL](/mql/mql.write). + +--- diff --git a/docs/cnspec/saas/google_workspace.md b/docs/cnspec/saas/google_workspace.md new file mode 100644 index 000000000..4244a72a6 --- /dev/null +++ b/docs/cnspec/saas/google_workspace.md @@ -0,0 +1,195 @@ +--- +title: Assess Google Workspace Security with cnspec +sidebar_label: Google Workspace +sidebar_position: 3 +displayed_sidebar: cnspec +description: Set up cnspec to perform security scans of Google Workspace +--- + +Rely on cnspec to audit and enforce policy for your Google Workspace environment. + +## Configure access to the Google Workspace API + +:::note + +These steps for configuring [Admin SDK API](https://developers.google.com/admin-sdk) access to your +Google Workspace environment rely on Google Cloud (GCP) even if you aren't otherwise using GCP. + +::: + +1. [Create a Google Workspace service account](https://support.google.com/a/answer/7378726). + - In addition to the APIs that Google requires, also enable: + - Cloud Identity API + - Google Drive API + - After creating the service account, be sure to record the **Unique ID** on the details page. This is the Client ID to use in the next step. + - Be sure to download and protect the JSON credentials file. +2. Log into the [Google Workspace Admin Portal](https://admin.google.com). + +3. In the left-side navigation, select **Security -> Access and data controls -> API controls**. + +4. Select [**Domain-wide Delegation**](https://developers.google.com/workspace/guides/create-credentials#delegate_domain-wide_authority_to_your_service_account) and then select **Add new**. + +5. For the **Client ID** enter the **Unique ID** of the service account you created. + +6. Paste this comma-delimited list to add all 16 read-only OAuth scopes: + + ```text + https://www.googleapis.com/auth/admin.chrome.printers.readonly,https://www.googleapis.com/auth/admin.directory.customer.readonly,https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly,https://www.googleapis.com/auth/admin.directory.device.mobile.readonly,https://www.googleapis.com/auth/admin.directory.domain.readonly,https://www.googleapis.com/auth/admin.directory.group.member.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly,https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly,https://www.googleapis.com/auth/admin.directory.user.alias.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.userschema.readonly,https://www.googleapis.com/auth/admin.reports.audit.readonly,https://www.googleapis.com/auth/admin.reports.usage.readonly,https://www.googleapis.com/auth/admin.directory.user.security,https://www.googleapis.com/auth/cloud-identity.groups.readonly + ``` + +7. In the [Google Workspace Admin Portal](https://admin.google.com), navigate to **Account -> Account Settings** and record the **Customer ID**. + +To test proper configuration, use the cnspec shell to run a sample query: + +```text +cnspec shell google-workspace --customer-id 5amp13iD --impersonated-user-email admin@domain.com --credentials-path /home/user/my-project-6646123456789.json +``` + +| For... | Substitute... | +| --------------------------- | ----------------------------------------------------------- | +| `--impersonated-user-email` | The email address of a user that has super admin privileges | +| `--credentials-path` | The path to the downloaded JSON credentials file | + +cnspec returns results similar to these: + +```coffee +cnspec> googleworkspace.users +googleworkspace.users: [ + 0: { + primaryEmail: "alice@smith.family" + } + 1: { + primaryEmail: "betty@smith.family" + } + .... +``` + +If you prefer, you can use any of these environment variables to provide the credentials file. They're listed in order of precedence: + +- `GOOGLE_APPLICATION_CREDENTIALS` +- `GOOGLEWORKSPACE_CREDENTIALS` +- `GOOGLEWORKSPACE_CLOUD_KEYFILE_JSON` +- `GOOGLE_CREDENTIALS` + +:::note + +If any of the variables above and the `--credentials-path` parameter are both present, the environment variable takes precedence. + +::: + +```text +$ export GOOGLEWORKSPACE_CLOUD_KEYFILE_JSON=/home/user/my-project-6646123456789.json +$ cnspec shell google-workspace --customer-id 5amp13iD --impersonated-user-email admin@domain.com + ___ _ __ ___ _ __ ___ ___ + / __| '_ \/ __| '_ \ / _ \/ __| +| (__| | | \__ \ |_) | __/ (__ + \___|_| |_|___/ .__/ \___|\___| + mondoo™ |_| +cnspec> googleworkspace.users +googleworkspace.users: [ + 0: { + primaryEmail: "alice@smith.family" + } + 1: { + primaryEmail: "betty@smith.family" + } + .... +``` + +## Example queries and checks + +Display details for the first user in the workspace: + +```coffee +cnspec> googleworkspace.users[0]{ * } +googleworkspace.users[0]: { + isMailboxSetup: true + familyName: "Smith" + suspensionReason: "" + recoveryEmail: "" + archived: false + aliases: [] + isAdmin: false + lastLoginTime: 2023-01-03 20:45:12 +0000 UTC + agreedToTerms: true + suspended: false + isEnrolledIn2Sv: false + fullName: "Alice Smith" + recoveryPhone: "" + primaryEmail: "alice@smith.family" + givenName: "Alice" + id: "1182761XXXXXXXXX" + tokens: [ + 0: googleworkspace.token displayText="iOS Account Manager" + 1: googleworkspace.token displayText="Facetune2" + 2: googleworkspace.token displayText="YouTube on TV" + 3: googleworkspace.token displayText="Discord" + 4: googleworkspace.token displayText="Google Chrome" + 5: googleworkspace.token displayText="Epic Games, Inc." + 6: googleworkspace.token displayText="the-game-awards" + ] + creationTime: 2021-11-30 04:31:25 +0000 UTC + isEnforcedIn2Sv: false + usageReport: googleworkspace.report.usage id = googleworkspace.report.usage/C013XXXXXX/118276124783XXXXXXXXX/2023-01-03 +} +``` + +Notice that `usageReport` is listed in this example output. This provides access to several reports with more useful user data that you can also check. + +For example, this retrieves the first user in the workspace's account usage data: + +```coffee +cnspec> googleworkspace.users[0].usageReport.account +googleworkspace.users[0].usageReport.account: { + adminSetName: "Alice Smith" + driveUsedQuotaInMb: 231.000000 + gmailUsedQuotaInMb: 39.000000 + is2SvEnforced: false + isDisabled: false + isLessSecureAppsAccessAllowed: false + isS2SvEnrolled: false + isSuperAdmin: false + passwordLengthCompliance: "COMPLIANT" + passwordStrength: "STRONG" + usedQuotaInMb: 270.000000 +} +``` + +You can also create checks against the Google Workspace data. + +This checks assures all users have passwords that Google considers strong and compliant: + +```coffee +googleworkspace.users{ + usageReport.account { + _['passwordStrength'] == "STRONG" + _['passwordLengthCompliance'] == "COMPLIANT" + } +} +``` + +Example response data: + +```coffee +googleworkspace.users: [ + 0: { + usageReport.account: { + [passwordLengthCompliance] == "COMPLIANT": true + [passwordStrength] == "STRONG": true + } + } + 1: { + usageReport.account: { + [passwordLengthCompliance] == "COMPLIANT": true + [passwordStrength] == "STRONG": true + } + } +``` + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For more information, explore the complete [Mondoo Google Workspace Resource Pack Reference](/mql/resources/google-workspace-pack/). + +--- diff --git a/docs/cnspec/saas/ms365.md b/docs/cnspec/saas/ms365.md new file mode 100644 index 000000000..b6a4aee3d --- /dev/null +++ b/docs/cnspec/saas/ms365.md @@ -0,0 +1,144 @@ +--- +title: Assess Microsoft 365 Security with cnspec +sidebar_label: Microsoft 365 +displayed_sidebar: cnspec +sidebar_position: 4 +description: Use cnspec to assess Microsoft 365 for security misconfigurations +image: /img/featured_img/mondoo-365.jpg +--- + +cnspec assesses your Microsoft 365 environment for misconfigurations that put your organization at risk. You can scan your Microsoft 365 organization for compliance with security policies created by Mondoo or the community, or [create your own policies](/cnspec/cnspec-policies/write/). You also can write individual tests to run on the fly or include in automated tasks. + +cnspec can test any aspect of your Microsoft 365 configuration. For a list of Microsoft 365 resources you can test, read [Mondoo Microsoft 365 (MS365) Resource Pack Reference](/mql/resources/ms365-pack/) and [Mondoo Core Resource Pack Reference](/mql/resources/core-pack/). + +## Connect cnspec with your Microsoft 365 environment + +### Requirements + +To test your Microsoft 365 environment with cnspec, you must have: + +- [cnspec installed on your workstation](/cnspec/). +- A [Microsoft 365 subscription](https://www.microsoft.com/en-us/microsoft-365) + +### Log into Microsoft 365 + +cnspec relies on the Microsoft Graph API to collect the data it needs. To give cnspec permission to access this data, you must create a registered app in Azure. To learn how to register and configure the app, read [Secure Microsoft 365 with Mondoo](Register an Azure app: /platform/infra/saas/ms365/ms365-auto/). + +After registering the App, the method you choose for scanning depends on your goals: + +- For widescale assessment of your Microsoft 365 infrastructure, scan using policy bundles. These collections of tests work together to present a broad picture of your Microsoft 365 security posture. +- To run ad hoc checks against your Microsoft 365 environment, use cnspec's interactive shell. It has auto-complete to guide you, which is especially helpful when you're new to cnspec and learning MQL. + +## Assess Microsoft 365 security with policy-based scanning + +The Microsoft 365 Security by Mondoo policy is available to all in Mondoo's [cnspec-policies GitHub repo](https://github.com/mondoohq/cnspec-policies/tree/main/core). This collection of tests evaluates how well your environment follows fundamental Microsoft 365 security best practices. It checks for misconfigurations across your entire Microsoft 365 infrastructure. + +:::note + +In all commands, if you have a secret key but not a certificate, you can just provide the client secret: + +```bash +--client-secret 'SECRET' +``` + +instead of providing a PEM certificate. + +::: + +To scan your infrastructure based on a single policy: + +```bash +cnspec run ms365 -c 'microsoft.policies.identitySecurityDefaultsEnforcementPolicy["isEnabled"] == false' --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID +``` + +To scan the entire directory using the available default policies: + +```bash +cnspec scan ms365 --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID +``` + +cnspec follows these steps to load policies on which it bases the scan: + +- cnspec tries to read a config file, mondoo.yml, which includes the certificate and private key for authenticating with Mondoo Platform. If it finds the config, it loads the policies enabled for the Microsoft 365 integration in the Mondoo space this environment belongs to. You can enter `cnspec status` to see if the config file exists and cnspec is registered. + +- If there is no config file (you have not registered cnspec or you've removed the mondoo.yml file), then cnspec loads Mondoo's open source policies and scans based on those. + +:::info + +If cnspec is registered but you want to use the open source policies (and not share results with Mondoo Platform), you can scan in incognito mode: + +```bash +cnspec scan ms365 --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --incognito +``` + +::: + +You can also specify a particular policy bundle. cnspec uses only the bundle you specify: + +```bash +cnspec scan ms365 --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --policy-bundle mondoo-ms365-security.mql.yaml +``` + +You can also create your own policies to meet your specific needs. To learn more about policies, read [Policies](/cnspec/cnspec-policies/). + +## Test Microsoft 365 with the cnspec shell + +The cnspec shell is handy for quick checks and tests, or for developing your MQL skills. Its auto-complete and help features guide you in writing checks. + +To launch a shell into your Microsoft 365 environment, enter: + +```bash +cnspec shell ms365 --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID +``` + +### Discover capabilities with the `help` command + +Once inside the shell, use the `help` command to learn what Microsoft 365 resources you can test. This command lists all the Microsoft 365 resources: + +```coffee +help ms365 +``` + +To list all general Microsoft resources (not specific to Microsoft 365), enter: + +```coffee +help microsoft +``` + +From the resulting list, you can drill down further. For example, enter this command to list all the Microsoft group resources you can test: + +```coffee +help microsoft.group +``` + +From the resulting list, you can drill down even further. You can also learn about available Microsoft 365 resources in the [Mondoo Microsoft 365 (MS365) Resource Pack Reference](/mql/resources/ms365-pack/). + +### Example checks in cnspec shell + +Now that you know how to discover what's possible with cnspec, let's run some actual tests in the shell. + +This test assures that auditing security defaults are disabled: + +```coffee +microsoft.policies.identitySecurityDefaultsEnforcementPolicy["isEnabled"] == false +``` + +This test checks that no third party integrated applications can connect to your services: + +```coffee +microsoft.policies.authorizationPolicy { + _['defaultUserRolePermissions']['allowedToCreateApps'] == false +} +``` + +### Exit the cnspec shell + +To exit the cnspec shell, either press `Ctrl + D` or type `exit`. + +## Learn more about querying Microsoft 365 + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- For a list of all the Microsoft 365 resources and fields you can query, read the [Mondoo Microsoft 365 (MS365) Resource Pack Reference](/mql/resources/ms365-pack/). + +--- diff --git a/docs/cnspec/saas/okta.md b/docs/cnspec/saas/okta.md new file mode 100644 index 000000000..ef5bd3072 --- /dev/null +++ b/docs/cnspec/saas/okta.md @@ -0,0 +1,203 @@ +--- +title: Assess Okta Security with cnspec +sidebar_label: Okta +sidebar_position: 5 +displayed_sidebar: cnspec +description: Secure and enforce policy for Okta +image: /img/featured_img/mondoo-feature.jpg +--- + +Rely on cnspec to enforce policy for your Okta domain, including users, groups, policies, rules, applications and more. + +## Configure access to Okta + +Create an Okta [API token](https://developer.okta.com/docs/guides/create-an-api-token/create-the-token/). Carefully record the API token and your Okta domain. + +:::note + +Okta API tokens have a [fixed expiration period of 30 days](https://developer.okta.com/docs/guides/create-an-api-token/main/#token-expiration). + +::: + +Test access using the cnspec shell in a terminal. If your domain includes '-admin', you must remove it when specifying the organization to cnspec. For example, if your Okta URL is 'dev-22556123-admin.okta.com', specify your organization as 'dev-22556123.okta.com'. + +```bash +$ cnspec shell okta --organization dev-22556123.okta.com --token + ___ _ __ ___ _ __ ___ ___ + / __| '_ \/ __| '_ \ / _ \/ __| +| (__| | | \__ \ |_) | __/ (__ + \___|_| |_|___/ .__/ \___|\___| + mondoo™ |_| +... +cnspec> okta.organization{ * } +okta.organization: { + address2: "" + subdomain: "dev-22556123" + created: 2023-01-19 19:35:32 +0000 UTC + lastUpdated: 2023-01-19 19:35:38 +0000 UTC + country: "" + status: "ACTIVE" + website: "https://developer.okta.com" + endUserSupportHelpURL: "" + state: "" + address1: "" + city: "" + phoneNumber: "" + expiresAt: null + supportPhoneNumber: "" + postalCode: "" + companyName: "okta-dev-22556123" + id: "" +} +``` + +You can also use the `OKTA_CLIENT_TOKEN` environment variable, which makes the `--token` parameter optional. Note that if both are present, the `OKTA_CLIENT_TOKEN` environment variable takes precedence. + +```bash +$ export OKTA_CLIENT_TOKEN='00zr0k74_-s5mp13t0k3n' +$ cnspec shell okta --organization dev-22556123.okta.com +``` + +:::info + +Want a place to experiment? Okta makes it easy to obtain Developer Accounts. Sign up at [developer.okta.com/signup](https://developer.okta.com/signup/). + +::: + +## Example queries and checks + +### Query users + +Example query: + +```coffee +okta.users{ + profile + status + lastUpdated + credentials['provider']['name'] +} +``` + +Example shell output: + +```coffee +okta.users: [ + 0: { + status: "PROVISIONED" + profile: &map[email:suki@lunalectric.com firstName:Suki lastName:Mbeze login:suki@lunalectric.com mobilePhone: secondEmail:] + lastUpdated: 2023-01-20 23:49:58 +0000 UTC + credentials[provider][name]: "OKTA" + } + 1: { + status: "PROVISIONED" + profile: &map[email:alice@lunalectric.com firstName:Alice lastName:Freedman login:alice@lunalectric.com mobilePhone: secondEmail:] + lastUpdated: 2023-01-20 23:49:41 +0000 UTC + credentials[provider][name]: "OKTA" + } + 2: { + status: "RECOVERY" + profile: &map[email:ben@lunalectric.com firstName:Ben lastName:Pesoa login:ben@lunalectric.com mobilePhone: secondEmail:] + lastUpdated: 2023-01-19 20:14:53 +0000 UTC + credentials[provider][name]: "OKTA" + } +] + +``` + +### Audit applications + +This query will output the name, status, label, and sign-on mode for each configuration application: + +```coffee +okta.applications { + status + name + label + signOnMode +} +``` + +Example shell output: + +```coffee +okta.applications: [ + 0: { + status: "ACTIVE" + name: "saasure" + label: "Okta Admin Console" + signOnMode: "OPENID_CONNECT" + } + 1: { + status: "ACTIVE" + name: "okta_end_user" + label: "Okta Dashboard" + signOnMode: "OPENID_CONNECT" + } + 2: { + status: "ACTIVE" + name: "okta_browser_plugin" + label: "Okta Browser Plugin" + signOnMode: "OPENID_CONNECT" + } + 3: { + status: "ACTIVE" + name: "dev-22556257_pagerduty_1" + label: "PagerDuty" + signOnMode: "AUTO_LOGIN" + } +] +``` + +### Audit all access policies to ensure they're active + +This query finds all access policies. For each access policy found, cnquery returns the name, priority, and status. It asserts that each rule's status should be active: + +```coffee +okta.policies{ + accessPolicy { + name + priority + status + rules { + status == "ACTIVE" + } + } +} +``` + +Example output: + +```coffee +okta.policies: { + accessPolicy: [ + 0: { + status: "ACTIVE" + rules: [ + 0: { + status == "ACTIVE": true + } + ] + name: "Okta Admin Console" + priority: 1 + } + 1: { + status: "ACTIVE" + rules: [ + 0: { + status == "ACTIVE": true + } + ] + name: "Default Policy" + priority: 1 + } +.... +``` + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- To learn about all the Okta resources and properties you can query, read the [Mondoo Okta Resource Pack Reference](/mql/resources/okta-pack/). + +--- diff --git a/docs/cnspec/saas/slack.md b/docs/cnspec/saas/slack.md new file mode 100644 index 000000000..08310352f --- /dev/null +++ b/docs/cnspec/saas/slack.md @@ -0,0 +1,175 @@ +--- +title: Asses Slack Security with cnspec +sidebar_label: Slack +sidebar_position: 6 +displayed_sidebar: cnspec +description: Secure and enforce policy for your Slack workspaces +image: /img/featured_img/mondoo-feature.jpg +--- + +Rely on cnspec to secure and enforce policy for your Slack workspaces. Unlock the powerful data available in the Slack API with the ease of MQL. + +## Configure access to a Slack organization + +Access to the Slack API requires an [Access Token](https://api.slack.com/authentication/token-types). We recommend using a bot token. + +1. As a workspace administrator, [create an app](https://api.slack.com/apps): Select the **Create an App** button and then select **From Scratch**. +2. Specify an app name (we recommend **Mondoo**) and select the appropriate workspace. +3. Select **Create App**. +4. In the left-side navigation, select **OAuth & Permissions**. +5. Scroll to **Scopes**. Under **User Token Scopes**, add these scopes: + + - **admin**: (This permission is required to view access logs. For details, read [scopes: admin](https://api.slack.com/scopes/admin).) + - **channels:read** + - **groups:read** + - **im:read** + - **mpim:read** + - **team:read** + - **usergroups:read** + - **users:read** + +6. Scroll to **OAuth Tokens for Your Workspace** and select **Install to Workspace**. Once you authorize the app, Slack provides a token. Copy the token; you need it to retrieve data from Slack. + +Now you can test using the cnspec shell: + +```bash +$ cnspec shell slack --token + ___ _ __ ___ _ __ ___ ___ + / __| '_ \/ __| '_ \ / _ \/ __| +| (__| | | \__ \ |_) | __/ (__ + \___|_| |_|___/ .__/ \___|\___| + mondoo™ |_| +cnspec> slack.team +slack.team: { + domain: "mondoo" + id: "T030KKBABCDE" +} + +``` + +You can also use the `SLACK_TOKEN` environment variable, which makes the `--token` parameter optional. Note that if both are present, the `SLACK_TOKEN` environment variable takes precedence. + +```bash +$ export SLACK_TOKEN=xoxb-3014687468594-456546543219-5ampl3.70ck3n +$ cnspec shell slack + ___ _ __ ___ _ __ ___ ___ + / __| '_ \/ __| '_ \ / _ \/ __| +| (__| | | \__ \ |_) | __/ (__ + \___|_| |_|___/ .__/ \___|\___| + mondoo™ |_| +cnspec> slack.team +slack.team: { + domain: "mondoo" + id: "T030KKBABCDE" +} + +``` + +## Example queries and checks + +### Users + +Here is an example of all the data available for a single user: + +```coffee +> slack.users[1]{ \* } +> slack.users.list[1]: { +> profile: { + + displayName: "" + displayNameNormalized: "" + email: "suki@lunalectric.io" + firstName: "Suki" + lastName: "Mbeze" + phone: "" + realName: "Suki Mbeze" + realNameNormalized: "Suki Mbeze" + skype: "" + statusExpiration: "1969-12-31T16:00:00-08:00" + team: "T030KKBUGHG" + title: "" + +} +timeZoneOffset: -28800 +isBot: false +isInvitedUser: false +deleted: false +name: "suki" +enterpriseUser: null +isUltraRestricted: false +id: "U030KL5BMDH" +presence: "" +hasFiles: false +timeZone: "America/Los_Angeles" +teamId: "T030KKBUGHG" +isAdmin: true +has2FA: false +locale: "en-US" +realName: "Suki Mbeze" +isStranger: false +isAppUser: false +isOwner: true +isRestricted: false +timeZoneLabel: "Pacific Standard Time" +isPrimaryOwner: true +color: "9f69e7" +} +``` + +You can create a policy to ensure that all users have 2FA enabled: + +```coffee +slack.users{ + has2FA == true +} +``` + +You can also return the user's `realName` in the results if the `has2FA` value is not true. + +```coffee +slack.users{ + if ( has2FA != true ){ + has2FA == true + realName + } +} +``` + +### Conversations (channels) + +The `conversations` resource lets you inspect channels and direct message metadata. + +Suppose you want to ensure all channels have a set purpose. You can write this policy: + +```coffee +slack.conversations.where( isChannel == true ){ + name + purpose['value'] != "" +} +``` + +Example result: + +```coffee +slack.conversations.where: [ + 0: { + name: "general" + purpose[value] != null: true + } + 1: { + name: "introductions" + purpose[value] != null: true + } + 2: { + name: "announcements" + purpose[value] != null: false + } +``` + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- Explore the complete [Mondoo Slack Resource Pack Reference](/mql/resources/slack-pack/). + +--- diff --git a/docs/cnspec/supplychain/docker.md b/docs/cnspec/supplychain/docker.md new file mode 100644 index 000000000..236de6de1 --- /dev/null +++ b/docs/cnspec/supplychain/docker.md @@ -0,0 +1,55 @@ +--- +title: Assess Docker Image Security with cnspec +sidebar_label: Docker +sidebar_position: 1 +displayed_sidebar: cnspec +description: This page provides an overview of how to use Mondoo to scan Docker images for security vulnerabilities. +image: /img/featured_img/mondoo-docker.jpg +--- + +Use cnspec to scan Docker images and containers for security misconfigurations, CVEs, and end of life operating systems using the built in Mondoo security policies or your own custom policies. + +![Docker Image Scan](/img/platform/infra/supply/docker-image-scan.png) + +## Docker images + +Use cnspec to scan Docker images in public or private container registries using their registry name: + +```bash +cnspec scan docker ubuntu:latest +cnspec scan docker elastic/elasticsearch:7.2.0 +cnspec scan docker gcr.io/google-containers/ubuntu:22.04 +cnspec scan docker registry.access.redhat.com/ubi8/ubi +``` + +If the Docker agent is installed, you can scan images by their id: + +```bash +cnspec scan docker docker-image-id +``` + +## Docker containers + +Scan a running or stopped Docker container by the container ID: + +```bash +cnspec scan docker docker-container-id +``` + +:::note + +You can only scan Docker containers if the Docker engine is installed. + +::: + +## Manage cnspec providers for containers + +_Providers_ are the components of cnspec that allow it to evaluate specific platforms. To learn how to manage cnspec providers most efficiently for containers, read [Manage cnspec Providers](/cnspec/cnspec-adv-install/providers/). + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +- Explore [Mondoo's Docker resources](/mql/resources/os-pack/). + +--- diff --git a/docs/cnspec/supplychain/packer.md b/docs/cnspec/supplychain/packer.md new file mode 100644 index 000000000..1560de6d0 --- /dev/null +++ b/docs/cnspec/supplychain/packer.md @@ -0,0 +1,81 @@ +--- +title: Assess HashiCorp Packer Machine Image Security with cnspec +sidebar_label: Packer +sidebar_position: 2 +displayed_sidebar: cnspec +description: This page provides an overview of how to use cnspec to build secure base images with HashiCorp Packer. +image: /img/featured_img/mondoo-packer.jpg +--- + +Mondoo maintains an [open source plugin](https://github.com/mondoohq/packer-plugin-cnspec) for HashiCorp Packer for securing and validating machine images. + +# Install Packer Plugin cnspec + +## Using the `packer init` command + +Starting from version 1.7, Packer supports a new `packer init` command allowing automatic installation of Packer plugins. Read the [Packer documentation](https://developer.hashicorp.com/packer/docs/commands/init) for more information. + +To install this plugin, copy and paste this code into your Packer configuration . Then, run `packer init`. + +```hcl +packer { + required_plugins { + mondoo = { + version = ">= 0.3.0" + source = "github.com/mondoohq/mondoo" + } + } +} +``` + +#### Manual installation + +You can find pre-built binary releases of the plugin [here](https://github.com/mondoohq/packer-plugin-cnspec/releases). + +Once you have downloaded the latest archive corresponding to your target OS, uncompress it to retrieve the plugin binary file corresponding to your platform. To install the plugin, please follow the Packer documentation on +[installing a plugin](https://developer.hashicorp.com/packer/docs/plugins#installing-plugins). + +### Build from source + +If you prefer to build the plugin from sources, clone the GitHub repository locally and run the command `go build` from the root directory. Upon successful compilation, a `packer-plugin-cnspec` plugin binary file can be found in the root directory. To install the compiled plugin, please follow the official Packer documentation on [installing a plugin](https://developer.hashicorp.com/packer/docs/plugins#installing-plugins). + +## Configuration + +| **Name** | **Description** | **Type** | **Default** | **Required** | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ----------- | ------------ | +| `annotations` | Custom annotations can be applied to Packer build assets to provide additional metadata for asset tracking. | `map of strings` | None | No | +| `asset_name` | Overwrite the asset name in Mondoo Platform. | `string` | None | No | +| `on_failure` | Set `on_failure = "continue"` to ignore build failures that do not meet any set `score_threshold`. | `string` | None | No | +| `score_threshold` | Set a score threshold for Packer builds `[0-100]`. Any scans that fall below the `score_threshold` will fail unless `on_failure = "continue"`. | `int` | None | No | +| `sudo` | Use sudo to elevate permissions when running scans. | `bool` | None | No | +| `mondoo_config_path` | The path to the configuration to be used when running Mondoo scans. If left empty, cnspec tries to determine the config automatically. | `string` | None | No | + +### Example: Complete configuration + +```hcl + provisioner "mondoo" { + on_failure = "continue" + score_threshold = 85 + mondoo_config_path = "/etc/mondoo-config.json" + asset_name = "example-secure-base-image" + sudo { + active = true + } + + annotations = { + Source_AMI = "{{ .SourceAMI }}" + Creation_Date = "{{ .SourceAMICreationDate }}" + } + } +} +``` + +## Learn more + +- AWS users can [build secure AMIs with Mondoo and Packer](/cnspec/cnspec-aws/cnspec-aws-packer/). + +- Google Cloud users can [build secure VMs with Mondoo and Packer](/cnspec/cnspec-gcp/cnspec-gcp-packer) + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +--- diff --git a/docs/cnspec/supplychain/registry/_category_.json b/docs/cnspec/supplychain/registry/_category_.json new file mode 100644 index 000000000..5d8ce14d3 --- /dev/null +++ b/docs/cnspec/supplychain/registry/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Container Registries", + "position": 9 +} diff --git a/docs/cnspec/supplychain/registry/_providers-note.mdx b/docs/cnspec/supplychain/registry/_providers-note.mdx new file mode 100644 index 000000000..d3f3de769 --- /dev/null +++ b/docs/cnspec/supplychain/registry/_providers-note.mdx @@ -0,0 +1,5 @@ +:::note + +_Providers_ are the components of cnspec that allow it to evaluate specific platforms. To learn how to manage cnspec providers most efficiently for containers, read [Manage cnspec Providers](/cnspec/cnspec-adv-install/providers/). + +::: diff --git a/docs/cnspec/supplychain/registry/aws_ecr.md b/docs/cnspec/supplychain/registry/aws_ecr.md new file mode 100644 index 000000000..82099c2f1 --- /dev/null +++ b/docs/cnspec/supplychain/registry/aws_ecr.md @@ -0,0 +1,270 @@ +--- +title: Discover and Scan Elastic Container Registry (ECR) Images +sidebar_label: Elastic Container Registry (ECR) +sidebar_position: 2 +displayed_sidebar: cnspec +description: This page provides an overview of how to use Mondoo to scan Elastic Container Registry for vulnerabilities in your containers. +image: /img/featured_img/mondoo-aws.jpg +--- + +The [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/) allows you to store container images within AWS. To learn about the AWS container registry, read the [Getting Started Guide](https://aws.amazon.com/ecr/getting-started/) in the AWS documentation. + +When it scans an AWS account, cnspec can automatically discover and scan all ECR images in the account. + + +import Partial from "./_providers-note.mdx"; + +{" "} + +## Prerequisites + +Ensure you have your AWS credentials configured properly: + +```bash +$ cat ~/.aws/credentials + +[default] +aws_access_key_id = AKIAIOSFODNN7EXAMPLE +aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY + +[mondoo] +aws_access_key_id = AKIAIOSFODNN7EXAMPLE +aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY +``` + +If you want to use a specific profile, set `AWS_PROFILE` + +```bash +export AWS_PROFILE=mondoo +``` + +You can also set the region: + +```bash +export AWS_REGION=us-east-1 +``` + +## Scan + +After we completed the login, cnspec can scan the registry: + +```bash +$ cnspec scan aws --discover ecr +→ loaded configuration from /Users/letha/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ synchronize assets + + luna-mars@sha256:ad2e043042a33820554not396437ca2adcfee710e1022real058c7f2274a3d22 ━━━━━━━━━━━━━━ 100% score: B + + +Asset: luna-mars@sha256:ad2e043042a33820554not396437ca2adcfee710e1022real058c7f2274a3d22 +---------------------------------------------------------------------------------------- + +Data queries: +os.hostname: "localhost.localdomain" +asset.title: "Ubuntu 22.04.3 LTS, Docker Image" +groups.where.list: [] +asset.platform: "ubuntu" +users.where.list: [ + 0: { + name: "mwezi" + gid: 65534 + uid: 65534 + home: "/mwezi-home" + sshkeys: [] + shell: "/usr/sbin/mwezi" + sid: "" + authorizedkeys.list: [] +... 3 more lines ... +command.stdout.trim: "" +python.packages: [] +title: "Ubuntu 22.04.3 LTS, Docker Image" +arch: "arm64" +asset: { + kind: "container-image" + title: "Ubuntu 22.04.3 LTS, Docker Image" + arch: "arm64" + platform: "ubuntu" + runtime: "docker-image" + name: "luna-mars@sha256:ad2e043042a33820554c396437ca2adcfee710e1022ad058c7f2274a3d22d8d4" +} +... 1 more lines ... +machine.chassis: { + manufacturer: "" + serial: "" + version: "" + assetTag: "" +} +product: "" +machine.baseboard: { + version: "" + manufacturer: "" + serial: "" + assetTag: "" + product: "" +} +manufacturer: "" +mount.list: [] +asset.eol.date: 2027-03-31 17:00:00 -0700 PDT +command.stdout.trim: "" +machine.baseboard.product: "" +machine.bios: { + version: "" + releaseDate: "" + vendor: "" +} +packages.list: [ + 0: { + version: "3.118ubuntu5" + name: "adduser" + origin: "" + } + 1: { + version: "2.4.11" + name: "apt" + origin: "" +... 497 more lines ... +services.where.list: [] +command.stdout.trim.+: "M" +asset.arch: "arm64" +machine.system: { + sku: "" + serial: "" + family: "" + version: "" + product: "" + uuid: "" + manufacturer: "" +} +mondoo.version: "9.14.0" +packages.list: [ + 0: package name="adduser" version="3.118ubuntu5" + 1: package name="apt" version="2.4.11" + 2: package name="base-files" version="12ubuntu4.4" + 3: package name="base-passwd" version="3.5.52build1" + 4: package name="bash" version="5.1-6ubuntu1" + 5: package name="bsdutils" version="1:2.37.2-4ubuntu3" + 6: package name="coreutils" version="8.32-4.1ubuntu1" + 7: package name="dash" version="0.5.11+git20210903+057cd650a4ed-3build1" + 8: package name="debconf" version="1.5.79ubuntu1" +... 93 more lines ... +asset.version: "22.04" +if: "Unknown" +"ubuntu" +"" +kernel.modules: [] +machine.baseboard.manufacturer: "" +version: "22.04" +asset: { + build: "" + version: "22.04" + platform: "ubuntu" +} +platform: "ubuntu" + +Checks: +✕ Fail: C 50 Ensure filesystem integrity is regularly checked +✓ Pass: A 100 Ensure permissions on all logfiles are configured +✓ Pass: A 100 Ensure Avahi server is stopped and not enabled +✓ Pass: A 100 Ensure NFS and RPC are stopped and not enabled +✓ Pass: A 100 Ensure DNS server is stopped and not enabled +✕ Fail: B 60 Ensure audit log storage size is configured +✓ Pass: A 100 Ensure system accounts are non-login +✓ Pass: A 100 Ensure rsync service is stopped and not enabled +✓ Pass: A 100 Ensure shadow group is empty +✕ Fail: C 50 Ensure auditd is installed +✓ Pass: A 100 Ensure SNMP server is stopped and not enabled +✓ Pass: A 100 Ensure telnet server is stopped and not enabled +✓ Pass: A 100 Ensure Samba is stopped and not enabled +✕ Fail: C 50 Ensure unsuccessful unauthorized file access attempts are collected +✕ Fail: B 60 Ensure audit logs are not automatically deleted +✕ Fail: C 50 Ensure rsyslog Service is enabled +✓ Pass: A 100 Ensure X Window System is not installed +✓ Pass: A 100 Ensure root group is empty +✕ Fail: C 50 Ensure rsyslog default file permissions configured +✕ Fail: D 25 Ensure TCP SYN Cookies is enabled +. Skipped: Ensure secure permissions on /etc/gshadow- are set +✓ Pass: A 100 Ensure HTTP Proxy server is stopped and not enabled +✕ Fail: D 25 Ensure secure ICMP redirects are not accepted +✓ Pass: A 100 Ensure HTTP servers are stopped and not enabled +. Skipped: Ensure secure permissions on /etc/group- are set +✓ Pass: A 100 Ensure no known platform advisories exist +✓ Pass: A 100 Ensure no duplicate UIDs exist +✕ Fail: D 25 Ensure bogus ICMP responses are ignored +✕ Fail: C 40 Ensure Advanced Intrusion Detection Environment (AIDE) is installed +✕ Fail: D 25 Ensure ICMP redirects are not accepted +✓ Pass: A 100 Ensure LDAP server is stopped and not enabled +. Skipped: Ensure secure permissions on /etc/passwd- are set +✓ Pass: A 100 Ensure sudo logging is enabled +✓ Pass: A 100 Ensure rsh server is stopped and not enabled +✕ Fail: D 10 Ensure address space layout randomization (ASLR) is enabled +✓ Pass: A 100 Ensure secure permissions on /etc/gshadow are set +✓ Pass: A 100 Ensure IMAP and POP3 server is stopped and not enabled +! Error: Ensure successful file system mounts are collected +✓ Pass: A 100 Ensure tftp server is stopped and not enabled +✕ Fail: B 60 Ensure events that modify user/group information are collected +. Skipped: Ensure journald is configured to compress large log files +✓ Pass: A 100 Ensure default group for the root account is GID 0 +✕ Fail: B 60 Ensure session initiation information is collected +✓ Pass: A 100 Ensure login and logout events are collected +✓ Pass: A 100 Ensure events that modify date and time information are collected +✕ Fail: B 60 Ensure system is disabled when audit logs are full +✓ Pass: A 100 Ensure file deletion events by users are collected +✓ Pass: A 100 Ensure access to the su command is restricted +✓ Pass: A 100 Ensure DHCP server is stopped and not enabled +✓ Pass: Platform is not end-of-life +✓ Pass: Ensure the platform is not near or currently end-of-life +✕ Fail: D 25 Ensure packet redirect sending is disabled +✓ Pass: A 100 Ensure events that modify the system\'s network environment are collected +✓ Pass: A 100 Ensure secure permissions on /etc/shadow are set +✓ Pass: A 100 Ensure secure permissions on /etc/passwd are set +✓ Pass: A 100 Ensure mail transfer agent is configured for local-only mode +✓ Pass: A 100 Ensure prelink is disabled +✓ Pass: A 100 Ensure talk server is stopped and not enabled +✕ Fail: C 40 Ensure broadcast ICMP requests are ignored +✓ Pass: A 100 Ensure system administrator actions (sudolog) are collected +. Skipped: Ensure journald is configured to write logfiles to persistent disk +. Skipped: Ensure secure permissions on /etc/shadow- are set +✕ Fail: D 25 Ensure IP forwarding is disabled +✕ Fail: C 50 Ensure auditing for processes that start prior to auditd is enabled +✕ Fail: C 50 Ensure rsyslog is installed +. Skipped: Ensure journald is configured to send logs to rsyslog +✓ Pass: A 100 Ensure CUPS is stopped and not enabled +✓ Pass: A 100 Ensure FTP server is stopped and not enabled +✓ Pass: A 100 Ensure each user is a member of a group +✓ Pass: A 100 Ensure the audit configuration is immutable +✕ Fail: D 25 Ensure IPv6 router advertisements are not accepted +✕ Fail: C 50 Ensure changes to system administration scope (sudoers) is collected +✕ Fail: C 50 Ensure discretionary access control permission modification events are collected +✓ Pass: A 100 Ensure no duplicate GIDs exist +✕ Fail: C 50 Ensure auditd service is enabled +✓ Pass: A 100 Ensure no duplicate group names exist +! Error: Ensure events that modify the system\'s Mandatory Access Controls are collected +✕ Fail: D 25 Ensure core dumps are restricted +✕ Fail: C 50 Ensure kernel module loading and unloading is collected +✓ Pass: A 100 Ensure no duplicate user names exist +✓ Pass: A 100 Ensure secure permissions on /etc/group are set +✕ Fail: C 40 Ensure suspicious packets are logged +✕ Fail: D 25 Ensure source routed packets are not accepted +✓ Pass: A 100 Ensure NIS server is stopped and not enabled +✓ Pass: A 100 Ensure UID_MIN is set to 1000 +✕ Fail: D 25 Ensure Reverse Path Filtering is enabled +✓ Pass: A 100 Ensure all GIDs in /etc/passwd exist in /etc/group + +Vulnerabilities: + ■ SCORE PACKAGE INSTALLED FIXED AVAILABLE + ■ 0 libpam-modules 1.4.0-11ubuntu2.3 1.5.2-6ubuntu1.1 + +Overall CVSS score: 0.0 + + +Scanned 1 asset + +Ubuntu 22.04.3 LTS + B luna-mars@sha256:ad2e043042a33820554c396437ca2adcfee710e1022ad058c7f2274a3d22d8d4 + +See more scan results and asset relationships on the Mondoo Console: https://edge.console.mondoo.com/space/fleet/2b8va6KZDNOVql0f5fLlakhZUfl?spaceId=distracted-hawking-771479 +``` + +--- diff --git a/docs/cnspec/supplychain/registry/azure_acr.md b/docs/cnspec/supplychain/registry/azure_acr.md new file mode 100644 index 000000000..7f269e8d1 --- /dev/null +++ b/docs/cnspec/supplychain/registry/azure_acr.md @@ -0,0 +1,116 @@ +--- +title: Azure Container Registry (ACR) +sidebar_label: Azure Container Registry (ACR) +sidebar_position: 3 +displayed_sidebar: cnspec +description: This page provides an overview of how to use Mondoo to scan Azure Container Registry for vulnerabilities in your containers. +image: /img/featured_img/mondoo-azure.jpg +--- + +The [Azure Container Registry](https://azure.microsoft.com/en-us/products/container-registry/) allows you to store container images within Azure. To learn about the Azure registry, read [Get Started Guide](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-get-started-docker-cli?tabs=azure-cli) in the Azure documentation. + + +import Partial from "./_providers-note.mdx"; + +{" "} + +## Prerequisite + +cnspec uses the configuration from [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest). Install the `az` command and log into Azure: + +```bash +az login +``` + +Display all available registries: + +```bash +$ az acr list --output table + +NAME RESOURCE GROUP LOCATION SKU LOGIN SERVER +--------- ---------------- ---------- -------- -------------------- + eastus Standard +``` + +List available container images: + +```bash +$ az acr repository list --name --output table + +Result +----------- +centos +hello-world +ubuntu +``` + +Log into Docker to ensure the Azure CLI creates the correct docker configuration. Mondoo uses the Docker configuration to connect to Azure as well. + +```bash +az acr login --name +``` + +## Scan + +Once you log in, cnspec can scan the registry: + +```bash +# scan the complete registry +$ cnspec scan container registry + + → loaded configuration from /Users/suki/.config/mondoo/mondoo.yml +Start the vulnerability scan: + → resolve asset connections + → verify platform access to 7e5330839326 + → gather platform details + → detected centos 6.10 + → gather platform packages for vulnerability scan + → found 129 packages + ✔ completed analysis for 7e5330839326 + → verify platform access to 92c7f9c92844 + → gather platform details + → detected scratch + → gather platform packages for vulnerability scan + → found 0 packages + ✔ completed analysis for 92c7f9c92844 + → verify platform access to 61844ceb1dd5 + → gather platform details + → detected ubuntu 19.04 + → gather platform packages for vulnerability scan + → found 89 packages + ✔ completed analysis for 61844ceb1dd5 +Advisory Reports Overview + ■ SCORE NAME SCORE + ■ 9.8 7e5330839326 ══════════ + ■ 0.0 92c7f9c92844 ══════════ + ■ 0.0 61844ceb1dd5 ══════════ +``` + +You can also scan individual repositories: + +```bash +$ cnspec scan container registry /centos + + → loaded configuration from /Users/suki/.config/mondoo/mondoo.yml +Start the vulnerability scan: + → resolve asset connections + → verify platform access to 7e5330839326 + → gather platform details + → detected centos 6.10 + → gather platform packages for vulnerability scan + → found 129 packages + ✔ completed analysis for 7e5330839326 +Advisory Report ( asset 7e5330839326): + ■ SCORE PACKAGE INSTALLED VULNERABLE (<) AVAILABLE ADVISORY + ■ 9.8 python 2.6.6-66.el6_8 2.6.6-68.el6_10 2.6.6-66.el6_8 https://mondoo.app/vuln/CESA-2019%3A1467 + ... + → ■ found 10 advisories: ■ 1 critical, ■ 5 high, ■ 4 medium, ■ 0 low, ■ 0 informational, ■ 0 unknown +``` + +To scan a specific container image, use: + +```bash +cnspec scan docker mondooacr.azurecr.io/centos:6.10 +``` + +--- diff --git a/docs/cnspec/supplychain/registry/docker_hub.md b/docs/cnspec/supplychain/registry/docker_hub.md new file mode 100644 index 000000000..f531c043f --- /dev/null +++ b/docs/cnspec/supplychain/registry/docker_hub.md @@ -0,0 +1,78 @@ +--- +title: Docker Hub +sidebar_label: Docker Hub +sidebar_position: 5 +displayed_sidebar: cnspec +description: This page provides an overview of how to use Mondoo to scan Docker Hub for vulnerabilities in your containers. +image: /img/featured_img/mondoo-docker.jpg +--- + +The [Docker Hub](https://hub.docker.com/) is a well-known registry that lists the major public container images. To learn about the Docker Hub, read the Docker Hub [Get Started Guide](https://docs.docker.com/docker-hub/). + + +import Partial from "./_providers-note.mdx"; + +{" "} + +## Prerequisite + +Install the Docker CLI and [Log into the registry](https://docs.docker.com/engine/reference/commandline/login/): + +```bash +docker login +``` + +## Scan + +Once you log in, you can run `cnspec scan` to asses security: + +```bash +$ cnspec scan container registry index.docker.io/mondoolabs/mondoo + + → loaded configuration from /Users/username/.config/mondoo/mondoo.yml +Start the vulnerability scan: + → resolve asset connections + → verify platform access to cf5442b2d681 + → gather platform details + → detected alpine 3.10.1 + → gather platform packages for vulnerability scan + → found 38 packages + ✔ completed analysis for cf5442b2d681 + → verify platform access to 23ae745857f8 + → gather platform details + → detected alpine 3.10.1 + → gather platform packages for vulnerability scan + → found 38 packages + ✔ completed analysis for 23ae745857f8 +... + → verify platform access to b419fd9f16ae + → gather platform details + → detected alpine 3.10.2 + → gather platform packages for vulnerability scan + → found 38 packages + ✔ completed analysis for b419fd9f16ae +Advisory Reports Overview + ■ SCORE NAME SCORE + ■ 0.0 331cf0232075 ══════════ + ■ 0.0 747afbd1fb74 ══════════ + ■ 0.0 eafc9d1d5537 ══════════ + ■ 0.0 b419fd9f16ae ══════════ + ■ 0.0 9b4ae77d28b6 ══════════ + ■ 0.0 cb01bf407dc2 ══════════ + ■ 0.0 d16b8960ff5f ══════════ + ■ 0.0 0b811b267d65 ══════════ + ■ 0.0 c601ebfd35b4 ══════════ + ■ 0.0 087756d58892 ══════════ + ■ 0.0 5a2cd2cd75f3 ══════════ + ■ 0.0 1e6c181819f1 ══════════ + ■ 0.0 f36d3fba0066 ══════════ + ■ 0.0 9908ccbd6449 ══════════ + ■ 0.0 23ae745857f8 ══════════ + ■ 0.0 4f81f1be7364 ══════════ + ■ 0.0 487a85aea611 ══════════ + ■ 0.0 69bd294493a0 ══════════ + ■ 0.0 f59925492ed6 ══════════ + ■ 0.0 cf5442b2d681 ══════════ +``` + +--- diff --git a/docs/cnspec/supplychain/registry/gcp_gcr.md b/docs/cnspec/supplychain/registry/gcp_gcr.md new file mode 100644 index 000000000..e3a8a4921 --- /dev/null +++ b/docs/cnspec/supplychain/registry/gcp_gcr.md @@ -0,0 +1,104 @@ +--- +title: Google Container Registry +sidebar_label: Google Container Registry +sidebar_position: 4 +displayed_sidebar: cnspec +description: This page provides an overview of how to use Mondoo to scan Google Container Registry for vulnerabilities in your containers. +image: /img/featured_img/mondoo-gcp.jpg +--- + +The [Container Registry](https://cloud.google.com/container-registry/docs) allows you to store container images within Google Cloud. To learn about the Google Cloud container registry, read the Container Registry [Get Started Guide](https://cloud.google.com/container-registry/docs). + + +import Partial from "./_providers-note.mdx"; + +{" "} + +## Prerequisite + +Install the [gcloud](https://cloud.google.com/sdk/install) command and [log in](https://cloud.google.com/sdk/gcloud/reference/auth/login) using `gcloud auth login`. + +Set your project: + +```bash +$ gcloud config set project + +Updated property [core/project]. +``` + +List all available container repositories: + +```bash +$ gcloud container images list + +NAME +gcr.io// +``` + +List the repositories' tags: + +```bash +$ gcloud container images list-tags gcr.io// + +DIGEST TAGS TIMESTAMP +e5dd9abc37df latest 2020-03-20T20:20:23 +a98d9dcf3a34 16.04 2020-02-21T23:22:30 +0925d0867157 18.04 2020-02-21T23:20:44 +61844ceb1dd5 19.04 2020-01-16T02:20:47 +``` + +To authenticate with the registry, [log in with gcloud](https://cloud.google.com/container-registry/docs/advanced-authentication#standalone-helper) + +```bash +gcloud auth configure-docker +``` + +## Scan + +To scan an individual repository, enter: + +```bash +cnspec scan container registry gcr.io// + + → loaded configuration from /Users/suki/.config/mondoo/mondoo.yml +Start the vulnerability scan: + → resolve asset connections + → verify platform access to a98d9dcf3a34 + → gather platform details + → detected ubuntu 16.04 + → gather platform packages for vulnerability scan + → found 96 packages + ✔ completed analysis for a98d9dcf3a34 + → verify platform access to 0925d0867157 + → gather platform details + → detected ubuntu 18.04 + → gather platform packages for vulnerability scan + → found 89 packages + ✔ completed analysis for 0925d0867157 + → verify platform access to 61844ceb1dd5 + → gather platform details + → detected ubuntu 19.04 + → gather platform packages for vulnerability scan + → found 89 packages + ✔ completed analysis for 61844ceb1dd5 + → verify platform access to e5dd9abc37df + → gather platform details + → detected ubuntu 18.04 + → gather platform packages for vulnerability scan + → found 89 packages + ✔ completed analysis for e5dd9abc37df +Advisory Reports Overview + ■ SCORE NAME SCORE + ■ 0.0 a98d9dcf3a34 ══════════ + ■ 0.0 0925d0867157 ══════════ + ■ 4.6 61844ceb1dd5 ══════════ + ■ 0.0 e5dd9abc37df ══════════ +``` + +Google Cloud also ships with non-standard extensions to search images on your project level. To use those extensions, use the `gcp gcr` provider: + +```bash +cnspec scan gcp gcr +``` + +--- diff --git a/docs/cnspec/supplychain/registry/harbor.md b/docs/cnspec/supplychain/registry/harbor.md new file mode 100644 index 000000000..c6b9aacd2 --- /dev/null +++ b/docs/cnspec/supplychain/registry/harbor.md @@ -0,0 +1,111 @@ +--- +title: Harbor Container Registry +sidebar_label: Harbor Container Registry +sidebar_position: 6 +displayed_sidebar: cnspec +description: This page provides an overview of how to use cnspec to scan Harbor Container Registry for vulnerabilities in your containers. +image: /img/featured_img/mondoo-feature.jpg +--- + +The [Harbor Registry](https://goharbor.io/) is an open source container registry. To learn how to set up the registry, read [Harbor Installation and Configuration](https://goharbor.io/docs/1.10/install-config/). + + +import Partial from "./_providers-note.mdx"; + +{" "} + +## Prerequisite + +Log into docker with your Harbor credentials. cnspec uses Docker's configuration. + +```bash +docker login -u admin -p Harbor12345 harbor.lunalectric.com +``` + +## Individual scan + +> Note: If you are running Harbor with self-signed certificates, use the `--insecure` flag. It deactivates Mondoo certificate checks. We do not recommend to use a self-signed certificate in production + +To scan the whole registry, run: + +```bash +cnspec scan container registry harbor.lunalectric.com --insecure +``` + +To scan an individual repository, run: + +```bash +cnspec scan container registry harbor.lunalectric.com/library/centos --insecure +``` + +## Harbor interrogation services + +To complete this task, you must first [create a free Mondoo Platform account](/cnspec/cnspec-platform). + +1. In the Mondoo Console, create a new, separate space for the Harbor integration. + +2. Install Mondoo on a machine that the Harbor registry can access or a machine that runs Harbor. To learn more, read [the Linux installation instructions](/cnspec/cnspec-adv-install/linux.mdx). Register the agent with the created space + +3. Normal service-accounts do not have the permission to fetch report results, therefore we need to elevate the service account. Run `mondoo status` and note your service account ID. + +``` +$ mondoo status +→ Hostname: mondoo-harbor.lunalectric.com +→ IP: 192.168.178.22 +→ Platform: macos +→ Release: 11.5.2 +... +→ Service Account: //agents.api.mondoo.app/spaces/distracted-taussig-12345/serviceaccounts/1vCf14l6pSczU9pmhAmTmCABTk6 +→ agent is registered +→ agent authenticated successfully +``` + +In the example above, the service account ID is `1vCf14l6pSczU9pmhAmTmCABTk6`. + +4. In the Mondoo Console, select your space -> Settings -> Service Accounts. Select the service account and set permissions to `Space Gateway Agent`. + +5. By default, the Mondoo service does not expose the harbor API, so you must edit the configuration file, `/etc/opt/mondoo/mondoo.yml` to match + +```yaml +--- +space_mrn: //captain.api.mondoo.app/spaces/distracted-taussig-12345 +container_registries: + token: abc123 # change this to a random long token to secure the api + enable_harbor: true +``` + +6. Run: `mondoo serve` + +```bash +mondoo serve -b https://0.0.0.0:8990 +→ loaded configuration from /Users/suki/.config/mondoo/mondoo.yml using source default +→ enabled beta feature to scan for container registries, normal serve is deactivated +→ use bearer token authentication token=abc123 +→ enable health check url=/Health/Check +→ enable harbor webhook url=/harbor/ +→ enable bearer authentication +→ start http server address=0.0.0.0:8990 +``` + +6. Test the API: + +```bash +curl -H 'Accept: application/vnd.scanner.adapter.metadata+json; version=1.0' -H 'Authorization: Bearer abc123' http://0.0.0.0:8990/harbor/api/v1/metadata +{"scanner":{"name":"Mondoo","vendor":"Mondoo, Inc","version":"Mondoo 5.2.0 (3b16ff833, unknown)"},"capabilities":[{"consumes_mime_types":["application/vnd.oci.image.manifest.v1+json","application/vnd.docker.distribution.manifest.v2+json"],"produces_mime_types":["application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0","application/vnd.security.vulnerability.report; version=1.1"]}],"properties":{"harbor.scanner-adapter/registry-authorization-type":"Bearer","harbor.scanner-adapter/scanner-type":"os-package-vulnerability"}} +``` + +7. Open Harbor and configure the public IP of the machine running cnspec. + +![Configure Mondoo as Interrogation Services](/img/cnspec/supplychain/registry/harbor/harbor_configure_1.png) + +![Configure Mondoo as Interrogation Services](/img/cnspec/supplychain/registry/harbor/harbor_configure_2.png) + +8. Navigate to the container image you want to scan and select the scan button + +![Configure Mondoo as Interrogation Services](/img/cnspec/supplychain/registry/harbor/harbor_scan_1.png) + +![Configure Mondoo as Interrogation Services](/img/cnspec/supplychain/registry/harbor/harbor_scan_2.png) + +![Configure Mondoo as Interrogation Services](/img/cnspec/supplychain/registry/harbor/harbor_scan_3.png) + +--- diff --git a/docs/cnspec/supplychain/terraform.md b/docs/cnspec/supplychain/terraform.md new file mode 100644 index 000000000..60a2b2201 --- /dev/null +++ b/docs/cnspec/supplychain/terraform.md @@ -0,0 +1,418 @@ +--- +title: Assess HashiCorp Terraform Code Security with cnspec +sidebar_label: Terraform +sidebar_position: 3 +displayed_sidebar: cnspec +description: This page provides an overview of how to use Mondoo alongside HashiCorp Terraform automation. +image: /img/featured_img/mondoo-terraform.jpg +--- + +Mondoo is designed to scan and detect security issues and misconfigurations with Terraform (hcl) code during development process on the developer's workstation, as well as an automated step in CI/CD pipelines. Additionally, Mondoo can be configured as a post-provisioning step by scanning your infrastructure against policies as code after each Terraform apply. + +Mondoo's end-to-end process provides a multi-layered approach to find and fix security issues before they reach production. This page provides detailed information on how to use Mondoo alongside Terraform. + +### Before you begin + +Before you begin working with Mondoo for static analysis of Terraform code, ensure you have: + +- A Mondoo account (Go to [https://console.mondoo.com](https://console.mondoo.com) and sign-up for a free account). +- cnspec [installed on your workstation](/cnspec/) and registered with Mondoo Platform. + +## Terraform static analysis with cnspec + +cnspec natively supports static analysis of Terraform (hcl) code for security misconfigurations using policy as code in Mondoo Platform. This process allows infrastructure developers responsible for writing and maintaining Terraform code for their organization to detect security issues before pushing changes to a remote repository. + +Static analysis of Terraform code can also be configured as a step into any CI/CD tool. This added step can be a guardrail to ensure infrastructure meets security requirements for the business. + +### Enable Terraform policies maintained by Mondoo + +Mondoo Platform has a growing list of policies for static analysis of Terraform code. Mondoo policies are developed by translating infrastructure configuration security recommendations and best practices into automated tests using MQL, and provide a solid template for developing your own policies should the need arise. + +Start by enabling any Terraform policies in Mondoo Platform you want to run against your Terraform code: + +1. Log in to [https://console.mondoo.com](https://console.mondoo.com). +2. Navigate to **Registry**. +3. In the **Filter policies...** box, search for "Terraform". +4. Check the box next to any policies you want to enable, and select the **ENABLE** button. + +### Scan Terraform code with cnspec + +To scan your Terraform code with cnspec, open a terminal and run this command: + +```bash title="Static analysis of Terraform code with cnspec" +cnspec scan terraform /path/to/terraform/ +``` + +cnspec scans any `.tf` files in the specified directory and returns the results to `STDOUT` in the terminal. If you're logged into Mondoo Platform, cnspec also sends results to your Mondoo account. + +![Terraform Scan Report in Mondoo UI](/img/cnspec/terraform/terraform-asset.png) + +## Developing Terraform policies as code with Mondoo + +MQL provides native resources for querying Terraform code, and making checks. While detailed information on each Terraform specific resource can be found in our [MQL Reference](/mql/resources/), this section provides an overview of those resources as well as examples of translating security requirements for Terraform code into policy as code. + +### Overview of MQL resources for Terraform + +Terraform language syntax is built around two key syntax constructs: arguments and blocks. Additionally, there are a number of other constructs that Terraform provides with the language including resources, data sources, providers, and modules that are used when automating infrastructure with Terraform. + +MQL provides these native resources for querying Terraform code to develop checks for policies as code, and for querying using the cnspec shell: + +- `terraform` - Parent resource in MQL that provides a number of fields for describing Terraform code. +- `terraform.files` - Returns a list of `terraform.file` resources of all of the Terraform files found when scanning a directory. +- `terraform.tfvars` - Returns a dict with attributes from all `.tfvars` and `.tfvars.json` files found when scanning a directory. +- `terraform.modules` - Returns a list of `terraform.module` resources from Terraform modules referenced throughout your Terraform code. +- `terraform.blocks` - Returns a list of `terraform.block` resources describing any Terraform blocks within each Terraform resource. + +### Example: Ensure AWS S3 buckets use server-side encryption + +A common security configuration for AWS S3 buckets that is found in both the CIS AWS Foundations benchmark, as well as numerous AWS best practice policies is to enable server-side encryption. This configuration is optional when provisioning an S3 bucket with Terraform, but is easily tested with MQL. + +**Terraform S3 resource with server-side encryption** + +This code snippet provides an example of using Terraform to provision an S3 bucket with server-side encryption: + +```hcl + +resource "aws_kms_key" "mykey" { + description = "This key is used to encrypt bucket objects" + deletion_window_in_days = 10 +} + +resource "aws_s3_bucket" "my-encrypted-bucket" { + bucket = "my-encrypted-bucket" + + server_side_encryption_configuration { + rule { + apply_server_side_encryption_by_default { + kms_master_key_id = aws_kms_key.mykey.arn + sse_algorithm = "aws:kms" + } + } + } +} + +``` + +As defined in the [Terraform documentation](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket#apply_server_side_encryption_by_default) for the `aws_s3_bucket` resource, the `server_side_encryption_configuration` argument is optional, but when used requires a `rule` object defining the SSE configuration. The example above defines an SSE rule with the argument `apply_server_side_encryption_by_default` that enables SSE by default for the bucket. + +**Translate policy to MQL** + +This code snippet provides an example of how to test Terraform code to ensure any `aws_s3_bucket` resources define a `rule` that sets the `apply_server_side_encryption_by_default` argument: + +```mql + +terraform.resources.where( nameLabel == 'aws_s3_bucket') { + blocks { + blocks.one( _.type == "rule" && _.blocks.one( type == 'apply_server_side_encryption_by_default' )) + } +} + +``` + +**How this query works** + +As Terraform projects tend to include many different Terraform resources within the same file or directory, MQL makes it easy to filter by specific resources using the `.where` built-in function so the query targets just the `aws_s3_bucket` resources: + +```mql +terraform.resources.where( nameLabel == "aws_s3_bucket") +``` + +Filtering by `aws_s3_bucket` resources returns a list of objects that contains fields that describe the Terraform code. The `terraform.block` resource provides fields for describing blocks of code within a given resource. The code snippet above is an example of nested blocks (blocks inside of blocks) as follows: + +```hcl +... + server_side_encryption_configuration { + rule { + apply_server_side_encryption_by_default { + kms_master_key_id = aws_kms_key.mykey.arn + sse_algorithm = "aws:kms" + } + } +... +``` + +To access the nested block, the MQL query calls the `block` field on the results from `terraform.resources.where( nameLabel == 'aws_s3_bucket')`, which returns a list of all `blocks` with each `aws_s3_bucket` resource. To illustrate this further, consider this query in cnspec Shell that shows all of the available fields for the `terraform.block` resource: + +```mql +mondoo> terraform.resources.where( nameLabel == 'aws_s3_bucket') { blocks {*} } +terraform.resources.where: [ + 0: { + blocks: [ + 0: { + snippet: " 6 | resource \"aws_s3_bucket\" \"mybucket\" { + 7 | bucket = \"mybucket\" + 8 | + 9 | server_side_encryption_configuration { + 10 | rule { + 11 | apply_server_side_encryption_by_default { + 12 | kms_master_key_id = aws_kms_key.mykey.arn +" + start: terraform.fileposition id = file.position//tmp/terraform/s3.tf/9/3 + type: "server_side_encryption_configuration" + blocks: [ + 0: terraform.block id = terraform.block//tmp/terraform/s3.tf/10/5 + ] + arguments: {} + nameLabel: "" + end: terraform.fileposition id = file.position//tmp/terraform/s3.tf/9/3 + labels: [] + attributes: {} + } + ] + } +] +``` + +The results show a number of fields that can be used to refine the query, including the existence of the nested `blocks`. The query above can be further refined by accessing the nested blocks as follows: + +```mql +cnspec> terraform.resources.where( nameLabel == 'aws_s3_bucket') { blocks { blocks { * } } } +terraform.resources.where: [.................... + 0: { + blocks: [ + 0: { + blocks: [ + 0: { + end: terraform.fileposition id = file.position//tmp/terraform/s3.tf/10/5 + labels: [] + snippet: " 7 | bucket = \"mybucket\" + 8 | + 9 | server_side_encryption_configuration { + 10 | rule { + 11 | apply_server_side_encryption_by_default { + 12 | kms_master_key_id = aws_kms_key.mykey.arn + 13 | sse_algorithm = \"aws:kms\" +" + arguments: {} + nameLabel: "" + attributes: {} + type: "rule" + blocks: [ + 0: terraform.block id = terraform.block//tmp/terraform/s3.tf/11/7 + ] + start: terraform.fileposition id = file.position//tmp/terraform/s3.tf/10/5 + } + ] + } + ] + } +] +``` + +The output above shows the nested block contains a field labeled `type` with a value of `"rule"`. The `aws_s3_bucket` resource `server_side_encryption_configuration` argument allows for the definition of multiple rules, and any of those rules may define the `apply_server_side_encryption_by_default` argument. + +MQL makes it easy to check for the existence of one configuration with the `.one` built-in function. The example above uses this query: + +```mql +... + +blocks.one( _.type == "rule" && _.blocks.one( type == 'apply_server_side_encryption_by_default' )) + +... + +``` + +The code above checks for one block where the `type == "rule"` along with using the `&&` operator to check for a `block` that has a `type == 'apply_server_side_encryption_by_default'`. The use of `_.type` and `_.blocks.one` are constructs of MQL to loop through any `type` and `block` fields, and can be used when iterating over lists. + +## Terraform post-provisioning scans with cnspec + +Mondoo can also be used to as post-provisioning step when running `terraform apply` to run policies as code against your infrastructure. Results from scans are sent to Mondoo Platform to provide observability that infrastructure is continuously scanned for adherence to company policy. + +Additionally, `cnspec scan` exit statuses can be used to trigger action in the event of a failure such as sending a notification to the appropriate team. + +### Example 1: Post-provision scan of Digital Ocean infrastructure + +This Terraform snippet launches a DigitalOcean droplet with Nginx installed, and scans the infrastructure with Mondoo against any policies enabled in Mondoo Platform. + +```tf title="main.tf" +terraform { + required_providers { + digitalocean = { + source = "digitalocean/digitalocean" + version = ">= 2.5.1" + } + } +} + +variable "do_token" { + description = "value of DIGITALOCEAN_TOKEN" +} + +provider "digitalocean" { + token = var.do_token +} + +variable "private_key" { + description = "path to private key" + default = "~/.ssh/id_rsa" +} + +variable "public_key" { + description = "path to public key" + default = "~/.ssh/id_rsa.pub" +} + +resource "digitalocean_ssh_key" "default" { + name = "terraform" + public_key = file(var.public_key) +} + +resource "digitalocean_droplet" "mywebserver" { + ssh_keys = [ + digitalocean_ssh_key.default.fingerprint + ] + image = "ubuntu-18-04-x64" + region = "nyc1" + size = "s-1vcpu-1gb" + private_networking = true + backups = true + ipv6 = true + name = "sample-tf-droplet" + + # The connection is required to let provisioner's know how to connect + connection { + type = "ssh" + host = self.ipv4_address + user = "root" + timeout = "2m" + private_key = file(var.private_key) + } + + provisioner "remote-exec" { + inline = [ + "export PATH=$PATH:/usr/bin", + "sudo apt update", + "sudo apt install -y nginx", + ] + } + + provisioner "local-exec" { + command = "cnspec scan ssh root@${self.ipv4_address} -i ${var.private_key} --insecure --score-threshold 0" + } +} +``` + +**Run terraform apply** + +To run the example: + +```bash bash title="Command Line" +# set token for DigitalOcean +export DIGITALOCEAN_TOKEN=d1...ef +# run terraform +terraform apply -var do_token=$DIGITALOCEAN_TOKEN +``` + +To trigger cnspec, use the `local-exec` and pass in the required arguments to connect to the machine: + +```tf title="main.tf" +provisioner "local-exec" { + command = "cnspec scan ssh root@${self.ipv4_address} -i ${var.private_key} --insecure --score-threshold 0" +} +``` + +**Run terraform destroy** + +You can easily destroy the setup via: + +```bash title="Run terraform destroy" +terraform destroy -var do_token=$DIGITALOCEAN_TOKEN +``` + +### Example 2: Post-provision scan of AWS infrastructure + +This example illustrates the combination of Terraform & Mondoo to build and scan infrastructure in AWS. Similar to the example above, it runs `cnspec scan` as a post-provisioning step for the EC2 instance. Additionally, it also runs a scan for the AWS account itself. + +**Terraform configuration** + +```tf title="main.tf" +resource "aws_instance" "web" { + # The connection block tells our provisioner how to + # communicate with the resource (instance) + connection { + host = coalesce(self.public_ip, self.private_ip) + type = "ssh" + user = "ubuntu" + timeout = "2m" + private_key = file(var.private_key) + } + + instance_type = "t2.micro" + + # Lookup the correct AMI based on the region as we specified + ami = var.aws_amis[var.aws_region] + + # The name of our SSH keypair we created above. + key_name = aws_key_pair.auth.id + + # Our Security group to allow HTTP and SSH access + security_groups = [aws_security_group.default.name] + + # We run a remote provisioner on the instance after creating it. + # In this case, we just install nginx and start it. By default, + # this should be on port 80s + provisioner "remote-exec" { + inline = [ + "sudo apt update -y", + "sudo apt install -y nginx", + "sudo service nginx start", + ] + } + + # run scan of instance + provisioner "local-exec" { + command = "cnspec scan ssh ubuntu@${coalesce(self.public_ip, self.private_ip)} -i ${var.private_key} --insecure --score-threshold 0" + } +} + +# run scan of aws account +resource "null_resource" "example1" { + provisioner "local-exec" { + command = "cnspec scan aws --option 'region=${var.aws_region}' --score-threshold 0" + } + + depends_on = [ + "aws_instance.web" + ] +} + +``` + +**Clone the example repository** + +To run the full example, clone the examples first: + +```bash title="Command Line" +git clone https://github.com/mondoohq/installer.git +cd mondoo/examples/terraform-aws +``` + +**Initialize the project** + +Initialize the project by running `terraform init`: + +```bash title="Download dependent modules" +terraform init +``` + +**Run terraform apply** + +Now you can provision a new EC2 instance: + +```bash title="Run Terraform apply" +terraform apply -var 'key_name=terraform' -var 'public_key=~/.ssh/id_rsa.pub' -var 'private_key=~/.ssh/id_rsa' +``` + +**Run terraform destroy** + +You can destroy the setup using: + +```bash title="Run terraform destroy" +terraform destroy -var 'key_nameterraform' -var 'public_key=~/.ssh/id_rsa.pub' -var 'private_key=~/.ssh/id_rsa' +``` + +## Learn more + +- To learn more about how the MQL query language works, read [Write Effective MQL](/mql/mql.write/). + +--- diff --git a/docs/cnspec/uninstall.mdx b/docs/cnspec/uninstall.mdx new file mode 100644 index 000000000..b42d0eea0 --- /dev/null +++ b/docs/cnspec/uninstall.mdx @@ -0,0 +1,83 @@ +--- +title: Uninstall cnspec +sidebar_label: Uninstall cnspec +displayed_sidebar: cnspec +sidebar_position: 8 +description: Remove cnspec from a device +image: /img/featured_img/mondoo-feature.jpg +--- + +## Remove cnspec from a Debian-based Linux machine + +1. Log out the cnspec client from the back end: + + ```bash + cnspec logout --force + ``` + +2. Uninstall the package: + + ```bash + apt remove mondoo + apt autoremove + ``` + +3. Remove the repository: + + ```bash + rm /usr/share/keyrings/mondoo-archive-keyring.gpg + rm /etc/apt/sources.list.d/mondoo.list + ``` + +## Remove cnspec from a Red Hat-based Linux machine + +1. Log out the cnspec client from the back end: + + ```bash + cnspec logout --force + ``` + +2. Uninstall the package: + + ```bash + dnf remove mondoo + ``` + +3. Remove the repository: + + ```bash + rm /etc/yum.repos.d/mondoo.repo + ``` + +## Remove cnspec from a Windows machine + +1. Log out the cnspec client from the back end: + + ```powershell + cnspec logout --force + ``` + +2. Remove the MondooUpdater task: + + ```powershell + Unregister-ScheduledTask -TaskName MondooUpdater -Confirm:$false; + $scheduleObject = New-Object -ComObject Schedule.Service; $scheduleObject.connect(); $rootFolder = $scheduleObject.GetFolder("\"); $rootFolder.DeleteFolder("Mondoo",$null) + ``` + +3. Uninstall the Mondoo MSI package: + + ```powershell + $app = Get-WmiObject -Class Win32_Product -Filter "Name = 'Mondoo'";$app.Uninstall();rm 'C:\Program Files\Mondoo\';rm 'C:\ProgramData\Mondoo\'; + ``` + +## Remove cnspec from a macOS machine + +1. Log out the cnspec client from the back end: + + ```bash + cnspec logout --force + ``` + +2. Remove cnspec using your preferred package manager, such as Homebrew or Nix. + +--- diff --git a/docs/glossary.mdx b/docs/glossary.mdx new file mode 100644 index 000000000..aeabb464a --- /dev/null +++ b/docs/glossary.mdx @@ -0,0 +1,112 @@ +--- +title: "Mondoo Glossary of Terms" +description: Terminology used in the Mondoo, cnspec, cnquery, and MQL documentation +sidebar_label: Glossary +image: /img/featured_img/mondoo-feature.jpg +--- + +### advisory + +An [advisory](/platform/security/vuln/advisories/) is a notice released by a software vendors that provides recommendations on how to fix or mitigate a vulnerability in their product. + +### annotation + +Metadata that you add to an asset in Mondoo is called an [annotation](/platform/intel/annotations/). Annotations are key-value pairs that you can use for anything you want. + +### API token + +An API token gives an application or service access to an application programming interface (API). It's one way to enable different software programs to interact. Some Mondoo integrations rely on API tokens. You can also [create API tokens that provide access to Mondoo's GraphQL API](/platform/maintain/access/api-tokens/). + +### asset + +An asset is a physical or virtual computing, network, or storage device or other component of the information environment. Workstations, servers, SaaS environments, cloud storage, repositories, and virtual machines are only a few examples. + +### check + +A check is a verification of information. For example, a check can assert that an asset has a certain setting enabled or a software version installed. To learn more, read [Policy as Code](/platform/security/posture/pac/). + +### CI/CD + +Continuous integration and continuous delivery/deployment (CI/CD) is a highly automated software development practice in which teams make, test, and deploy frequent, incremental code changes. Mondoo integrates with [major CI/CD platforms](/platform/infra/supply/cicd/overview/) to enable security testing throughout the development process. + +### cnquery + +[cnquery](/cnquery/cnquery-about/) is Mondoo's open source, cloud-native tool that answers every question about your infrastructure. It integrates with [over 600 resources](/mql/resources) to provide quick insight into your operations and development platforms. + +### cnspec + +[cnspec](/cnspec/cnspec-about/) is Mondoo's open source, cloud-native tool that evaluates the security of your entire infrastructure. It's also a core component of the [Mondoo Platform](/platform/start/plat-what-is/), serving as both a CLI and an agent for scanning. + +### control + +A [control](/platform/compliance/monitor/frameworks/#controls-and-checks) is a general guideline in a compliance framework. For example, "Log sensitive data access" and "Maintain secure network architecture" are controls in a framework. + +### CVE + +A [CVE](/platform/security/vuln/overview/) (common vulnerability and exposure) is a weakness in a computer system that an attacker can exploit to gain access or extract information. + +### integration + +An [integration](/platform/infra/overview/) is Mondoo's connection and communication with an [asset](#asset). Integrations allow Mondoo to gather inventory details, assess the security of an asset, and measure compliance. + +### inventory + +An [inventory](/platform/intel/overview) is a collection of all the [assets](#asset) in your infrastructure. Mondoo's inventory gives you visibility into the details of all your assets across multiple platforms. + +### Mondoo Platform + +[Mondoo Platform](/platform/start/plat-what-is/) is Mondoo's full-stack compliance, security, and asset intelligence solution for the enterprise. It integrates with your infrastructure to continuously monitor security and evaluate compliance with the most common industry frameworks. + +### MQL + +[MQL](/mql/home/) is a graph-based query language built for searching and checking infrastructure configuration data and building security policies. + +### organization + +An [organization](/platform/start/organize/organizations/) is a high-level Mondoo entity that can contain one or more [spaces](#space). + +### policy + +A [policy](/platform/security/posture/policies/) is a codified benchmark used to assess your infrastructure. Policies control what misconfigurations and security issues Mondoo checks for when it evaluates your digital business assets. To learn more, read [Policy as Code](/platform/security/posture/pac/). + +### property + +A [property](/platform/security/customize/props/) is a variable part of a [check](#check). Properties let you customize the checks in a policy. For example, a policy might include a check to ensure that passwords are at least eight characters. The password length is a property that you can change. + +### query + +A query is a request for information. The [cnquery](/cnquery/cnquery-about/) CLI tool allows you to query assets in your infrastructure. + +### region + +A [region](/platform/start/organize/regions/) is the part of the world in which an organization conducts business. Mondoo stores and processes your data in different regions to comply with global regulations. + +### registry + +Mondoo's [registry](/platform/security/posture/policies/) is the location in the Mondoo Console where you choose and manage the security policies that are the bases for assessing your infrastructure. + +### score + +Mondoo gives each asset and space a security [score] that represents their ability to withstand attack. Scores are based on the security [policies](#policy) you choose. To learn how Mondoo calculates scores, read [How Mondoo scores policies](/platform/security/posture/monitor/#how-mondoo-scores-policies). + +### security posture + +Your [security posture](/platform/security/posture/overview/) is your organization's ability to identify, respond to, and recover from security threats and risks. + +### service account + +A service account is an identity used by a non-human (such as an application or a service) to access a software system. Mondoo relies on service accounts for some [integrations](#integration). You can also [create service accounts that provide access to Mondoo](/platform/maintain/access/service_accounts/). + +### space + +A [space](/platform/start/organize/spaces/) is a collection of [assets](#asset), policies, and reports that are managed together within Mondoo Platform. Spaces also let you manage which members of your team have access to different information about your infrastructure. + +### team member + +A [team member](/platform/maintain/access/team_members/) is a person in your organization who has access to Mondoo. + +### vulnerability + +A [vulnerability](/platform/security/vuln/overview/) is a weakness in a computer system that an attacker can exploit to gain access or extract information. Vulnerabilities are also known as CVEs (common vulnerabilities and exposures). + +--- diff --git a/docs/intro.md b/docs/intro.md new file mode 100644 index 000000000..df93ae28f --- /dev/null +++ b/docs/intro.md @@ -0,0 +1,75 @@ +--- +slug: / +title: "Mondoo Docs" +hide_title: true +id: intro +description: Mondoo documentation home +image: /img/featured_img/mondoo-feature.jpg +hide_table_of_contents: true +--- + +![Welcome to the Mondoo docs](/img/docs-welcome.png) + +With Mondoo's fully integrated suite of tools and services, you can reach compliance, secure your cloud and on-premises infrastructure, and gain unlimited insight into your environments. + +[Read what's new in our latest release!](releases) + +## [Mondoo Platform](/platform/home/) + +Mondoo's flagship SaaS platform provides full-stack security, asset intelligence, and compliance for your entire infrastructure. + +- [What Is Mondoo?](/platform/start/plat-what-is/) + +- [Get Started](/platform/start/plat-start-acct/) + +#### [Integrate Your Infrastructure with Mondoo](/platform/infra/overview/) + +- [Servers and Endpoints](/platform/infra/opsys/osoverview/) + +- [Cloud](/platform/infra/cloud/overview/) + +- [SaaS](/platform/infra/saas/overview/) + +- [Network](/platform/infra/networking/overview/) + +- [Software Supply Chain](/platform/infra/supply/overview/) + +#### [Security](/platform/security/overview/) + +#### [Compliance](/platform/compliance/overview/) + +#### [Asset Intelligence](/platform/intel/overview/) + +#### [Manage Mondoo](/platform/maintain/overview/) + +## [cnspec](/cnspec/home/) + +cnspec is an open source, cloud-native tool that evaluates the security of your entire infrastructure. It's also a core component of the Mondoo Platform, serving as both a CLI and an agent for scanning. + +- [Get Started with cnspec](cnspec/) + +- [Command Line Reference](/cnspec/cli/cnspec/) + +## [cnquery](/cnquery/home) + +cnquery is an open source, cloud-native tool that answers every question about your infrastructure. + +- [Get Started with cnquery](cnquery/) + +- [Command Line Reference](/cnquery/cli/cnquery/) + +## [MQL](/mql/home/) + +MQL is a graph-based query language built for searching and checking infrastructure configuration data and building security policies. + +- [MQL Resources](/mql/resources/) + +- [Write Effective MQL](/mql/mql.write/) + +## Can't find what you need? + +- Open source users: Join our community discussion on GitHub. + +- Mondoo Platform users: Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/mql/_category_.json b/docs/mql/_category_.json new file mode 100644 index 000000000..f31dad5d3 --- /dev/null +++ b/docs/mql/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "MQL" +} diff --git a/docs/mql/home.md b/docs/mql/home.md new file mode 100644 index 000000000..fbefb83c0 --- /dev/null +++ b/docs/mql/home.md @@ -0,0 +1,36 @@ +--- +title: "MQL Docs" +sidebar_label: MQL Docs Home +displayed_sidebar: MQL +sidebar_position: 1 +description: MQL documentation home +image: /img/featured_img/mondoo-feature.jpg +hide_table_of_contents: true +--- + +MQL is a graph-based query language built for searching and checking infrastructure configuration data and building security policies. + +### [What is MQL?](/mql/resources/) + +Learn the MQL basics. + +### [Write Effective MQL](/mql/mql.write) + +Dive into creating queries, checks, and policies. + +### [MQL Reference](/mql/resources/) + +Find all the resources you can query with MQL. + +
+ +#### See also: + +To learn how to structure and build your own policies, read the Mondoo [Policy Authoring Guide](/cnspec/cnspec-policies/write/). + +#### Can't find what you need? + +- Open source users: Join our community discussion on GitHub. +- Mondoo Platform users: Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/mql/mql-write.md b/docs/mql/mql-write.md new file mode 100644 index 000000000..f146af9f4 --- /dev/null +++ b/docs/mql/mql-write.md @@ -0,0 +1,889 @@ +--- +title: Write Effective MQL +sidebar_label: Write Effective MQL +sidebar_position: 2 +displayed_sidebar: MQL +id: mql.write +description: How to write queries, checks, and policies in MQL +image: /img/featured_img/mondoo-feature.jpg +--- + +We built MQL for searching, filtering, and testing infrastructure configuration data. Easy, lightweight, and fast, MQL’s data extraction resembles GraphQL, while its intuitive scripting approach is similar to JavaScript. + +This page describes the conventions for writing queries and checks in MQL. It contains these sections: + +- [Basic structure](#basic-structure) + - [Resources and fields](#resources-and-fields) + - [Child resources](#child-resources) + - [Blocks](#blocks) + - [Nest blocks](#nest-blocks) + - [Request all fields from a resource](#request-all-fields-from-a-resource) + - [Lists](#lists) + - [Basic functions](#basic-functions) +- [Control structures](#control-structures) + - [If](#if) + - [Switch](#switch) + - [Conditional operators](#conditional-operators) +- [Functions](#functions-h2) + - [Parameters](#parameters) + - [Anonymous functions](#anonymous-functions) + - [Named arguments in functions](#named-arguments-in-functions) +- [Data](#data) + - [Basic data types](#basic-data-types) + - [Regular expressions](#regular-expressions) + - [Time](#time) + - [Empty](#empty) + - [Arrays](#arrays) + - [Array assertions](#array-assertions) + - [Mapping field](#mapping-field) + - [Maps](#maps) + - [Dicts](#dicts) + - [recurse helper for dicts](#recurse-helper-for-dicts) + - [Nested data](#nested-data) +- [Error handling](#error-handling) + - [Null chaining](#null-chaining) +- [Concurrency](#concurrency) +- [Commenting](#commenting) +- [Embedding](#embedding) + - [CLI](#cli) + - [Code embedding](#code-embedding) + +These are other helpful resources in the Mondoo docs: + +| Page | Purpose | +| ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| [MQL Resources](/mql/resources/) | Lists all of the information that MQL can retrieve from infrastructure assets and describes how to use them | +| [Get Started with cnquery](/cnquery/) | Describes how to use the cnquery shell for ad hoc MQL queries | +| [Query Your Infrastructure](/cnquery/cnquery-query) | Describes how to write queries to execute from the command line or to use in automation | +| [cnquery CLI commands](/cnquery/cli/cnquery/) | Details all commands in the cnquery command line interface | +| [Create Checks in cnspec Shell](/cnspec/cnspec-scan/) | Describes how to use the cnspec shell for ad hoc MQL assertions | +| [cnspec CLI commands](/cnspec/cli/cnspec/) | Details all commands in the cnspec command line interface | + +## Basic structure + +All MQL code is in UTF-8 to support any characters. MQL is a type-safe and compiled language that can also be executed on the fly. + +These are the basic tools of MQL: +[Resources and fields](#resources-and-fields) +[Blocks](#blocks) +[Lists](#lists) +[Basic functions](#basic-functions) + +### Resources and fields + +A _resource_ is a source of information about an asset in your infrastructure. These are examples of resources: + +- A user on the asset +- The operating system running on the asset +- An AWS S3 bucket +- A Google Cloud compute instance +- A Terraform state +- A Microsoft Entra ID domain + +Each resource has one or more _fields_, pieces of information you can request from the resource. These are examples of fields: + +- A user can have a unique ID, a group, an SSH key, and more. +- An operating system can have a name, a path, and more. +- An AWS S3 bucket can have a version, can be public or not public, have encryption information, and more. +- A Google Cloud compute instance can have deletion protection on or off, a hostname, and more. +- A Terraform state can have output values, modules, and more. +- A Microsoft Entra ID domain can have a verified or unverified status, an authentication type, and more. + +This example requests the platform of an asset. `asset` is the resource and `platform` is the field: + +```coffee +asset.platform +``` + +The output would be `redhat`, `windows`, `k8s-pod`, or similar. + +Access related resources + +```coffee +sshd.config.file +=> file("/etc/sshd/sshd_config") + +sshd.config.file.path +=> "/etc/sshd/sshd_config" +``` + +#### Child resources + +Some resources have _child resources_. For example, the `aws.ec2` resource has multiple child resources, including `aws.ec2.volume`, `aws.ec2.snapshot`, and more. + +### Blocks + +_Blocks_ are a convenient way to group and extract information. They save you the trouble of repeating multiple requests for fields from one resource. + +Instead of making individual requests like this: + +```coffee +sshd.config.file +sshd.config.params +sshd.config.ciphers +``` + +You can combine them into a block: + +```coffee +sshd.config { + file + params + ciphers +} +``` + +The output is the same. + +#### Nest blocks + +You can nest blocks: + +```coffee +sshd.config { + file { + path + permissions + } +} +``` + +#### Request all fields from a resource + +A quick way to request all fields from a resource is by using `{*}`. For example, this requests all fields from the `services` resource: + +```coffee +services { * } +``` + +This expands all _immediate_ fields of the given resource. It does not cascade to list any child resources. + +### Lists + +Some resources provide information in _lists_. For example, this requests a list of users, a list of packages, and a list of services: + +```coffee +users +packages +services +``` + +Using blocks, you can access specific field values from every item in a list. For example, this requests the `name`, `uid`, and `home` field values for each result in a list of users: + +```coffee +users { + name + uid + home +} +``` + +### Basic functions + +These help to take action on resources and fields. Some of the most important functions exist on lists and include `where`, `all`, `none`, and more. + +```coffee +users.where( uid >= 1000 ) { + name + uid +} +``` + +To learn more, read [Functions](#functions-h2). + +## Control structures + +These are the control structures that organize the flow of control in MQL: + +- [If](#if) +- [Switch](#switch) +- [Conditional operators](#conditional-operators) + +### If + +In MQL a simple `if` statement looks like this: + +```coffee +if( x > 0 ) { + return y +} +``` + +You can also chain statements with `else if` and `else`: + +```coffee +if( x > 10 ) { +return 1 +} else if( x > 0 ) { +return 0 +} else { +return -1 +} +``` + +### Switch + +You can more easily chain multiple conditionals together using `switch`: + +```coffee +switch( x ) { +case _ > 10: + return 1 +case _ > 0: + return 0 +default: + return -1 +} +``` + +MQL evaluates the cases from top to bottom until it finds a match. There is no automatic fall-through. + +### Conditional operators + +MQL supports these conditional operators: + +- `==` +- `!=` +- `>` +- `<` +- `>=` +- `<=` + +:::tip + +Use `inRange` to check if an integer, float, or dict is in a numeric range. Follow this format: + +```coffee +VALUE.inRange(MIN, MAX) +``` + +Examples: + +```coffee + +3.inRange(3, 5) + +password.length.inRange(9, 15) +``` + +::: + +Although MQL is type-safe and compiled, it’s also forgiving. You can easily express your assertions without having to fight with the type-safety. + +Here’s a simple example: + +```coffee +a = 2 +b = "2" + +a == 2 && b == 2 +``` + +Here’s a real-world example: + +```coffee +sshd.config.params["Port"] == 22 +``` + +`params` is a map of strings, so values like `Protocol` and `Port` are strings, even though they look like numbers. + +Many conditional operators allow soft comparisons: + +```coffee +"2" == 2 + +"2" == 2.0 + +"3" > 2 + +[1] == 1 +``` + +This simplifies the usage of regular expressions as well: + +```coffee +"Hello world" == /H.*o/ +``` + +To learn about conditional operators with lists, see [Arrays](#arrays). + +To learn about conditional operators with maps, see [Maps](#maps). + +## Functions {#functions-h2} + +- [Parameters](#parameters) +- [Anonymous functions](#anonymous-functions) + +### Parameters + +Many fields take unnamed parameters by default: + +```coffee +sshd.config( "/path/to/my/sshd" ) +``` + +You can also use named parameters to initialize resources.: + +```coffee +parse.json( + command('lsblk --json').stdout +) +``` + +### Anonymous functions + +You can call many functions with an embedded function. An example is `where`: + +```coffee +users.where( uid >= 1000 ) +``` + +The function takes an embedded function as an argument, which is executed against it. The fields (in the above example, `uid`) are by default bound to the calling resource (in the above example, `user`). + +You can combine these with global resources and variables: + +```coffee +users.where( name == regex.email ) +``` + +Some functions support both embedded and static values: + +```coffee +[1,2,3].contains( 3 ) +[1,2,3].contains( _ > 2 ) +``` + +### Named arguments in functions + +You can set a named argument in a function. This is useful in situations where you can only use one expression (such as with `all` or `one`). It also makes the code easier to understand, especially when nesting across multiple objects, as in this example: + +```coffee +users.all(user: + groups.contains(group: + user.uid == group.gid + ) +) +``` + +## Data + +Learn about these data types in MQL: + +- [Basic data types](#basic-data-types) +- [Maps](#maps) +- [Dicts](#dicts) +- [Empty](#empty) + +### Basic data types + +MQL's basic data types are: + +```coffee +s1 = "I am a string" +s2 = 'I am also a string' +re = /Reg.* Expression/ + +n1 = 1.0 + 2 + +n = null +b = true || false +``` + +#### Regular expressions + +For regular expressions, you can access a lot of pre-built expressions in the `regex` resource. These are a few examples: + +```coffee +"anya@forger.com" == regex.email + +"10.0.0.255" == regex.ipv4 +"fe80::1042:2c47:b787:f6bb" == regex.ipv6 + +"4832500902091714" == regex.creditCard +``` + +To learn about all the pre-build expressions, read the [`regex`](/mql/resources/core-pack/regex/) resource reference. + +#### Time + +MQL’s built-in time functions make these assertions easy: + +```coffee +time.now +# 2022-10-13 14:42:35 -0700 PDT + +time.now - time.day +# 2022-10-12 14:42:35 -0700 PDT +# subtracts a day from the current time + +time.now - 2*time.hour +# 2022-10-13 11:42:35 -0700 PDT +# subtracts 2 hours from the current time + +parse.date("2022-10-12T14:42:35Z") +# 2022-10-12 14:42:35 +0000 UTC +# uses RFC3339 layout by default +``` + +:::tip + +Use `inRange` to check if a date and time is in a range. Follow this format: + +```coffee +DATE.inRange(MIN, MAX) +``` + +Example: + +```coffee +time.inRange(yesterday, tomorrow) +``` + +::: + +MQL also can parse durations: + +```coffee +parse.duration("3days") + +parse.duration("1y") +``` + +Although the parser is very lenient, for best results, use: + +``` +30s = 30 seconds +1m = 1 minute +3h = 3 hours +90d = 90 days +5y = 5 years +``` + +#### Empty + +The `empty` data type saves you the trouble of checking for different kinds of empty values, such as: + +- `[]` +- `null` +- `''` +- `{}` + +For example, this query finds any type of empty value: + +```coffee +users.list == empty +``` + +#### Semantic versioning + +Use the `semver` type for semantic versioning. Create a semver using the `semver` keyword, which takes a string as an argument: + +```coffee +semver('3.12.1') +``` + +You can compare a semver with another semver or with a string: + +```coffee +semver('1.2.3') < semver('2.3') + +semver('1.10') >= '1.2' +``` + +### Arrays + +Many resources contain lists of entries, like this example: + +```coffee +users { + name + uid +} +``` + +You can filter these lists using the `where` clause: + +```coffee +users.where( uid >= 1000 ) { + name + uid +} +``` + +#### Array assertions + +To avoid unnecessary loops, MQL provides some keywords that make assertions on lists a lot simpler. For example: + +```coffee +users.all( uid >= 0 ) +``` + +Failures to these print the affected elements: + +```coffee +> users.all( uid > 0 ) +[failed] users.all() + actual: [ + 0: user id = user/0/root + ] +``` + +The available assertions for all lists are: + +```coffee +users.all( name != "anya" ) <= make sure no user is called anya +users.one( name == "anya" ) <= one user must exist, but no more than one +users.none( name == "anya" ) <= no user exists with the name anya +users.contains( uid >= 1000 ) <= contains one or more users with uid >= 1000 +``` + +For lists of strings, you can use the `in` assertion, which is the inverse of `contains`: + +```coffee +"anya".in(["abel","amos","anya"]) +``` + +An ideal use for `in` is to combine it with [properties](/cnspec/cnspec-policies/write/properties/). For example, if you define a property named `allowedCiphers`, you can assert that a configured cipher is in that list: + +```coffee +sshd.config.ciphers.in( props.allowedCiphers ) +``` + +Another useful assertion for lists of strings is `containsAll`: + +```coffee +["abel","amos","anya"].containsAll(["abel","amos"]) +``` + +#### Mapping field + +With block extraction, MQL provides arrays of maps: + +```coffee +> users { name } +[ + 0: { name: "root" } + + ... + +] +``` + +You can map these values into a simple list: + +```coffee +> users.map(name) +[ + 0: "root", + + ... + +] +``` + +This makes many queries and assertions easier: + +```coffee +users.map(name).contains( "anya" ) +``` + +### Maps + +_Maps_ are key-value structures in which the key is a string and the value can be any type. You can access individual fields using `[]` or get all `keys` and `values` + +These are simple examples: + +```coffee +m = {"a": 1, "b": 2} + +> m.b +# 2 + +> m.keys +# ["a", "b"] + +> m.values +# [1, 2] +``` + +This is a real-life example: + +``` +> os.env["SHELL"] +"/usr/bin/zsh" +``` + +#### Map assertions + +The available assertions for maps are: + +```coffee +{'a': 1, 'b': 2}.contains( key == 'b' ) +{'a': 1, 'b': 2}.all( value > 0 ) +{'a': 1, 'b': 2}.one( value != 1 ) +{'a': 1, 'b': 2}.none( key == /d-f/ ) +``` + +### Dicts + +_Dicts_ are similar to maps but have one key difference: Maps are statically typed ahead of time; they have known value types. + +That’s not the case when you process unknown data such as JSON. This presents a challenge, and the solution is `dict`: + +```coffee +> parse.json("my.json") +parse.json.params: { + 1: 1.000000 + 1.0: 1.000000 + _: null + date: "2016-01-28T23:02:24Z" + dict: { + ee: 3.000000 + ej: 4.000000 + ek: 5.000000 + } + + ... + +``` + +As you can see, there can be mixed values for all supported base types. + +All other operations work as expected: + +```coffee +> parse.json("my.json").params.keys +parse.json.params.keys: [ + 0: "int-array" + 1: "f" + 2: "string-array" + 3: "hello" + + +> parse.json("my.json").params.value +parse.json.params.values: [ + 0: null + 1: true + 2: 1.000000 + 3: "hello" + +> parse.json("my.json").params["f"][0] +parse.json.params[f][0]: { + ff: 3.000000 +} + +> parse.json("my.json"). + params["f"]. + all( _.keys.contains("ff") ) +[ok] value: true +``` + +#### `recurse` helper for dicts + +The `recurse` helper makes it easy to extract data from a dict structure made up of mixed value types. + +For example, suppose you need to retrieve all users from this JSON data structure: + +```json +{ + "users": [{ "name": "bob" }], + "owners": { + "admins": [{ "name": "joy", "isOwner": true }] + } +} +``` + +Because of the varying data types, finding users in this structure is difficult with traditional mechanisms. You need to understand the data structure and know where to search. + +`recurse` eliminates that difficulty: + +```coffee +jdata.recurse( name != empty ) +``` + +```coffee +[ + 0: { + name: "bob" + } + 1: { + isOwner: true + name: "joy" + } +] +``` + +You can then map the user names: + +```coffee +jdata.recurse( name != empty ).map(name) +``` + +```coffee +[ + 0: "bob" + 1: "joy" +] +``` + +### Nested data + +JSON, Terraform, and Kubernetes artifacts can include nested structures that make data a challenge to access. To make these easier to query, MQL supports simple accessors: + +```coffee +tfblock { + attributes.account_id.value +} +``` + +## Error handling + +For values that cannot be accessed, MQL provides errors: + +```coffee +> file("/etc/shadow").content +[failed] file.content + error: open /etc/shadow: permission denied +``` + +#### Null chaining + +In general, `null` values are chained across their access: + +```coffee +> sshd.config.params["NONE"].downcase == null +[ok] value: _ +``` + +## Concurrency + +MQL supports concurrent execution by default. All code that you write is executed in the order of its necessary I/O input. + +For example: + +```coffee +hosts = [ + tls("mondoo.com"), + tls("mondoo.io"), + ... +] + +hosts.all( + ciphers + .none( /cbc/i ) +) +``` + +This call checks all TLS ciphers on all the hosts that were previously defined. Such calls can take a while to execute if done serially. However, MQL looks for the entry points where data is being processed and executes those in parallel. In the example above, the TLS requests to all hosts will run in parallel and aggregate. + +It doesn’t matter if the data is retrieved from an API, file, system command or other call; MQL always executes calls in parallel. + +You don't have to configure or think about concurrency or parallel value assignment in MQL; concurrency is automatic on all available streams. + +## Commenting + +MQL supports `#` commenting, which works best with YAML. + +```coffee +# I am a comment +sshd.config.params +``` + +MQL also supports `//`. + +## Embedding + +It’s easy to embed MQL in your code. + +### CLI + +A quick way to embed MQL is to execute MQL in the CLI and embed the results in other scripts: + +```bash +> cnquery run local --json \ + -c "processes.where(command == /long test/).map(pid)" | ... +``` + +### Code embedding + +You can embed the MQL execution engine as a dependency. This example embeds in Go: + +```golang +package mqldiscovery + +import ( + "go.mondoo.com/cnquery" + "go.mondoo.com/cnquery/llx" + "go.mondoo.com/cnquery/motor" + aws_provider "go.mondoo.com/cnquery/motor/providers/aws" + "go.mondoo.com/cnquery/mql" + "go.mondoo.com/cnquery/resources" + resource_pack "go.mondoo.com/cnquery/resources/packs/aws" +) + +func New(provider *aws_provider.Provider) (*MqlDiscovery, error) { + m, err := motor.New(provider) + if err != nil { + return nil, err + } + rt := resources.NewRuntime(resource_pack.Registry, m) + return &MqlDiscovery{rt: rt}, nil +} + +type MqlDiscovery struct { + rt *resources.Runtime +} + +func (md *MqlDiscovery) GetResourceCount(query string) int32 { + mqlExecutor := mql.New(md.rt, cnquery.DefaultFeatures) + value, err := mqlExecutor.Exec(query, map[string]*llx.Primitive{}) + if err != nil { + return 0 + } + + a := 0 + d, _ := mapstructure.NewDecoder(&mapstructure.DecoderConfig{ + Result: &a, + }) + d.Decode(value.Value) + return int32(a) +} + +func (md *MqlDiscovery) GetRegionsList() []string { + mqlExecutor := mql.New(md.rt, cnquery.DefaultFeatures) + value, err := mqlExecutor.Exec("aws.regions", map[string]*llx.Primitive{}) + if err != nil { + return []string{} + } + + a := []string{} + d, _ := mapstructure.NewDecoder(&mapstructure.DecoderConfig{ + Result: &a, + }) + d.Decode(value.Value) + return a +} + +func (md *MqlDiscovery) Close() { + if md.rt != nil && md.rt.Motor != nil { + md.rt.Motor.Close() + } +} + +func (md *MqlDiscovery) RunQuery(query string) interface{} { + mqlExecutor := mql.New(md.rt, cnquery.DefaultFeatures) + value, err := mqlExecutor.Exec(query, map[string]*llx.Primitive{}) + if err != nil { + return nil + } + + var a interface{} + d, _ := mapstructure.NewDecoder(&mapstructure.DecoderConfig{ + Result: &a, + }) + d.Decode(value.Value) + return a +} +``` + +--- diff --git a/docs/mql/resources/README.md b/docs/mql/resources/README.md new file mode 100644 index 000000000..8f380d9f2 --- /dev/null +++ b/docs/mql/resources/README.md @@ -0,0 +1,63 @@ +--- +title: MQL Reference +sidebar_label: Overview +sidebar_position: 3 +displayed_sidebar: MQL +id: mql.reference +description: Learn about all of the available MQL resources and how you can use them to query your infrastructure and to create security policies. +image: /img/featured_img/mondoo-feature.jpg +--- + +**MQL** is a lightweight, ultra-fast query language purpose-built for: + +- Searching and filtering infrastructure configuration data +- Making checks about infrastructure configuration +- Building security policies + +For an introduction to MQL, read the [MQL intro slide deck](https://mondoohq.github.io/mql-intro/index.html) + +To learn how to create queries, checks, and policies in MQL, read [Write Effective MQL](/mql/mql.write/). + +## Resources + +A _resource_ is a source of information about an asset in your infrastructure, such as a file, a container image, or an AWS EC2 instance. We've organized MQL resources into packs to make it easy to find what you need. + +[**Core resource pack:**](./core-pack) +The core pack is essential for queries and checks against many different systems. Use it to retrieve information about users, files, packages, ports, and much more. + +[**Operating system resource pack:**](./os-pack) +Some of the resources in the operating system pack span different operating systems, while others are specific to a single operating system. + +[**Network resource pack:**](./network-pack) +The network pack includes resources for querying assets like host names and checking certificate contents. + +**Platform-specific resource packs:** +These specialized packs let you deep-dive into attributes unique to the platforms: + +- [Amazon Web Services (AWS) resource pack](./aws-pack) +- [Atlassian resource pack](./atlassian-pack) +- [Arista resource pack](./arista-pack) +- [Azure resource pack](./azure-pack) +- [Equinix Metal resource pack](./equinix-pack) +- [GitHub resource pack](./github-pack) +- [GitLab resource pack](./gitlab-pack) +- [Google Cloud Platform (GCP) resource pack](./gcp-pack) +- [Google Workspace resource pack](./google-workspace-pack/) +- [IPMI resource pack](./ipmi-pack) +- [Kubernetes resource pack](./k8s-pack) +- [Microsoft 365 resource pack](./ms365-pack) +- [Okta resource pack](./okta-pack) +- [OPC UA resource pack](./opcua-pack) +- [Oracle Cloud Infrastructure (OCI) resource pack](./oci-pack) +- [Slack resource pack](./slack-pack) +- [Terraform IaC resource pack](./terraform-pack) +- [VMware Cloud Director resource pack](./vcd-pack/) +- [VMware vSphere resource pack](./vsphere-pack) + +## Learn more + +- To learn about querying your systems with MQL, read the [cnquery docs](/cnquery/home/). + +- To learn how to create queries, checks, and policies in MQL, read [Write Effective MQL](/mql/mql.write/). + +--- diff --git a/docs/mql/resources/_category_.json b/docs/mql/resources/_category_.json new file mode 100644 index 000000000..7143dac3f --- /dev/null +++ b/docs/mql/resources/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Resources" +} diff --git a/docs/mql/resources/arista-pack/README.md b/docs/mql/resources/arista-pack/README.md new file mode 100644 index 000000000..9c8375af8 --- /dev/null +++ b/docs/mql/resources/arista-pack/README.md @@ -0,0 +1,26 @@ +--- +title: Arista EOS Resource Pack - MQL Resources +id: arista.eos.pack +sidebar_label: Arista EOS Resource Pack +displayed_sidebar: MQL +description: The Arista EOS resource pack lets you use MQL to query and assess the security of your Arista EOS network devices. +--- + +# Mondoo Arista EOS Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ----------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| [arista.eos](arista.eos.md) | Arista EOS resource | +| [arista.eos.interface](arista.eos.interface.md) | Arista EOS interface resource | +| [arista.eos.ipInterface](arista.eos.ipinterface.md) | Arista EOS IP interface | +| [arista.eos.ntpSetting](arista.eos.ntpsetting.md) | Arista EOS NTP information resource | +| [arista.eos.role](arista.eos.role.md) | Arista EOS role resource | +| [arista.eos.runningConfig](arista.eos.runningconfig.md) | Arista EOS system’s operating configuration | +| [arista.eos.runningConfig.section](arista.eos.runningconfig.section.md) | Arista EOS system’s operating configuration for a specific section | +| [arista.eos.snmpSetting](arista.eos.snmpsetting.md) | Arista EOS SNMP information resource | +| [arista.eos.spt.mstInterface](arista.eos.spt.mstinterface.md) | Multiple Spanning Tree Protocol (MSTP) information for a specified interface | +| [arista.eos.stp](arista.eos.stp.md) | Arista Spanning Tree Protocol (STP) resource | +| [arista.eos.stp.mst](arista.eos.stp.mst.md) | Arista Multiple Spanning Tree Protocol (MSTP) resource instance | +| [arista.eos.user](arista.eos.user.md) | User on the local Arista EOS system | diff --git a/docs/mql/resources/arista-pack/arista.eos.interface.md b/docs/mql/resources/arista-pack/arista.eos.interface.md new file mode 100644 index 000000000..a7c5b2763 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.interface.md @@ -0,0 +1,39 @@ +--- +title: arista.eos.interface +id: arista.eos.interface +sidebar_label: arista.eos.interface +displayed_sidebar: MQL +description: Arista EOS interface resource +--- + +# arista.eos.interface + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS interface resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | -------------- | -------------------------------------------------------------------------------------- | +| name | string | Interface name, link status, vlan, duplex, speed, and type of the specified interfaces | +| bandwidth | int | Interface bandwidth | +| burnedInAddress | string | 'burned in' address of the interface | +| description | string | Interface description | +| forwardingModel | string | Forwarding mode | +| hardware | string | Hardware Name | +| interfaceAddress | []dict | Interface address information | +| interfaceCounters | dict | Traffic count information | +| interfaceMembership | string | Interface membership | +| interfaceStatistics | dict | Interface statistics | +| interfaceStatus | string | Interface status | +| l2Mtu | int | Layer 2 MTU | +| lastStatusChangeTimestamp | int | Last interface change timestamp | +| lineProtocolStatus | string | Interface protocol status | +| mtu | int | MTU | +| physicalAddress | string | MAC address of the interface | +| status | dict | Interface link status, vlan, duplex, speed, and type | diff --git a/docs/mql/resources/arista-pack/arista.eos.ipinterface.md b/docs/mql/resources/arista-pack/arista.eos.ipinterface.md new file mode 100644 index 000000000..0c81250c3 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.ipinterface.md @@ -0,0 +1,25 @@ +--- +title: arista.eos.ipInterface +id: arista.eos.ipInterface +sidebar_label: arista.eos.ipInterface +displayed_sidebar: MQL +description: Arista EOS IP interface +--- + +# arista.eos.ipInterface + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS IP interface + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | -------------- | +| name | string | Interface Name | +| address | string | IP Address | +| mtu | string | MTU | diff --git a/docs/mql/resources/arista-pack/arista.eos.md b/docs/mql/resources/arista-pack/arista.eos.md new file mode 100644 index 000000000..d993cd83e --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.md @@ -0,0 +1,64 @@ +--- +title: arista.eos +id: arista.eos +sidebar_label: arista.eos +displayed_sidebar: MQL +description: Arista EOS resource +--- + +# arista.eos + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------------------------------------------------------------- | ----------------------------------- | +| systemConfig | map[string]string | EOS system configuration | +| ipInterfaces | [][arista.eos.ipInterface](arista.eos.ipinterface.md) | IP interfaces | +| interfaces | [][arista.eos.interface](arista.eos.interface.md) | Details related to interfaces | +| version | dict | Software and hardware versions | +| hostname | string | The system hostname | +| fqdn | string | The systems fqdn | +| users | [][arista.eos.user](arista.eos.user.md) | Local user configuration | +| roles | [][arista.eos.role](arista.eos.role.md) | All user-defined and built-in roles | +| snmp | [arista.eos.snmpSetting](arista.eos.snmpsetting.md) | Details on SNMP operation | +| ntp | [arista.eos.ntpSetting](arista.eos.ntpsetting.md) | Show NTP status | + +**Examples** + +Arista EOS Version + +```coffee +arista.eos.version +``` + +Verify that Arista EOS Version is 18.x + +```coffee +arista.eos.version['version'] == /18\./ +``` + +Display EOS interfaces + +```coffee +arista.eos.interfaces { name mtu bandwidth status } +``` + +Display all connected EOS interfaces + +```coffee +arista.eos.interfaces.where ( status['linkStatus'] == "connected") { name mtu bandwidth status } +``` + +EOS Hostname + +```coffee +arista.eos.hostname +``` diff --git a/docs/mql/resources/arista-pack/arista.eos.ntpsetting.md b/docs/mql/resources/arista-pack/arista.eos.ntpsetting.md new file mode 100644 index 000000000..281eb9ba2 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.ntpsetting.md @@ -0,0 +1,23 @@ +--- +title: arista.eos.ntpSetting +id: arista.eos.ntpSetting +sidebar_label: arista.eos.ntpSetting +displayed_sidebar: MQL +description: Arista EOS NTP information resource +--- + +# arista.eos.ntpSetting + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS NTP information resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | --------------------------- | +| status | string | Status of NTP on the switch | diff --git a/docs/mql/resources/arista-pack/arista.eos.role.md b/docs/mql/resources/arista-pack/arista.eos.role.md new file mode 100644 index 000000000..a9eee8975 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.role.md @@ -0,0 +1,25 @@ +--- +title: arista.eos.role +id: arista.eos.role +sidebar_label: arista.eos.role +displayed_sidebar: MQL +description: Arista EOS role resource +--- + +# arista.eos.role + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS role resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | -------------- | --------------------------------------------------------- | +| name | string | Name of role | +| default | bool | Flag for default role | +| rules | []dict | List of rules that restricts access to specified commands | diff --git a/docs/mql/resources/arista-pack/arista.eos.runningconfig.md b/docs/mql/resources/arista-pack/arista.eos.runningconfig.md new file mode 100644 index 000000000..94befa780 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.runningconfig.md @@ -0,0 +1,23 @@ +--- +title: arista.eos.runningConfig +id: arista.eos.runningConfig +sidebar_label: arista.eos.runningConfig +displayed_sidebar: MQL +description: Arista EOS system’s operating configuration +--- + +# arista.eos.runningConfig + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS system’s operating configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | ------------------ | +| content | string | EOS running-config | diff --git a/docs/mql/resources/arista-pack/arista.eos.runningconfig.section.md b/docs/mql/resources/arista-pack/arista.eos.runningconfig.section.md new file mode 100644 index 000000000..6518c03fd --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.runningconfig.section.md @@ -0,0 +1,24 @@ +--- +title: arista.eos.runningConfig.section +id: arista.eos.runningConfig.section +sidebar_label: arista.eos.runningConfig.section +displayed_sidebar: MQL +description: Arista EOS system’s operating configuration for a specific section +--- + +# arista.eos.runningConfig.section + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS system’s operating configuration for a specific section + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | ------------------------------- | +| name | string | Section name | +| content | string | Section from EOS running-config | diff --git a/docs/mql/resources/arista-pack/arista.eos.snmpsetting.md b/docs/mql/resources/arista-pack/arista.eos.snmpsetting.md new file mode 100644 index 000000000..dbe66ae3d --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.snmpsetting.md @@ -0,0 +1,24 @@ +--- +title: arista.eos.snmpSetting +id: arista.eos.snmpSetting +sidebar_label: arista.eos.snmpSetting +displayed_sidebar: MQL +description: Arista EOS SNMP information resource +--- + +# arista.eos.snmpSetting + +**Supported platform** + +- arista-eos + +**Description** + +Arista EOS SNMP information resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | -------------- | -------------------------------- | +| enabled | bool | SNMP logging status | +| notifications | []dict | SNMP trap generation information | diff --git a/docs/mql/resources/arista-pack/arista.eos.spt.mstinterface.md b/docs/mql/resources/arista-pack/arista.eos.spt.mstinterface.md new file mode 100644 index 000000000..15167db32 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.spt.mstinterface.md @@ -0,0 +1,47 @@ +--- +title: arista.eos.spt.mstInterface +id: arista.eos.spt.mstInterface +sidebar_label: arista.eos.spt.mstInterface +displayed_sidebar: MQL +description: Multiple Spanning Tree Protocol (MSTP) information for a specified interface +--- + +# arista.eos.spt.mstInterface + +**Supported platform** + +- arista-eos + +**Description** + +Multiple Spanning Tree Protocol (MSTP) information for a specified interface + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------ | ----------------------------------------------------------------------------------------------- | +| id | string | | +| mstInstanceId | string | MST instance number | +| name | string | Name of STP instance | +| priority | int | Interface priority | +| linkType | string | Link type | +| state | string | Interface state | +| cost | int | Cost value for the interface | +| role | string | Port role | +| inconsistentFeatures | dict | Interface inconsistent features | +| portNumber | int | Port Number | +| isEdgePort | bool | Flag if it is an edge port | +| detail | dict | Details about Designated root, Designated bridge and Designated port | +| boundaryType | string | Interface Boundary Type | +| counters | dict | Number of BPDU transactions on this interface | +| features | dict | Interface features: BPDU filter, specifies the BPDU reception rate & link type of the interface | + +**Examples** + +Verify the Spanning-Tree Version + +```coffee +arista.eos.stp.mstInstances { + protocol == "mstp" +} +``` diff --git a/docs/mql/resources/arista-pack/arista.eos.stp.md b/docs/mql/resources/arista-pack/arista.eos.stp.md new file mode 100644 index 000000000..a9f65e52a --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.stp.md @@ -0,0 +1,23 @@ +--- +title: arista.eos.stp +id: arista.eos.stp +sidebar_label: arista.eos.stp +displayed_sidebar: MQL +description: Arista Spanning Tree Protocol (STP) resource +--- + +# arista.eos.stp + +**Supported platform** + +- arista-eos + +**Description** + +Arista Spanning Tree Protocol (STP) resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------------------- | ----------------------------------------------- | +| mstInstances | [][arista.eos.stp.mst](arista.eos.stp.mst.md) | Multiple Spanning Tree Protocol (MST) instances | diff --git a/docs/mql/resources/arista-pack/arista.eos.stp.mst.md b/docs/mql/resources/arista-pack/arista.eos.stp.mst.md new file mode 100644 index 000000000..8b2f67c54 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.stp.mst.md @@ -0,0 +1,29 @@ +--- +title: arista.eos.stp.mst +id: arista.eos.stp.mst +sidebar_label: arista.eos.stp.mst +displayed_sidebar: MQL +description: Arista Multiple Spanning Tree Protocol (MSTP) resource instance +--- + +# arista.eos.stp.mst + +**Supported platform** + +- arista-eos + +**Description** + +Arista Multiple Spanning Tree Protocol (MSTP) resource instance + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------------------------------------------------------------- | ---------------------------------------------------------- | +| instanceId | string | MST instance number | +| name | string | MST instance name | +| protocol | string | SPT protocol | +| bridge | dict | Detailed bridge information (Forward Delay, MAC, Priority) | +| rootBridge | dict | Root bridge information | +| regionalRootBridge | dict | Regional root bridge information | +| interfaces | [][arista.eos.spt.mstInterface](arista.eos.spt.mstinterface.md) | interfaces on the specified MST instances | diff --git a/docs/mql/resources/arista-pack/arista.eos.user.md b/docs/mql/resources/arista-pack/arista.eos.user.md new file mode 100644 index 000000000..4fd3f4419 --- /dev/null +++ b/docs/mql/resources/arista-pack/arista.eos.user.md @@ -0,0 +1,29 @@ +--- +title: arista.eos.user +id: arista.eos.user +sidebar_label: arista.eos.user +displayed_sidebar: MQL +description: User on the local Arista EOS system +--- + +# arista.eos.user + +**Supported platform** + +- arista-eos + +**Description** + +User on the local Arista EOS system + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ---------------------------------------------------------------- | +| name | string | The name of the user | +| privilege | string | Indicates if the user is able to authenticate without a password | +| role | string | User's assigned role | +| nopassword | string | If the user is not password protected | +| format | string | Specifies how the secret is encoded | +| secret | string | The secret (password) assigned to this user | +| sshkey | string | User's sshkey | diff --git a/docs/mql/resources/atlassian-pack/README.md b/docs/mql/resources/atlassian-pack/README.md new file mode 100644 index 000000000..b7c3535f9 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/README.md @@ -0,0 +1,31 @@ +--- +title: Atlassian Resource Pack - MQL Resources +id: atlassian.pack +sidebar_label: Atlassian Resource Pack +displayed_sidebar: MQL +description: The Atlassian resource pack lets you use MQL to query and assess the security of your Atlassian services. +--- + +# Mondoo Atlassian Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| --------------------------------------------------------------------------------------- | ----------------------------------------- | +| [atlassian.admin.organization](atlassian.admin.organization.md) | Organization | +| [atlassian.admin.organization.domain](atlassian.admin.organization.domain.md) | Domains | +| [atlassian.admin.organization.managedUser](atlassian.admin.organization.manageduser.md) | Managed users | +| [atlassian.admin.organization.policy](atlassian.admin.organization.policy.md) | Policies (except authentication policies) | +| [atlassian.confluence](atlassian.confluence.md) | Confluence | +| [atlassian.confluence.user](atlassian.confluence.user.md) | Confluence user | +| [atlassian.jira](atlassian.jira.md) | Jira | +| [atlassian.jira.applicationRole](atlassian.jira.applicationrole.md) | Jira application role | +| [atlassian.jira.group](atlassian.jira.group.md) | Jira group | +| [atlassian.jira.issue](atlassian.jira.issue.md) | Issue | +| [atlassian.jira.project](atlassian.jira.project.md) | Jira project | +| [atlassian.jira.project.property](atlassian.jira.project.property.md) | Jira project property | +| [atlassian.jira.serverInfo](atlassian.jira.serverinfo.md) | Jira server info | +| [atlassian.jira.user](atlassian.jira.user.md) | Jira user | +| [atlassian.scim](atlassian.scim.md) | Cross-domain Identity Management (SCIM) | +| [atlassian.scim.group](atlassian.scim.group.md) | SCIM group | +| [atlassian.scim.user](atlassian.scim.user.md) | SCIM user | diff --git a/docs/mql/resources/atlassian-pack/atlassian.admin.organization.domain.md b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.domain.md new file mode 100644 index 000000000..cc424528a --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.domain.md @@ -0,0 +1,21 @@ +--- +title: atlassian.admin.organization.domain +id: atlassian.admin.organization.domain +sidebar_label: atlassian.admin.organization.domain +displayed_sidebar: MQL +description: Domains +--- + +# atlassian.admin.organization.domain + +**Description** + +Domains + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ----------- | +| id | string | Domain ID | +| name | string | Name | +| type | string | Type | diff --git a/docs/mql/resources/atlassian-pack/atlassian.admin.organization.manageduser.md b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.manageduser.md new file mode 100644 index 000000000..7ca0a56e7 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.manageduser.md @@ -0,0 +1,25 @@ +--- +title: atlassian.admin.organization.managedUser +id: atlassian.admin.organization.managedUser +sidebar_label: atlassian.admin.organization.managedUser +displayed_sidebar: MQL +description: Managed users +--- + +# atlassian.admin.organization.managedUser + +**Description** + +Managed users + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | -------------- | -------------- | +| id | string | ID | +| name | string | Name | +| type | string | Type | +| email | string | Email | +| status | string | Status | +| lastActive | time | Last active | +| productAccess | []dict | Product access | diff --git a/docs/mql/resources/atlassian-pack/atlassian.admin.organization.md b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.md new file mode 100644 index 000000000..9ef8a92db --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.md @@ -0,0 +1,24 @@ +--- +title: atlassian.admin.organization +id: atlassian.admin.organization +sidebar_label: atlassian.admin.organization +displayed_sidebar: MQL +description: Organization +--- + +# atlassian.admin.organization + +**Description** + +Organization + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------------------------------------------------------------------------------------------------- | ----------------- | +| id | string | Organization ID | +| name | string | Name | +| type | string | Organization type | +| policies | [][atlassian.admin.organization.policy](atlassian.admin.organization.policy.md) | Policies | +| domains | [][atlassian.admin.organization.domain](atlassian.admin.organization.domain.md) | Domains | +| managedUsers | [][atlassian.admin.organization.managedUser](atlassian.admin.organization.manageduser.md) | Managed users | diff --git a/docs/mql/resources/atlassian-pack/atlassian.admin.organization.policy.md b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.policy.md new file mode 100644 index 000000000..4a98f4f1a --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.admin.organization.policy.md @@ -0,0 +1,23 @@ +--- +title: atlassian.admin.organization.policy +id: atlassian.admin.organization.policy +sidebar_label: atlassian.admin.organization.policy +displayed_sidebar: MQL +description: Policies (except authentication policies) +--- + +# atlassian.admin.organization.policy + +**Description** + +Policies (except authentication policies) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ----------------------------- | +| id | string | Policy ID | +| type | string | Object type (always "policy") | +| name | string | Policy name | +| policyType | string | Type of policy | +| status | string | Status | diff --git a/docs/mql/resources/atlassian-pack/atlassian.confluence.md b/docs/mql/resources/atlassian-pack/atlassian.confluence.md new file mode 100644 index 000000000..b1fca5df7 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.confluence.md @@ -0,0 +1,19 @@ +--- +title: atlassian.confluence +id: atlassian.confluence +sidebar_label: atlassian.confluence +displayed_sidebar: MQL +description: Confluence +--- + +# atlassian.confluence + +**Description** + +Confluence + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | ------------------------------------------------------------------- | ---------------- | +| users | [][atlassian.confluence.user](atlassian.confluence.user.md) | Confluence users | diff --git a/docs/mql/resources/atlassian-pack/atlassian.confluence.user.md b/docs/mql/resources/atlassian-pack/atlassian.confluence.user.md new file mode 100644 index 000000000..f7e0721e4 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.confluence.user.md @@ -0,0 +1,21 @@ +--- +title: atlassian.confluence.user +id: atlassian.confluence.user +sidebar_label: atlassian.confluence.user +displayed_sidebar: MQL +description: Confluence user +--- + +# atlassian.confluence.user + +**Description** + +Confluence user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ------------ | +| id | string | Account ID | +| name | string | Account name | +| type | string | Account type | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.applicationrole.md b/docs/mql/resources/atlassian-pack/atlassian.jira.applicationrole.md new file mode 100644 index 000000000..a9bb29709 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.applicationrole.md @@ -0,0 +1,20 @@ +--- +title: atlassian.jira.applicationRole +id: atlassian.jira.applicationRole +sidebar_label: atlassian.jira.applicationRole +displayed_sidebar: MQL +description: Jira application role +--- + +# atlassian.jira.applicationRole + +**Description** + +Jira application role + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ----------- | +| id | string | Role ID | +| name | string | Role name | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.group.md b/docs/mql/resources/atlassian-pack/atlassian.jira.group.md new file mode 100644 index 000000000..fe67a3189 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.group.md @@ -0,0 +1,20 @@ +--- +title: atlassian.jira.group +id: atlassian.jira.group +sidebar_label: atlassian.jira.group +displayed_sidebar: MQL +description: Jira group +--- + +# atlassian.jira.group + +**Description** + +Jira group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ----------- | +| id | string | Group ID | +| name | string | Group name | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.issue.md b/docs/mql/resources/atlassian-pack/atlassian.jira.issue.md new file mode 100644 index 000000000..55780029a --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.issue.md @@ -0,0 +1,22 @@ +--- +title: atlassian.jira.issue +id: atlassian.jira.issue +sidebar_label: atlassian.jira.issue +displayed_sidebar: MQL +description: Issue +--- + +# atlassian.jira.issue + +**Description** + +Issue + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ----------- | +| id | string | Issue ID | +| project | string | Project | +| status | string | Status | +| description | string | Description | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.md b/docs/mql/resources/atlassian-pack/atlassian.jira.md new file mode 100644 index 000000000..cac765edd --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.md @@ -0,0 +1,23 @@ +--- +title: atlassian.jira +id: atlassian.jira +sidebar_label: atlassian.jira +displayed_sidebar: MQL +description: Jira +--- + +# atlassian.jira + +**Description** + +Jira + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------------------------------------------------------------- | ---------------- | +| users | [][atlassian.jira.user](atlassian.jira.user.md) | Jira users | +| projects | [][atlassian.jira.project](atlassian.jira.project.md) | Jira projects | +| issues | [][atlassian.jira.issue](atlassian.jira.issue.md) | Jira groups | +| groups | [][atlassian.jira.group](atlassian.jira.group.md) | Jira groups | +| serverInfos | [atlassian.jira.serverInfo](atlassian.jira.serverinfo.md) | Jira server info | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.project.md b/docs/mql/resources/atlassian-pack/atlassian.jira.project.md new file mode 100644 index 000000000..2d1f27fd1 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.project.md @@ -0,0 +1,28 @@ +--- +title: atlassian.jira.project +id: atlassian.jira.project +sidebar_label: atlassian.jira.project +displayed_sidebar: MQL +description: Jira project +--- + +# atlassian.jira.project + +**Description** + +Jira project + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------------------------------------------- | ----------------------------------- | +| id | string | Project ID | +| name | string | Project name | +| uuid | string | UUID | +| key | string | Key | +| url | string | URL | +| email | string | Email | +| private | bool | Whether the group is private | +| deleted | bool | Whether the group has been deleted | +| archived | bool | Whether the group has been archived | +| properties | [][atlassian.jira.project.property](atlassian.jira.project.property.md) | Properties | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.project.property.md b/docs/mql/resources/atlassian-pack/atlassian.jira.project.property.md new file mode 100644 index 000000000..2790359e2 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.project.property.md @@ -0,0 +1,19 @@ +--- +title: atlassian.jira.project.property +id: atlassian.jira.project.property +sidebar_label: atlassian.jira.project.property +displayed_sidebar: MQL +description: Jira project property +--- + +# atlassian.jira.project.property + +**Description** + +Jira project property + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --- | ------ | ------------ | +| id | string | Property key | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.serverinfo.md b/docs/mql/resources/atlassian-pack/atlassian.jira.serverinfo.md new file mode 100644 index 000000000..a8d65975d --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.serverinfo.md @@ -0,0 +1,22 @@ +--- +title: atlassian.jira.serverInfo +id: atlassian.jira.serverInfo +sidebar_label: atlassian.jira.serverInfo +displayed_sidebar: MQL +description: Jira server info +--- + +# atlassian.jira.serverInfo + +**Description** + +Jira server info + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | --------------- | +| baseUrl | string | BaseUrl | +| buildNumber | int | Build number | +| serverTitle | string | Server title | +| deploymentType | string | Deployment type | diff --git a/docs/mql/resources/atlassian-pack/atlassian.jira.user.md b/docs/mql/resources/atlassian-pack/atlassian.jira.user.md new file mode 100644 index 000000000..058793647 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.jira.user.md @@ -0,0 +1,24 @@ +--- +title: atlassian.jira.user +id: atlassian.jira.user +sidebar_label: atlassian.jira.user +displayed_sidebar: MQL +description: Jira user +--- + +# atlassian.jira.user + +**Description** + +Jira user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------------------------------------------------------- | ------------------- | +| id | string | Account ID | +| name | string | Name | +| type | string | Account type | +| picture | string | Picture of the user | +| groups | [][atlassian.jira.group](atlassian.jira.group.md) | Groups | +| applicationRoles | [][atlassian.jira.applicationRole](atlassian.jira.applicationrole.md) | Roles | diff --git a/docs/mql/resources/atlassian-pack/atlassian.scim.group.md b/docs/mql/resources/atlassian-pack/atlassian.scim.group.md new file mode 100644 index 000000000..6b098c5cb --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.scim.group.md @@ -0,0 +1,20 @@ +--- +title: atlassian.scim.group +id: atlassian.scim.group +sidebar_label: atlassian.scim.group +displayed_sidebar: MQL +description: SCIM group +--- + +# atlassian.scim.group + +**Description** + +SCIM group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ----------- | +| id | string | Group ID | +| name | string | Group name | diff --git a/docs/mql/resources/atlassian-pack/atlassian.scim.md b/docs/mql/resources/atlassian-pack/atlassian.scim.md new file mode 100644 index 000000000..41226c5cf --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.scim.md @@ -0,0 +1,20 @@ +--- +title: atlassian.scim +id: atlassian.scim +sidebar_label: atlassian.scim +displayed_sidebar: MQL +description: Cross-domain Identity Management (SCIM) +--- + +# atlassian.scim + +**Description** + +Cross-domain Identity Management (SCIM) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | --------------------------------------------------------- | ----------- | +| users | [][atlassian.scim.user](atlassian.scim.user.md) | SCIM users | +| groups | [][atlassian.scim.group](atlassian.scim.group.md) | SCIM groups | diff --git a/docs/mql/resources/atlassian-pack/atlassian.scim.user.md b/docs/mql/resources/atlassian-pack/atlassian.scim.user.md new file mode 100644 index 000000000..22f593d89 --- /dev/null +++ b/docs/mql/resources/atlassian-pack/atlassian.scim.user.md @@ -0,0 +1,23 @@ +--- +title: atlassian.scim.user +id: atlassian.scim.user +sidebar_label: atlassian.scim.user +displayed_sidebar: MQL +description: SCIM user +--- + +# atlassian.scim.user + +**Description** + +SCIM user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | -------------------------------- | +| id | string | User ID | +| name | string | User name | +| displayName | string | User's display name | +| organization | string | Organization the user belongs to | +| title | string | User's title | diff --git a/docs/mql/resources/aws-pack/README.md b/docs/mql/resources/aws-pack/README.md new file mode 100644 index 000000000..fb5b1da4c --- /dev/null +++ b/docs/mql/resources/aws-pack/README.md @@ -0,0 +1,169 @@ +--- +title: Amazon Web Services (AWS) Resource Pack - MQL Resources +id: amazon.web.services.aws.pack +sidebar_label: Amazon Web Services (AWS) Resource Pack +displayed_sidebar: MQL +description: The Amazon Web Services (AWS) resource pack lets you use MQL to query and assess the security of your AWS cloud services. +--- + +# Mondoo Amazon Web Services (AWS) Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| [aws](aws.md) | AWS resource | +| [aws.accessAnalyzer](aws.accessanalyzer.md) | AWS IAM Access Analyzer resource (for assessing the configuration of AWS IAM Access Analyzer) | +| [aws.accessanalyzer.analyzer](aws.accessanalyzer.analyzer.md) | AWS IAM Access Analyzer resource (provides an object representing an individual AWS IAM Access Analyzer configuration) | +| [aws.account](aws.account.md) | AWS Account | +| [aws.acm](aws.acm.md) | AWS Certificate Manager resource (for assessing the configuration of AWS Certificate Manager) | +| [aws.acm.certificate](aws.acm.certificate.md) | AWS Certificate Manager Certificate resource (provides an object representing an individual ACM certificate) | +| [aws.apigateway](aws.apigateway.md) | Amazon API Gateway | +| [aws.apigateway.restapi](aws.apigateway.restapi.md) | Amazon API Gateway REST API | +| [aws.apigateway.stage](aws.apigateway.stage.md) | Amazon API Gateway REST API stages | +| [aws.applicationAutoscaling](aws.applicationautoscaling.md) | AWS Application Auto Scaling | +| [aws.applicationautoscaling.target](aws.applicationautoscaling.target.md) | AWS Application Auto Scaling target | +| [aws.autoscaling](aws.autoscaling.md) | AWS Auto Scaling | +| [aws.autoscaling.group](aws.autoscaling.group.md) | AWS Auto Scaling group | +| [aws.backup](aws.backup.md) | AWS Backup | +| [aws.backup.vault](aws.backup.vault.md) | AWS Backup vault | +| [aws.backup.vaultRecoveryPoint](aws.backup.vaultrecoverypoint.md) | AWS Backup vault recovery point | +| [aws.cloudfront](aws.cloudfront.md) | Amazon CloudFront | +| [aws.cloudfront.distribution](aws.cloudfront.distribution.md) | Amazon CloudFront distribution | +| [aws.cloudfront.distribution.origin](aws.cloudfront.distribution.origin.md) | Amazon CloudFront distribution origin | +| [aws.cloudfront.function](aws.cloudfront.function.md) | Amazon CloudFront function | +| [aws.cloudtrail](aws.cloudtrail.md) | AWS CloudTrail | +| [aws.cloudtrail.trail](aws.cloudtrail.trail.md) | AWS CloudTrail trail | +| [aws.cloudwatch](aws.cloudwatch.md) | Amazon CloudWatch | +| [aws.cloudwatch.loggroup](aws.cloudwatch.loggroup.md) | Amazon CloudWatch log group | +| [aws.cloudwatch.loggroup.metricsfilter](aws.cloudwatch.loggroup.metricsfilter.md) | Amazon CloudWatch log group metrics filter | +| [aws.cloudwatch.metric](aws.cloudwatch.metric.md) | Amazon CloudWatch metric | +| [aws.cloudwatch.metric.datapoint](aws.cloudwatch.metric.datapoint.md) | Amazon CloudWatch metric datapoint | +| [aws.cloudwatch.metricdimension](aws.cloudwatch.metricdimension.md) | Amazon CloudWatch metric dimension | +| [aws.cloudwatch.metricsalarm](aws.cloudwatch.metricsalarm.md) | Amazon CloudWatch metrics alarm | +| [aws.cloudwatch.metricstatistics](aws.cloudwatch.metricstatistics.md) | Amazon CloudWatch metric statistics | +| [aws.codebuild](aws.codebuild.md) | AWS CodeBuild for building and testing code | +| [aws.codebuild.project](aws.codebuild.project.md) | AWS CodeBuild project | +| [aws.config](aws.config.md) | AWS config | +| [aws.config.recorder](aws.config.recorder.md) | AWS config recorder | +| [aws.config.rule](aws.config.rule.md) | AWS config rule | +| [aws.dms](aws.dms.md) | AWS Database Migration Service (DMS) | +| [aws.dynamodb](aws.dynamodb.md) | Amazon DynamoDB | +| [aws.dynamodb.globaltable](aws.dynamodb.globaltable.md) | Amazon DynamoDB global table | +| [aws.dynamodb.limit](aws.dynamodb.limit.md) | Amazon DynamoDB limits | +| [aws.dynamodb.table](aws.dynamodb.table.md) | Amazon DynamoDB table | +| [aws.ec2](aws.ec2.md) | Amazon EC2 | +| [aws.ec2.image](aws.ec2.image.md) | Amazon EC2 image (AMI) | +| [aws.ec2.instance](aws.ec2.instance.md) | Amazon EC2 instance | +| [aws.ec2.instance.device](aws.ec2.instance.device.md) | Amazon EC2 instance device | +| [aws.ec2.internetgateway](aws.ec2.internetgateway.md) | Amazon EC2 internet gateway | +| [aws.ec2.keypair](aws.ec2.keypair.md) | Amazon EC2 key pair | +| [aws.ec2.networkacl](aws.ec2.networkacl.md) | Amazon EC2 network ACL | +| [aws.ec2.networkacl.entry](aws.ec2.networkacl.entry.md) | Amazon EC2 network ACL entry | +| [aws.ec2.networkacl.entry.portrange](aws.ec2.networkacl.entry.portrange.md) | Amazon EC2 network ACL entry port range | +| [aws.ec2.securitygroup](aws.ec2.securitygroup.md) | Amazon EC2 security group | +| [aws.ec2.securitygroup.ippermission](aws.ec2.securitygroup.ippermission.md) | Amazon EC2 security group IP permission | +| [aws.ec2.snapshot](aws.ec2.snapshot.md) | Amazon EC2 (EBS) snapshot | +| [aws.ec2.vgwtelemetry](aws.ec2.vgwtelemetry.md) | Amazon EC2 VPN tunnel telemetry | +| [aws.ec2.volume](aws.ec2.volume.md) | Amazon EC2 (EBS) volume | +| [aws.ec2.vpnconnection](aws.ec2.vpnconnection.md) | Amazon EC2 VPN connection | +| [aws.ecr](aws.ecr.md) | AWS Elastic Container Registry (ECR) | +| [aws.ecr.image](aws.ecr.image.md) | AWS Elastic Container Registry image | +| [aws.ecr.repository](aws.ecr.repository.md) | AWS Elastic Container Registry repository | +| [aws.ecs](aws.ecs.md) | Amazon Elastic Container Service (ECS) | +| [aws.ecs.cluster](aws.ecs.cluster.md) | Amazon ECS cluster | +| [aws.ecs.container](aws.ecs.container.md) | Amazon ECS container | +| [aws.ecs.instance](aws.ecs.instance.md) | AWS ECS container instance | +| [aws.ecs.task](aws.ecs.task.md) | Amazon ECS task | +| [aws.efs](aws.efs.md) | AWS Elastic File System (EFS) service | +| [aws.efs.filesystem](aws.efs.filesystem.md) | AWS Elastic File System (EFS) file system | +| [aws.eks](aws.eks.md) | Amazon Elastic Kubernetes Service (EKS) | +| [aws.eks.cluster](aws.eks.cluster.md) | Amazon EKS cluster | +| [aws.elasticache](aws.elasticache.md) | Amazon ElastiCache | +| [aws.elasticache.cluster](aws.elasticache.cluster.md) | Amazon ElastiCache cluster | +| [aws.elb](aws.elb.md) | AWS Elastic Load Balancing | +| [aws.elb.loadbalancer](aws.elb.loadbalancer.md) | AWS Elastic Load Balancing load balancer | +| [aws.emr](aws.emr.md) | Amazon EMR | +| [aws.emr.cluster](aws.emr.cluster.md) | Amazon EMR cluster | +| [aws.es](aws.es.md) | AWS Elasticsearch service | +| [aws.es.domain](aws.es.domain.md) | Amazon Elasticsearch service domain | +| [aws.guardduty](aws.guardduty.md) | Amazon GuardDuty for threat detection | +| [aws.guardduty.detector](aws.guardduty.detector.md) | Amazon GuardDuty detector | +| [aws.iam](aws.iam.md) | AWS service to create and manage permissions for users and groups | +| [aws.iam.group](aws.iam.group.md) | AWS IAM group | +| [aws.iam.loginProfile](aws.iam.loginprofile.md) | AWS IAM login profile for a user | +| [aws.iam.policy](aws.iam.policy.md) | AWS IAM policy | +| [aws.iam.policyversion](aws.iam.policyversion.md) | AWS IAM policy version | +| [aws.iam.role](aws.iam.role.md) | AWS IAM role | +| [aws.iam.user](aws.iam.user.md) | AWS IAM user | +| [aws.iam.usercredentialreportentry](aws.iam.usercredentialreportentry.md) | Entry in AWS IAM credential report | +| [aws.iam.virtualmfadevice](aws.iam.virtualmfadevice.md) | AWS IAM virtual MFA device | +| [aws.kms](aws.kms.md) | AWS Key Management Service (KMS) | +| [aws.kms.key](aws.kms.key.md) | AWS Key Management Service (KMS) key | +| [aws.lambda](aws.lambda.md) | AWS Lambda | +| [aws.lambda.function](aws.lambda.function.md) | AWS Lambda function | +| [aws.organization](aws.organization.md) | AWS Organization resource | +| [aws.rds](aws.rds.md) | Amazon Relational Database Service (RDS) | +| [aws.rds.dbcluster](aws.rds.dbcluster.md) | Amazon RDS database cluster | +| [aws.rds.dbinstance](aws.rds.dbinstance.md) | Amazon RDS database instance | +| [aws.rds.snapshot](aws.rds.snapshot.md) | Amazon RDS snapshot | +| [aws.redshift](aws.redshift.md) | Amazon Redshift | +| [aws.redshift.cluster](aws.redshift.cluster.md) | Amazon Redshift cluster | +| [aws.s3](aws.s3.md) | Amazon S3 cloud object storage | +| [aws.s3.bucket](aws.s3.bucket.md) | Amazon S3 bucket | +| [aws.s3.bucket.corsrule](aws.s3.bucket.corsrule.md) | Amazon S3 bucket CORS rule | +| [aws.s3.bucket.grant](aws.s3.bucket.grant.md) | Amazon S3 bucket grant | +| [aws.s3.bucket.policy](aws.s3.bucket.policy.md) | Amazon S3 bucket policy | +| [aws.s3control](aws.s3control.md) | Amazon S3 bucket control | +| [aws.sagemaker](aws.sagemaker.md) | AWS SageMaker | +| [aws.sagemaker.endpoint](aws.sagemaker.endpoint.md) | AWS SageMaker endpoint | +| [aws.sagemaker.notebookinstance](aws.sagemaker.notebookinstance.md) | AWS SageMaker notebook instance | +| [aws.sagemaker.notebookinstance.details](aws.sagemaker.notebookinstance.details.md) | AWS SageMaker notebook instance details | +| [aws.secretsmanager](aws.secretsmanager.md) | AWS Secrets Manager | +| [aws.secretsmanager.secret](aws.secretsmanager.secret.md) | AWS Secrets Manager secret | +| [aws.securityhub](aws.securityhub.md) | AWS Security Hub | +| [aws.securityhub.hub](aws.securityhub.hub.md) | AWS Security Hub hub | +| [aws.sns](aws.sns.md) | AWS Simple Notification Service (SNS) | +| [aws.sns.subscription](aws.sns.subscription.md) | AWS Simple Notification Service (SNS) subscription | +| [aws.sns.topic](aws.sns.topic.md) | AWS Simple Notification Service (SNS) topic | +| [aws.ssm](aws.ssm.md) | Amazon Systems Manager | +| [aws.ssm.instance](aws.ssm.instance.md) | Amazon SSM instance | +| [aws.vpc](aws.vpc.md) | Amazon Virtual Private Cloud (VPC) | +| [aws.vpc.endpoint](aws.vpc.endpoint.md) | Amazon Virtual Private Cloud (VPC) endpoint | +| [aws.vpc.flowlog](aws.vpc.flowlog.md) | Amazon Virtual Private Cloud (VPC) flow log | +| [aws.vpc.routetable](aws.vpc.routetable.md) | Amazon Virtual Private Cloud (VPC) route table | +| [aws.vpc.subnet](aws.vpc.subnet.md) | Amazon Virtual Private Cloud (VPC) subnet | +| [aws.waf](aws.waf.md) | Amazon WAF v2 | +| [aws.waf.acl](aws.waf.acl.md) | Amazon WAF v2 ACL | +| [aws.waf.ipset](aws.waf.ipset.md) | Amazon WAF IP set (defining IP Ranges) | +| [aws.waf.rule](aws.waf.rule.md) | Amazon WAF rule | +| [aws.waf.rule.action](aws.waf.rule.action.md) | Action that happens if a rule statement matches | +| [aws.waf.rule.fieldtomatch](aws.waf.rule.fieldtomatch.md) | Field to match | +| [aws.waf.rule.fieldtomatch.body](aws.waf.rule.fieldtomatch.body.md) | Body of the field to match | +| [aws.waf.rule.fieldtomatch.cookie](aws.waf.rule.fieldtomatch.cookie.md) | Cookie of the field to match | +| [aws.waf.rule.fieldtomatch.headerorder](aws.waf.rule.fieldtomatch.headerorder.md) | Order of headers of the field to match | +| [aws.waf.rule.fieldtomatch.headers](aws.waf.rule.fieldtomatch.headers.md) | Headers | +| [aws.waf.rule.fieldtomatch.headers.matchpattern](aws.waf.rule.fieldtomatch.headers.matchpattern.md) | The pattern to match | +| [aws.waf.rule.fieldtomatch.ja3fingerprint](aws.waf.rule.fieldtomatch.ja3fingerprint.md) | JA3 fingerprint | +| [aws.waf.rule.fieldtomatch.jsonbody](aws.waf.rule.fieldtomatch.jsonbody.md) | Request body as JSON | +| [aws.waf.rule.fieldtomatch.jsonbody.matchpattern](aws.waf.rule.fieldtomatch.jsonbody.matchpattern.md) | The pattern to match | +| [aws.waf.rule.fieldtomatch.singleheader](aws.waf.rule.fieldtomatch.singleheader.md) | Single header of the field to match | +| [aws.waf.rule.fieldtomatch.singlequeryargument](aws.waf.rule.fieldtomatch.singlequeryargument.md) | Single query argument | +| [aws.waf.rule.statement](aws.waf.rule.statement.md) | | +| [aws.waf.rule.statement.andstatement](aws.waf.rule.statement.andstatement.md) | Rule statement that matches if all of the rule statements inside it match | +| [aws.waf.rule.statement.bytematchstatement](aws.waf.rule.statement.bytematchstatement.md) | Rule statement that matches a specified sequence of bytes | +| [aws.waf.rule.statement.geomatchstatement](aws.waf.rule.statement.geomatchstatement.md) | Rule statement that checks for requests from certain countries | +| [aws.waf.rule.statement.ipsetreferencestatement](aws.waf.rule.statement.ipsetreferencestatement.md) | Rule statement that checks for requests from IP addresses defined in an IPSet | +| [aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig](aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig.md) | | +| [aws.waf.rule.statement.labelmatchstatement](aws.waf.rule.statement.labelmatchstatement.md) | | +| [aws.waf.rule.statement.managedrulegroupstatement](aws.waf.rule.statement.managedrulegroupstatement.md) | Rule statement that is managed by AWS | +| [aws.waf.rule.statement.notstatement](aws.waf.rule.statement.notstatement.md) | Rule statement that negates another rule statement | +| [aws.waf.rule.statement.orstatement](aws.waf.rule.statement.orstatement.md) | Rule statement that matches if one of the rule statements inside it matches | +| [aws.waf.rule.statement.ratebasedstatement](aws.waf.rule.statement.ratebasedstatement.md) | Rule statement that matches at a certain rate of requests (rate limiting) | +| [aws.waf.rule.statement.regexmatchstatement](aws.waf.rule.statement.regexmatchstatement.md) | Rule statement that matches a specified regex pattern | +| [aws.waf.rule.statement.regexpatternsetreferencestatement](aws.waf.rule.statement.regexpatternsetreferencestatement.md) | Rule statement that checks for a regex pattern defined in a regex pattern set | +| [aws.waf.rule.statement.rulegroupreferencestatement](aws.waf.rule.statement.rulegroupreferencestatement.md) | Rule statement that refers to a group of rules | +| [aws.waf.rule.statement.sizeconstraintstatement](aws.waf.rule.statement.sizeconstraintstatement.md) | Rule statement that checks the size of the specified field | +| [aws.waf.rule.statement.sqlimatchstatement](aws.waf.rule.statement.sqlimatchstatement.md) | Statement that matches SQLI attacks | +| [aws.waf.rule.statement.xssmatchstatement](aws.waf.rule.statement.xssmatchstatement.md) | Statement that matches XSS attacks | +| [aws.waf.rulegroup](aws.waf.rulegroup.md) | Amazon WAF v2 RuleGroup | diff --git a/docs/mql/resources/aws-pack/aws.accessanalyzer.analyzer.md b/docs/mql/resources/aws-pack/aws.accessanalyzer.analyzer.md new file mode 100644 index 000000000..3d33ea7a2 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.accessanalyzer.analyzer.md @@ -0,0 +1,30 @@ +--- +title: aws.accessanalyzer.analyzer +id: aws.accessanalyzer.analyzer +sidebar_label: aws.accessanalyzer.analyzer +displayed_sidebar: MQL +description: AWS IAM Access Analyzer resource (provides an object representing an individual AWS IAM Access Analyzer configuration) +--- + +# aws.accessanalyzer.analyzer + +**Supported platform** + +- aws + +**Description** + +AWS IAM Access Analyzer resource (provides an object representing an individual AWS IAM Access Analyzer configuration) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ----------------- | ------------------------------------------------------------- | +| arn | string | ARN for the analyzer | +| name | string | Name for the analyzer | +| status | string | Status of the analyzer: ACTIVE, CREATING, DISABLED, or FAILED | +| type | string | Type of analyzer: ACCOUNT or ORGANIZATION | +| tags | map[string]string | Tags for the analyzer | +| lastResourceAnalyzed | string | The name of the last resource that was analyzed | +| lastResourceAnalyzedAt | time | Last scan timestamp | +| createdAt | time | Creation timestamp | diff --git a/docs/mql/resources/aws-pack/aws.accessanalyzer.md b/docs/mql/resources/aws-pack/aws.accessanalyzer.md new file mode 100644 index 000000000..94bd2b87b --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.accessanalyzer.md @@ -0,0 +1,56 @@ +--- +title: aws.accessAnalyzer +id: aws.accessAnalyzer +sidebar_label: aws.accessAnalyzer +displayed_sidebar: MQL +description: AWS IAM Access Analyzer resource (for assessing the configuration of AWS IAM Access Analyzer) +--- + +# aws.accessAnalyzer + +**Supported platform** + +- aws + +**Description** + +AWS IAM Access Analyzer resource (for assessing the configuration of AWS IAM Access Analyzer) + +The `aws.accessAnalyzer` resource returns a list AWS IAM Access Analyzers configured across the AWS account. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| analyzers | [][aws.accessanalyzer.analyzer](aws.accessanalyzer.analyzer.md) | List of `aws.accessanalyzer.analyzer` objects for all AWS IAM Access Analyzers configured within the account | + +**Examples** + +Return a list of AWS IAM Access Analyzers configured across the AWS account + +```coffee +aws.accessAnalyzer.analyzers +``` + +Return a list of `aws.accessAnalyzer.analyzer` resources and the value for specified fields + +```coffee +aws.accessAnalyzer.analyzers { + arn + name + status + type +} +``` + +Ensure that IAM Access analyzer is enabled for all regions + +```coffee +aws.accessAnalyzer.analyzers.all( + status == "ACTIVE" +) +``` + +**References** + +- [Using AWS IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) diff --git a/docs/mql/resources/aws-pack/aws.account.md b/docs/mql/resources/aws-pack/aws.account.md new file mode 100644 index 000000000..f1b159d64 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.account.md @@ -0,0 +1,38 @@ +--- +title: aws.account +id: aws.account +sidebar_label: aws.account +displayed_sidebar: MQL +description: AWS Account +--- + +# aws.account + +**Supported platform** + +- aws + +**Description** + +AWS Account + +The `aws.account` resource provides configuration for AWS accounts, including the account number and configured aliases. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------- | ----------------------------------------------------- | +| id | string | Account ID | +| aliases | []string | Account aliases | +| organization | [aws.organization](aws.organization.md) | Information about the associated organization, if any | + +**Examples** + +Return the account ID (number) and any configured account aliases + +```coffee +aws.account { + id + aliases +} +``` diff --git a/docs/mql/resources/aws-pack/aws.acm.certificate.md b/docs/mql/resources/aws-pack/aws.acm.certificate.md new file mode 100644 index 000000000..96a5a4ada --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.acm.certificate.md @@ -0,0 +1,39 @@ +--- +title: aws.acm.certificate +id: aws.acm.certificate +sidebar_label: aws.acm.certificate +displayed_sidebar: MQL +description: AWS Certificate Manager Certificate resource (provides an object representing an individual ACM certificate) +--- + +# aws.acm.certificate + +**Supported platform** + +- aws + +**Description** + +AWS Certificate Manager Certificate resource (provides an object representing an individual ACM certificate) + +The `aws.acm.certificate` resource provides fields for assessing the configuration of AWS ACM certificates. For usage, read the `aws.acm` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------------------- | --------------------------------------------------------------------------------------------------------- | +| arn | string | ARN for the certificate | +| notBefore | time | Time before which the certificate is not valid | +| notAfter | time | Time after which the certificate is not valid | +| createdAt | time | Time when the cert was requested | +| domainName | string | FQDN for the certificate | +| status | string | Status of the certificate: issued, expired, revoked, and so on | +| subject | string | Name of the entity associated with the public key in the certificate | +| certificate | network.certificate | Retrieves an Amazon-issued certificate and its certificate chain | +| tags | map[string]string | Tags associated with the certificate | +| keyAlgorithm | string | The algorithm that was used to generate the public-private key pair | +| serial | string | The serial number of the certificate | +| source | string | The source of the certificate: AMAZON_ISSUED or IMPORTED | +| issuer | string | The name of the certificate authority that issued and signed the certificate | +| issuedAt | time | The time at which the certificate was issued (exists only when the certificate source is AMAZON_ISSUED) | +| importedAt | time | The date and time when the certificate was imported (exists only when the certificate source is IMPORTED) | diff --git a/docs/mql/resources/aws-pack/aws.acm.md b/docs/mql/resources/aws-pack/aws.acm.md new file mode 100644 index 000000000..c6e3e0953 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.acm.md @@ -0,0 +1,61 @@ +--- +title: aws.acm +id: aws.acm +sidebar_label: aws.acm +displayed_sidebar: MQL +description: AWS Certificate Manager resource (for assessing the configuration of AWS Certificate Manager) +--- + +# aws.acm + +**Supported platform** + +- aws + +**Description** + +AWS Certificate Manager resource (for assessing the configuration of AWS Certificate Manager) + +Use the `aws.acm` resource to assess the configuration of the AWS Certificates Manager service in the account. This resource returns a list of ACM certificates found in the account. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| certificates | [][aws.acm.certificate](aws.acm.certificate.md) | List of `aws.acm.certificate` objects representing ACM certificates configured within the account | + +**Examples** + +Return a list of `aws.acm.certificate` resources within the AWS account + +```coffee +aws.acm.certificates +``` + +Return a list of `aws.acm.certificate` resources within the AWS account along with values for specified fields + +```coffee +aws.acm.certificates { + arn + notBefore + notAfter + createdAt + domainName + status + subject + certificate() +} +``` + +Check whether ACM certificates in your account are marked for expiration within 90 days + +```coffee +aws.acm.certificates. + where( status != /PENDING_VALIDATION/ ). + all (notAfter - notBefore <= 90 * time.day) +``` + +**References** + +- [What Is AWS Certificate Manager?](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) +- [Security in AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.apigateway.md b/docs/mql/resources/aws-pack/aws.apigateway.md new file mode 100644 index 000000000..680a22b57 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.apigateway.md @@ -0,0 +1,69 @@ +--- +title: aws.apigateway +id: aws.apigateway +sidebar_label: aws.apigateway +displayed_sidebar: MQL +description: Amazon API Gateway +--- + +# aws.apigateway + +**Supported platform** + +- aws + +**Description** + +Amazon API Gateway + +Use the `aws.apigateway` resource to assess the configuration of the AWS API Gateway service. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| restApis | [][aws.apigateway.restapi](aws.apigateway.restapi.md) | List of `aws.apigateway.restapi` objects representing all rest APIs across all enabled regions in the account | + +**Examples** + +Return a list of `aws.apigateway.restapi` resources for all REST APIs configured with the account across all enabled regions + +```coffee +aws.apigateway.restApis +``` + +Return a list of `aws.apigateway.restapi` resources for all REST APIs configured with the account across all enabled regions and the value for specified fields + +```coffee +aws.apigateway.restApis { + createdDate + description + stages + region + arn + id + name +} +``` + +Check that all methods in Amazon API Gateway have caching enabled and encrypted + +```coffee +aws.apigateway.restApis.all(stages.all( + methodSettings['CachingEnabled'] == true && + methodSettings['CacheDataEncrypted'] == true +)) +``` + +Check that all methods in Amazon API Gateway have logging enabled + +```coffee +aws.apigateway.restApis.all(stages.all( +methodSettings['LoggingLevel'] == "ERROR" || methodSettings['LoggingLevel'] == "INFO" +)) +``` + +**References** + +- [What is Amazon API Gateway?](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) +- [Security in Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.apigateway.restapi.md b/docs/mql/resources/aws-pack/aws.apigateway.restapi.md new file mode 100644 index 000000000..4cded521d --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.apigateway.restapi.md @@ -0,0 +1,32 @@ +--- +title: aws.apigateway.restapi +id: aws.apigateway.restapi +sidebar_label: aws.apigateway.restapi +displayed_sidebar: MQL +description: Amazon API Gateway REST API +--- + +# aws.apigateway.restapi + +**Supported platform** + +- aws + +**Description** + +Amazon API Gateway REST API + +The `aws.apigateway.restapi` resource provides fields representing an individual REST API configured within the AWS account. For usage, read the `aws.apigateway` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------------------------- | ---------------------------------- | +| arn | string | ARN for the REST API | +| id | string | Unique ID for the REST API | +| name | string | Name for the REST API | +| createdDate | time | Time when the REST API was created | +| description | string | Description for the REST API | +| stages | [][aws.apigateway.stage](aws.apigateway.stage.md) | Stages for the REST API | +| region | string | Region where the REST API exists | +| tags | map[string]string | Tags for the REST API | diff --git a/docs/mql/resources/aws-pack/aws.apigateway.stage.md b/docs/mql/resources/aws-pack/aws.apigateway.stage.md new file mode 100644 index 000000000..271cff5b1 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.apigateway.stage.md @@ -0,0 +1,41 @@ +--- +title: aws.apigateway.stage +id: aws.apigateway.stage +sidebar_label: aws.apigateway.stage +displayed_sidebar: MQL +description: Amazon API Gateway REST API stages +--- + +# aws.apigateway.stage + +**Supported platform** + +- aws + +**Description** + +Amazon API Gateway REST API stages + +The `aws.apigateway.stage` resource provides fields representing an individual stage configured on a REST API. For usage, read the `aws.apigateway` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | ----------------------------------------------------- | +| arn | string | ARN for the REST API stage | +| name | string | Name for the stage | +| tracingEnabled | bool | Bool that denotes if tracing is enabled for the stage | +| description | string | Description for the stage | +| deploymentId | string | ID of the deployment the stage is attached to | +| methodSettings | dict | Method settings for the stage | + +**Examples** + +Return a list of AWS API Gateway REST APIs configured across all enabled regions in the AWS account and the values for the arn and stages + +```coffee +aws.apigateway.restApis { + arn + stages +} +``` diff --git a/docs/mql/resources/aws-pack/aws.applicationautoscaling.md b/docs/mql/resources/aws-pack/aws.applicationautoscaling.md new file mode 100644 index 000000000..8665fe5ae --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.applicationautoscaling.md @@ -0,0 +1,46 @@ +--- +title: aws.applicationAutoscaling +id: aws.applicationAutoscaling +sidebar_label: aws.applicationAutoscaling +displayed_sidebar: MQL +description: AWS Application Auto Scaling +--- + +# aws.applicationAutoscaling + +**Supported platform** + +- aws + +**Description** + +AWS Application Auto Scaling + +The aws.applicationAutoscaling resource inspects targets in the AWS Application Auto Scaling service. The AWS Auto Scaling service allows users to load balance multiple AWS services including: + +- AppStream 2.0 fleets +- Aurora replicas +- Amazon Comprehend document classification and entity recognizer endpoints +- DynamoDB tables and global secondary indexes +- Amazon Elastic Container Service (ECS) services +- ElastiCache for Redis clusters (replication groups) +- Amazon EMR clusters +- Amazon Keyspaces (for Apache Cassandra) tables +- Lambda function provisioned concurrency +- Amazon Managed Streaming for Apache Kafka (MSK) broker storage +- Amazon Neptune clusters +- SageMaker endpoint variants +- SageMaker inference components +- SageMaker Serverless provisioned concurrency +- Spot Fleet requests + +**Init** + +aws.applicationAutoscaling(namespace string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| namespace | string | Service namespace to query for application auto scaling: comprehend, rds, sagemaker, appstream, elasticmapreduce, dynamodb, lambda, ecs, cassandra, ec2, neptune, kafka, custom-resource, or elasticache | +| scalableTargets | [][aws.applicationautoscaling.target](aws.applicationautoscaling.target.md) | List of scalable targets belonging to the service namespace | diff --git a/docs/mql/resources/aws-pack/aws.applicationautoscaling.target.md b/docs/mql/resources/aws-pack/aws.applicationautoscaling.target.md new file mode 100644 index 000000000..61bf96095 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.applicationautoscaling.target.md @@ -0,0 +1,32 @@ +--- +title: aws.applicationautoscaling.target +id: aws.applicationautoscaling.target +sidebar_label: aws.applicationautoscaling.target +displayed_sidebar: MQL +description: AWS Application Auto Scaling target +--- + +# aws.applicationautoscaling.target + +**Supported platform** + +- aws + +**Description** + +AWS Application Auto Scaling target + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------ | ------------------------------------------------ | +| namespace | string | Namespace for the target | +| arn | string | ARN of the auto scaling target | +| scalableDimension | string | Scalable dimension for the target | +| minCapacity | int | Minimum capacity set for the auto scaling target | +| maxCapacity | int | Maximum capacity set for the auto scaling target | +| suspendedState | dict | suspendedState for the auto scaling target | + +**References** + +- [What is Application Auto Scaling?](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html) diff --git a/docs/mql/resources/aws-pack/aws.autoscaling.group.md b/docs/mql/resources/aws-pack/aws.autoscaling.group.md new file mode 100644 index 000000000..dd82d73f5 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.autoscaling.group.md @@ -0,0 +1,36 @@ +--- +title: aws.autoscaling.group +id: aws.autoscaling.group +sidebar_label: aws.autoscaling.group +displayed_sidebar: MQL +description: AWS Auto Scaling group +--- + +# aws.autoscaling.group + +**Supported platform** + +- aws + +**Description** + +AWS Auto Scaling group + +The `aws.autoscaling.group` resource provides fields representing an individual AWS auto scaling group within the account. For usage, read the `aws.autoscaling` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ----------------- | ------------------------------------------------------------------------------------------- | +| arn | string | ARN for the autoscaling group | +| name | string | Name of the group | +| loadBalancerNames | []string | List of load balancer names associated with the group | +| healthCheckType | string | Health check type used by the group: ELB or EC2 | +| tags | map[string]string | Tags for the asg | +| region | string | The region of the Auto Scaling group | +| minSize | int | The minimum number of instances to scale down to | +| maxSize | int | The maximum number of instances to scale up to | +| defaultCooldown | int | The time to wait after scaling up / down before the next scaling event is started | +| launchConfigurationName | string | The name of the launch configuration | +| healthCheckGracePeriod | int | The grace period in seconds before an instance with a failing health check will be replaced | +| createdAt | time | Time when the autoscaling group was created | diff --git a/docs/mql/resources/aws-pack/aws.autoscaling.md b/docs/mql/resources/aws-pack/aws.autoscaling.md new file mode 100644 index 000000000..ea24d50d3 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.autoscaling.md @@ -0,0 +1,51 @@ +--- +title: aws.autoscaling +id: aws.autoscaling +sidebar_label: aws.autoscaling +displayed_sidebar: MQL +description: AWS Auto Scaling +--- + +# aws.autoscaling + +**Supported platform** + +- aws + +**Description** + +AWS Auto Scaling + +Use the `aws.autoscaling` resource to assess the configuration of AWS auto scaling groups within an AWS account. This resource provides the `.groups` field, which returns a list of all auto scaling groups configured across all enabled regions across the account. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ----------------------------------------------------------- | --------------------------------------------- | +| groups | [][aws.autoscaling.group](aws.autoscaling.group.md) | List of autoscaling groups across the account | + +**Examples** + +Return a list of all auto-scaling groups configured across all enabled regions across the account and the values for specified fields + +```coffee +aws.autoscaling.groups { + arn + healthCheckType + loadBalancerNames + name +} +``` + +Check that all autoscaling groups associated with a load balancer use health checks + +```coffee +aws.autoscaling.groups.where(loadBalancerNames.length > 0) { + healthCheckType == "ELB" +} +``` + +**References** + +- [Security in Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/security.html) +- [Compliance validation for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-compliance.html) diff --git a/docs/mql/resources/aws-pack/aws.backup.md b/docs/mql/resources/aws-pack/aws.backup.md new file mode 100644 index 000000000..cd1276693 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.backup.md @@ -0,0 +1,43 @@ +--- +title: aws.backup +id: aws.backup +sidebar_label: aws.backup +displayed_sidebar: MQL +description: AWS Backup +--- + +# aws.backup + +**Supported platform** + +- aws + +**Description** + +AWS Backup + +Use the `aws.backup` resource to assess the configuration of AWS Backup vaults in an AWS account. This resource provides the `.vaults` field, which returns a list of all AWS Backup vaults configured across all enabled regions across the account. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------------------------------------------------- | ------------------------------ | +| vaults | [][aws.backup.vault](aws.backup.vault.md) | List of vaults for the service | + +**Examples** + +Return a list of all AWS Backup vaults configured across all enabled regions across the account and all their recovery points + +```coffee +aws.backup.vaults { + arn + region + recoveryPoints + name +} +``` + +**References** + +- [What is AWS Backup?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) +- [Compliance validation for AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/backup-compliance.html) diff --git a/docs/mql/resources/aws-pack/aws.backup.vault.md b/docs/mql/resources/aws-pack/aws.backup.vault.md new file mode 100644 index 000000000..be5f8e1d9 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.backup.vault.md @@ -0,0 +1,31 @@ +--- +title: aws.backup.vault +id: aws.backup.vault +sidebar_label: aws.backup.vault +displayed_sidebar: MQL +description: AWS Backup vault +--- + +# aws.backup.vault + +**Supported platform** + +- aws + +**Description** + +AWS Backup vault + +The `aws.backup.vault` resource provides fields representing an individual AWS Backup vaults within the account. For usage, read the `aws.backup` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------------------- | -------------------------------------------------- | +| arn | string | ARN of the vault | +| name | string | Name of the vault | +| recoveryPoints | [][aws.backup.vaultRecoveryPoint](aws.backup.vaultrecoverypoint.md) | List of recovery points stored in the backup vault | +| region | string | The region of the vault | +| createdAt | time | Date the backup vault was created | +| locked | bool | Is the backup locked | +| encryptionKeyArn | string | The ARN of the encryption key | diff --git a/docs/mql/resources/aws-pack/aws.backup.vaultrecoverypoint.md b/docs/mql/resources/aws-pack/aws.backup.vaultrecoverypoint.md new file mode 100644 index 000000000..f2c1b5845 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.backup.vaultrecoverypoint.md @@ -0,0 +1,31 @@ +--- +title: aws.backup.vaultRecoveryPoint +id: aws.backup.vaultRecoveryPoint +sidebar_label: aws.backup.vaultRecoveryPoint +displayed_sidebar: MQL +description: AWS Backup vault recovery point +--- + +# aws.backup.vaultRecoveryPoint + +**Supported platform** + +- aws + +**Description** + +AWS Backup vault recovery point + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | -------------------------------------------------------------- | +| arn | string | ARN of the recovery point | +| resourceType | string | Resource type for the recovery point: EFS, DynamoDB, and so on | +| createdBy | dict | Information about who created the recovery point | +| iamRoleArn | string | ARN of the IAM role used to create the recovery point | +| status | string | Status of the recovery point | +| creationDate | time | Date the recovery point was created | +| completionDate | time | Date the recovery point completed | +| encryptionKeyArn | string | ARN of the key used to encrypt the recovery point | +| isEncrypted | bool | Whether the recovery point is encrypted | diff --git a/docs/mql/resources/aws-pack/aws.cloudfront.distribution.md b/docs/mql/resources/aws-pack/aws.cloudfront.distribution.md new file mode 100644 index 000000000..c0fbcc5d3 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudfront.distribution.md @@ -0,0 +1,32 @@ +--- +title: aws.cloudfront.distribution +id: aws.cloudfront.distribution +sidebar_label: aws.cloudfront.distribution +displayed_sidebar: MQL +description: Amazon CloudFront distribution +--- + +# aws.cloudfront.distribution + +**Supported platform** + +- aws + +**Description** + +Amazon CloudFront distribution + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------- | +| arn | string | ARN of the CloudFront distribution | +| status | string | Status of the distribution | +| domainName | string | Domain Name of the distribution | +| origins | [][aws.cloudfront.distribution.origin](aws.cloudfront.distribution.origin.md) | Details on the origins of this distribution | +| defaultCacheBehavior | dict | Default cache behavior for the distribution | +| cacheBehaviors | []dict | All cache behaviors for the distribution | +| httpVersion | string | HTTP version of the distribution | +| isIPV6Enabled | bool | Is the distribution IPV6 enabled | +| enabled | bool | Is the distribution enabled | +| priceClass | string | The price class of the distribution | diff --git a/docs/mql/resources/aws-pack/aws.cloudfront.distribution.origin.md b/docs/mql/resources/aws-pack/aws.cloudfront.distribution.origin.md new file mode 100644 index 000000000..29754b921 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudfront.distribution.origin.md @@ -0,0 +1,28 @@ +--- +title: aws.cloudfront.distribution.origin +id: aws.cloudfront.distribution.origin +sidebar_label: aws.cloudfront.distribution.origin +displayed_sidebar: MQL +description: Amazon CloudFront distribution origin +--- + +# aws.cloudfront.distribution.origin + +**Supported platform** + +- aws + +**Description** + +Amazon CloudFront distribution origin + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------ | --------------------------------------------------------------- | +| domainName | string | Domain name for the origin | +| id | string | Unique id for the origin | +| connectionAttempts | int | Number of times CloudFront attempts to connect | +| connectionTimeout | int | Number of seconds CloudFront waits when attempting a connection | +| originPath | string | Path that CloudFront appends to original domain | +| account | string | Account ID where the origin exists | diff --git a/docs/mql/resources/aws-pack/aws.cloudfront.function.md b/docs/mql/resources/aws-pack/aws.cloudfront.function.md new file mode 100644 index 000000000..1d233f483 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudfront.function.md @@ -0,0 +1,30 @@ +--- +title: aws.cloudfront.function +id: aws.cloudfront.function +sidebar_label: aws.cloudfront.function +displayed_sidebar: MQL +description: Amazon CloudFront function +--- + +# aws.cloudfront.function + +**Supported platform** + +- aws + +**Description** + +Amazon CloudFront function + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------------------------------------ | +| name | string | Name of the CloudFront function | +| status | string | Status of the CloudFront function | +| arn | string | ARN of the CloudFront function | +| lastModifiedTime | time | Date and time when the function was last updated | +| createdTime | time | Date and time when the function was created | +| stage | string | Stage that the function is in | +| comment | string | Comment to describe the function | +| runtime | string | Runtime environment for the function | diff --git a/docs/mql/resources/aws-pack/aws.cloudfront.md b/docs/mql/resources/aws-pack/aws.cloudfront.md new file mode 100644 index 000000000..778eee327 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudfront.md @@ -0,0 +1,24 @@ +--- +title: aws.cloudfront +id: aws.cloudfront +sidebar_label: aws.cloudfront +displayed_sidebar: MQL +description: Amazon CloudFront +--- + +# aws.cloudfront + +**Supported platform** + +- aws + +**Description** + +Amazon CloudFront + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------------------------------------------- | -------------------------------- | +| distributions | [][aws.cloudfront.distribution](aws.cloudfront.distribution.md) | List of CloudFront distributions | +| functions | [][aws.cloudfront.function](aws.cloudfront.function.md) | List of CloudFront functions | diff --git a/docs/mql/resources/aws-pack/aws.cloudtrail.md b/docs/mql/resources/aws-pack/aws.cloudtrail.md new file mode 100644 index 000000000..96b7f7315 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudtrail.md @@ -0,0 +1,59 @@ +--- +title: aws.cloudtrail +id: aws.cloudtrail +sidebar_label: aws.cloudtrail +displayed_sidebar: MQL +description: AWS CloudTrail +--- + +# aws.cloudtrail + +**Supported platform** + +- aws + +**Description** + +AWS CloudTrail + +Use the `aws.cloudtrail` resource to assess the configuration of AWS CloudTrails deployed within an AWS account. The resource provides the `.trails` field, which creates a list of `aws.cloudtrail.trail` resources representing all CloudTrails configured across every enabled region. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | --------------------------------------------------------- | ----------------------------------------------------- | +| trails | [][aws.cloudtrail.trail](aws.cloudtrail.trail.md) | List of CloudTrail trails associated with the account | + +**Examples** + +Return a list of `aws.cloudtrail.trail` resources representing all AWS Cloud Trails configured across all enabled regions and the values for specified fields + +```coffee +aws.cloudtrail.trails { + arn + name + kmsKey + isMultiRegionTrail + isOrganizationTrail + logFileValidationEnabled + includeGlobalServiceEvents + s3bucket + snsTopicARN + status + logGroup + cloudWatchLogsRoleArn + cloudWatchLogsLogGroupArn + eventSelectors + region +} +``` + +```coffee +aws.cloudtrail.trails.any( + isMultiRegionTrail && status['IsLogging'] +) +``` + +**References** + +- [Security best practices in AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/best-practices-security.html) diff --git a/docs/mql/resources/aws-pack/aws.cloudtrail.trail.md b/docs/mql/resources/aws-pack/aws.cloudtrail.trail.md new file mode 100644 index 000000000..602693ca9 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudtrail.trail.md @@ -0,0 +1,39 @@ +--- +title: aws.cloudtrail.trail +id: aws.cloudtrail.trail +sidebar_label: aws.cloudtrail.trail +displayed_sidebar: MQL +description: AWS CloudTrail trail +--- + +# aws.cloudtrail.trail + +**Supported platform** + +- aws + +**Description** + +AWS CloudTrail trail + +The `aws.cloudtrail.trail` object represents an individual AWS CloudTrail configured within an account. For usage, read the `aws.cloudtrail` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| arn | string | ARN of the trail | +| name | string | Name of the trail | +| kmsKey | [aws.kms.key](aws.kms.key.md) | KMS key used to encrypt the logs | +| isMultiRegionTrail | bool | Whether the trail exists in multiple regions (false if single region) | +| isOrganizationTrail | bool | Whether trail is an organization trail (logs events for management and member accounts of the organization) | +| logFileValidationEnabled | bool | Whether log file validation is enabled | +| includeGlobalServiceEvents | bool | Whether API calls from global services are included | +| s3bucket | [aws.s3.bucket](aws.s3.bucket.md) | S3 bucket where trail files are delivered | +| snsTopicARN | string | ARN of the SNS topic that the trail uses to send notifications | +| status | dict | JSON list of information about the trail | +| logGroup | [aws.cloudwatch.loggroup](aws.cloudwatch.loggroup.md) | Log group where trail files are delivered | +| cloudWatchLogsRoleArn | string | Role for logs endpoint to assume when writing to log group | +| cloudWatchLogsLogGroupArn | string | Group for logs endpoint to assume when writing to log group | +| eventSelectors | []dict | Settings for the trail's configured event selectors | +| region | string | Region in which the trail was created (home region) | diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.loggroup.md b/docs/mql/resources/aws-pack/aws.cloudwatch.loggroup.md new file mode 100644 index 000000000..55c607926 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.loggroup.md @@ -0,0 +1,30 @@ +--- +title: aws.cloudwatch.loggroup +id: aws.cloudwatch.loggroup +sidebar_label: aws.cloudwatch.loggroup +displayed_sidebar: MQL +description: Amazon CloudWatch log group +--- + +# aws.cloudwatch.loggroup + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch log group + +The `aws.cloudwatch.loggroup` object represents an individual AWS CloudWatch log group configured within an account. For usage, read the `aws.cloudwatch` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| arn | string | ARN of the log group | +| name | string | Name of the log group | +| metricsFilters | [][aws.cloudwatch.loggroup.metricsfilter](aws.cloudwatch.loggroup.metricsfilter.md) | List of metric filters associated with the log group | +| kmsKey | [aws.kms.key](aws.kms.key.md) | KMS key used for log encryption | +| region | string | Region where the log group is stored | +| retentionInDays | int | The number of days to retain the log events in the specified log group | diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.loggroup.metricsfilter.md b/docs/mql/resources/aws-pack/aws.cloudwatch.loggroup.metricsfilter.md new file mode 100644 index 000000000..02f525dda --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.loggroup.metricsfilter.md @@ -0,0 +1,28 @@ +--- +title: aws.cloudwatch.loggroup.metricsfilter +id: aws.cloudwatch.loggroup.metricsfilter +sidebar_label: aws.cloudwatch.loggroup.metricsfilter +displayed_sidebar: MQL +description: Amazon CloudWatch log group metrics filter +--- + +# aws.cloudwatch.loggroup.metricsfilter + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch log group metrics filter + +The `aws.cloudwatch.metricsfilter` object represents an individual AWS CloudWatch metrics filter configured within an account. For usage, read the `aws.cloudwatch` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------------------------------- | ----------------------------------------- | +| id | string | Unique ID for the metric | +| filterName | string | Filter name associated with the metric | +| filterPattern | string | Filter pattern associated with the metric | +| metrics | [][aws.cloudwatch.metric](aws.cloudwatch.metric.md) | List of CloudWatch metrics | diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.md b/docs/mql/resources/aws-pack/aws.cloudwatch.md new file mode 100644 index 000000000..85cc1bde2 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.md @@ -0,0 +1,51 @@ +--- +title: aws.cloudwatch +id: aws.cloudwatch +sidebar_label: aws.cloudwatch +displayed_sidebar: MQL +description: Amazon CloudWatch +--- + +# aws.cloudwatch + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch + +Use the `aws.cloudwatch` resource to assess the configuration of the AWS CloudWatch service. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------------- | ----------------------------- | +| logGroups | [][aws.cloudwatch.loggroup](aws.cloudwatch.loggroup.md) | List of CloudWatch log groups | +| alarms | [][aws.cloudwatch.metricsalarm](aws.cloudwatch.metricsalarm.md) | List of CloudWatch alarms | +| metrics | [][aws.cloudwatch.metric](aws.cloudwatch.metric.md) | List of CloudWatch metrics | + +**Examples** + +Return a list of `aws.cloudwatch.loggroup` resources representing individual CloudWatch log groups configured across all enabled regions + +```coffee +aws.cloudwatch.logGroups +``` + +Return a list of `aws.cloudwatch.metric` resources representing individual CloudWatch metrics configured across all enabled regions + +```coffee +aws.cloudwatch.metrics +``` + +Check that all cloudwatch alarms have at least one action enabled + +```coffee +aws.cloudwatch.alarms.all( + actions.length > 0 == true && + insufficientDataActions.length > 0 == props.cloudwatchAlarmInsufficientDataActionRequired && + okActions.length > 0 == props.cloudwatchAlarmOkActionRequired +) +``` diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.metric.datapoint.md b/docs/mql/resources/aws-pack/aws.cloudwatch.metric.datapoint.md new file mode 100644 index 000000000..176bdb510 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.metric.datapoint.md @@ -0,0 +1,29 @@ +--- +title: aws.cloudwatch.metric.datapoint +id: aws.cloudwatch.metric.datapoint +sidebar_label: aws.cloudwatch.metric.datapoint +displayed_sidebar: MQL +description: Amazon CloudWatch metric datapoint +--- + +# aws.cloudwatch.metric.datapoint + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch metric datapoint + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ----------------------------------- | +| id | string | Unique identifier for the datapoint | +| timestamp | time | Timestamp of the metric datapoint | +| maximum | float | Maximum value for the statistic | +| minimum | float | Minimum value for the statistic | +| average | float | Average value for the statistic | +| sum | float | Sum value for the statistic | +| unit | string | Unit of the statistic | diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.metric.md b/docs/mql/resources/aws-pack/aws.cloudwatch.metric.md new file mode 100644 index 000000000..0b92d9525 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.metric.md @@ -0,0 +1,30 @@ +--- +title: aws.cloudwatch.metric +id: aws.cloudwatch.metric +sidebar_label: aws.cloudwatch.metric +displayed_sidebar: MQL +description: Amazon CloudWatch metric +--- + +# aws.cloudwatch.metric + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch metric + +The `aws.cloudwatch.metric` object represents an individual AWS CloudWatch metric configured within an account. For usage, read the `aws.cloudwatch` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------------------------------------------------------------------- | ----------------------------------------------- | +| name | string | Name of the metric | +| namespace | string | Namespace for the metric | +| region | string | Region where the metric exists | +| alarms | [][aws.cloudwatch.metricsalarm](aws.cloudwatch.metricsalarm.md) | List of CloudWatch metric alarms for the metric | +| dimensions | [][aws.cloudwatch.metricdimension](aws.cloudwatch.metricdimension.md) | Dimensions that apply to the metric | +| statistics | [aws.cloudwatch.metricstatistics](aws.cloudwatch.metricstatistics.md) | Statistics for the metric | diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.metricdimension.md b/docs/mql/resources/aws-pack/aws.cloudwatch.metricdimension.md new file mode 100644 index 000000000..83a397004 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.metricdimension.md @@ -0,0 +1,24 @@ +--- +title: aws.cloudwatch.metricdimension +id: aws.cloudwatch.metricdimension +sidebar_label: aws.cloudwatch.metricdimension +displayed_sidebar: MQL +description: Amazon CloudWatch metric dimension +--- + +# aws.cloudwatch.metricdimension + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch metric dimension + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | ------ | ---------------------- | +| name | string | Name of the dimension | +| value | string | Value of the dimension | diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.metricsalarm.md b/docs/mql/resources/aws-pack/aws.cloudwatch.metricsalarm.md new file mode 100644 index 000000000..2d9899fee --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.metricsalarm.md @@ -0,0 +1,34 @@ +--- +title: aws.cloudwatch.metricsalarm +id: aws.cloudwatch.metricsalarm +sidebar_label: aws.cloudwatch.metricsalarm +displayed_sidebar: MQL +description: Amazon CloudWatch metrics alarm +--- + +# aws.cloudwatch.metricsalarm + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch metrics alarm + +The `aws.cloudwatch.metricsalarm` object represents an individual AWS CloudWatch metric alarm configured within an account. For usage, read the `aws.cloudwatch` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ------------------------------------------- | ---------------------------------------------------------------- | +| arn | string | ARN for the metric alarm | +| metricName | string | Metric name associated with the alarm | +| metricNamespace | string | Metric namespace associated with the alarm | +| region | string | Region where the alarm exists | +| actions | [][aws.sns.topic](aws.sns.topic.md) | List of alarm actions (SNS topic ARNs) associated with the alarm | +| state | string | State of the alarm | +| stateReason | string | Description of the reason for the state | +| insufficientDataActions | [][aws.sns.topic](aws.sns.topic.md) | List of SNS topic ARNs to trigger for insufficient data actions | +| okActions | [][aws.sns.topic](aws.sns.topic.md) | List of SNS topic ARNs to trigger for OK actions | +| name | string | Name of the alarm | diff --git a/docs/mql/resources/aws-pack/aws.cloudwatch.metricstatistics.md b/docs/mql/resources/aws-pack/aws.cloudwatch.metricstatistics.md new file mode 100644 index 000000000..532f830e2 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.cloudwatch.metricstatistics.md @@ -0,0 +1,33 @@ +--- +title: aws.cloudwatch.metricstatistics +id: aws.cloudwatch.metricstatistics +sidebar_label: aws.cloudwatch.metricstatistics +displayed_sidebar: MQL +description: Amazon CloudWatch metric statistics +--- + +# aws.cloudwatch.metricstatistics + +**Supported platform** + +- aws + +**Description** + +Amazon CloudWatch metric statistics + +**Init** + +aws.cloudwatch.metricstatistics(namespace string) +aws.cloudwatch.metricstatistics(region string) +aws.cloudwatch.metricstatistics(name string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------- | +| namespace | string | Namespace for the metric | +| name | string | Name for the metric | +| region | string | Region for the metrics | +| label | string | Label for the statistics | +| datapoints | [][aws.cloudwatch.metric.datapoint](aws.cloudwatch.metric.datapoint.md) | Datapoints for the statistic over the last 24 hours in hour intervals | diff --git a/docs/mql/resources/aws-pack/aws.codebuild.md b/docs/mql/resources/aws-pack/aws.codebuild.md new file mode 100644 index 000000000..0240d92d6 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.codebuild.md @@ -0,0 +1,61 @@ +--- +title: aws.codebuild +id: aws.codebuild +sidebar_label: aws.codebuild +displayed_sidebar: MQL +description: AWS CodeBuild for building and testing code +--- + +# aws.codebuild + +**Supported platform** + +- aws + +**Description** + +AWS CodeBuild for building and testing code + +Use the `aws.codebuild` resource to assess the configuration of the AWS CodeBuild service and the projects within. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------------------------------------------------- | ---------------------- | +| projects | [][aws.codebuild.project](aws.codebuild.project.md) | List of build projects | + +**Examples** + +Return a list of `aws.codebuild.project` resources representing all AWS CodeBuild projects configured across all enabled regions within the account and the values for specified fields + +```coffee +aws.codebuild.projects { + arn + description + name + environment + region + source +} +``` + +Check that all projects containing env variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are not in plaintext + +```coffee +aws.codebuild.projects { + environment ['EnvironmentVariables'].where(_['Name'] == "AWS_ACCESS_KEY_ID") { _['Type'] != "PLAINTEXT"} + environment ['EnvironmentVariables'].where(_['Name'] == "AWS_SECRET_ACCESS_KEY") { _['Type'] != "PLAINTEXT"} +} +``` + +Check that all projects using GitHub or Bitbucket as the source use oauth + +```coffee +aws.codebuild.projects.where( source['Type'] == "BITBUCKET" || source['Type'] == "GITHUB" ) { + source['Auth']['Type'] == "OAUTH" +} +``` + +**References** + +- [Security in AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.codebuild.project.md b/docs/mql/resources/aws-pack/aws.codebuild.project.md new file mode 100644 index 000000000..5c4f5721c --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.codebuild.project.md @@ -0,0 +1,31 @@ +--- +title: aws.codebuild.project +id: aws.codebuild.project +sidebar_label: aws.codebuild.project +displayed_sidebar: MQL +description: AWS CodeBuild project +--- + +# aws.codebuild.project + +**Supported platform** + +- aws + +**Description** + +AWS CodeBuild project + +The `aws.codebuild.project` resource provides fields representing an individual AWS CodeBuild project configured within the account. For usage, read the `aws.codebuild` documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------- | ----------------------------------------------- | +| arn | string | ARN for the project | +| description | string | Description of the project | +| name | string | Name of the project | +| environment | dict | Build environment information about the project | +| region | string | Region where the project exists | +| source | dict | Source used for the build project | +| tags | map[string]string | Tags for the project | diff --git a/docs/mql/resources/aws-pack/aws.config.md b/docs/mql/resources/aws-pack/aws.config.md new file mode 100644 index 000000000..0f87544d6 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.config.md @@ -0,0 +1,67 @@ +--- +title: aws.config +id: aws.config +sidebar_label: aws.config +displayed_sidebar: MQL +description: AWS config +--- + +# aws.config + +**Supported platform** + +- aws + +**Description** + +AWS config + +Use the `aws.config` resource to assess the configuration of the AWS Config service. The resource provides the `.recorders` field, which returns a list of `aws.config.recorder` resources representing all AWS Config recorders configured across all enabled regions, as well as the `.rules` field, which returns a list of `aws.config.rule` resources representing all AWS Config rules configured across all enabled regions in the account. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------------------------------- | -------------------------------------------------------------- | +| recorders | [][aws.config.recorder](aws.config.recorder.md) | List of configuration recorders for each region in the account | +| rules | [][aws.config.rule](aws.config.rule.md) | List of AWS Config rules | + +**Examples** + +Return a list of `aws.config.rule` resources representing AWS Config rules configured across all enabled regions and the values for specified fields + +```coffee +aws.config.rules { + arn + state + source +} +``` + +Return a list of AWS Config recorders configured across all enabled regions and the values for specified fields + +```coffee +aws.config.recorders { + name + roleArn + allSupported + includeGlobalResourceTypes + resourceTypes + recording + lastStatus + region +} +``` + +Ensure AWS Config is enabled in all regions + +```coffee +aws.config.recorders.any(allSupported == true && includeGlobalResourceTypes == true) +aws.config.recorders.where(allSupported == true && includeGlobalResourceTypes == true).all( + recording == true && lastStatus == "SUCCESS" +) +``` + +**References** + +- [Security in AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/security.html) +- [AWS Config best practices](https://aws.amazon.com/blogs/mt/aws-config-best-practices/) diff --git a/docs/mql/resources/aws-pack/aws.config.recorder.md b/docs/mql/resources/aws-pack/aws.config.recorder.md new file mode 100644 index 000000000..353682c87 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.config.recorder.md @@ -0,0 +1,32 @@ +--- +title: aws.config.recorder +id: aws.config.recorder +sidebar_label: aws.config.recorder +displayed_sidebar: MQL +description: AWS config recorder +--- + +# aws.config.recorder + +**Supported platform** + +- aws + +**Description** + +AWS config recorder + +The `aws.config.recorder` resource provides fields representing an individual AWS Config recorder configured within an account. For usage, read the `aws.config` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | ---------------- | ----------------------------------------------------------------------------------------- | +| name | string | Name of the recorder | +| roleArn | string | ARN of the IAM role used to describe the AWS resources associated with the account | +| allSupported | bool | Whether the recorder records config changes for every supported type of regional resource | +| includeGlobalResourceTypes | bool | Whether the recorder records all supported types of global resources | +| recording | bool | Whether the recorder is currently recording | +| lastStatus | string | Last (previous) status of the recorder | +| region | string | Region for the recorder | +| resourceTypes | []string | Whether the recorder records specific resource types | diff --git a/docs/mql/resources/aws-pack/aws.config.rule.md b/docs/mql/resources/aws-pack/aws.config.rule.md new file mode 100644 index 000000000..a6b896286 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.config.rule.md @@ -0,0 +1,31 @@ +--- +title: aws.config.rule +id: aws.config.rule +sidebar_label: aws.config.rule +displayed_sidebar: MQL +description: AWS config rule +--- + +# aws.config.rule + +**Supported platform** + +- aws + +**Description** + +AWS config rule + +The `aws.config.rule` resource provides fields representing an individual AWS Config rule configured within an account. For usage, read the `aws.config` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | -------------------------------------------------------------- | +| arn | string | ARN for the config rule | +| state | string | State of the rule | +| source | dict | Rule identifier that causes the function to evaluate resources | +| id | string | The ID of the Config rule | +| name | string | The name that you assigned to the Config rule | +| description | string | The description that provided for the Config rule | +| region | string | Region for the Config rule | diff --git a/docs/mql/resources/aws-pack/aws.dms.md b/docs/mql/resources/aws-pack/aws.dms.md new file mode 100644 index 000000000..e764423d6 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.dms.md @@ -0,0 +1,45 @@ +--- +title: aws.dms +id: aws.dms +sidebar_label: aws.dms +displayed_sidebar: MQL +description: AWS Database Migration Service (DMS) +--- + +# aws.dms + +**Supported platform** + +- aws + +**Description** + +AWS Database Migration Service (DMS) + +Use the `aws.dms` resource to assess the configuration of the AWS Database Migration service. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | -------------- | --------------------------------- | +| replicationInstances | []dict | List of DMS replication instances | + +**Examples** + +Return a list of AWS Database Migration service replication instances + +```coffee +aws.dms.replicationInstances +``` + +Check whether AWS Database Migration Service replication instances are public + +```coffee +aws.dms.replicationInstances.none( + _['PubliclyAccessible'] == true +) +``` + +**References** + +- [Security in AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.html) diff --git a/docs/mql/resources/aws-pack/aws.dynamodb.globaltable.md b/docs/mql/resources/aws-pack/aws.dynamodb.globaltable.md new file mode 100644 index 000000000..43b792fae --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.dynamodb.globaltable.md @@ -0,0 +1,27 @@ +--- +title: aws.dynamodb.globaltable +id: aws.dynamodb.globaltable +sidebar_label: aws.dynamodb.globaltable +displayed_sidebar: MQL +description: Amazon DynamoDB global table +--- + +# aws.dynamodb.globaltable + +**Supported platform** + +- aws + +**Description** + +Amazon DynamoDB global table + +The `aws.dynamodb.globaltable` resource provides fields representing a DynamoDB global table. For usage, see `aws.dynamodb` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | -------------- | -------------------------------------- | +| arn | string | ARN for the global table | +| name | string | Table name | +| replicaSettings | []dict | List of replica settings for the table | diff --git a/docs/mql/resources/aws-pack/aws.dynamodb.limit.md b/docs/mql/resources/aws-pack/aws.dynamodb.limit.md new file mode 100644 index 000000000..3a44ad607 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.dynamodb.limit.md @@ -0,0 +1,30 @@ +--- +title: aws.dynamodb.limit +id: aws.dynamodb.limit +sidebar_label: aws.dynamodb.limit +displayed_sidebar: MQL +description: Amazon DynamoDB limits +--- + +# aws.dynamodb.limit + +**Supported platform** + +- aws + +**Description** + +Amazon DynamoDB limits + +The `aws.dynamodb.limit` resource provides fields representing a DynamoDB limit configuration. For usage, see `aws.dynamodb` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------ | ------------------------------------------------------------- | +| arn | string | ARN representing the account + region where the limit applies | +| region | string | Region where the limits apply | +| accountMaxRead | int | Account max read limit | +| accountMaxWrite | int | Account max write limit | +| tableMaxRead | int | Table max read limit | +| tableMaxWrite | int | Table max write limit | diff --git a/docs/mql/resources/aws-pack/aws.dynamodb.md b/docs/mql/resources/aws-pack/aws.dynamodb.md new file mode 100644 index 000000000..d439e546f --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.dynamodb.md @@ -0,0 +1,79 @@ +--- +title: aws.dynamodb +id: aws.dynamodb +sidebar_label: aws.dynamodb +displayed_sidebar: MQL +description: Amazon DynamoDB +--- + +# aws.dynamodb + +**Supported platform** + +- aws + +**Description** + +Amazon DynamoDB + +Use the `aws.dynamodb` resource to assess the configuration of the AWS DynamoDB. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------------------------------- | -------------------------------------------- | +| backups | []dict | List of backups for DynamoDB | +| globalTables | [][aws.dynamodb.globaltable](aws.dynamodb.globaltable.md) | List of global tables for DynamoDB | +| tables | [][aws.dynamodb.table](aws.dynamodb.table.md) | List of tables for DynamoDB | +| limits | [][aws.dynamodb.limit](aws.dynamodb.limit.md) | List of DynamoDB settings across all regions | + +**Examples** + +Return a list of `aws.dynamodb.table` resources and the values for specified fields + +```coffee +aws.dynamodb.tables { + arn + name + region + backups + sseDescription + provisionedThroughput + continuousBackups +} +``` + +Return a list of `aws.dynamodb.limit` resources and the values for specified fields + +```coffee +aws.dynamodb.limits { + arn + region + accountMaxRead + accountMaxWrite + tableMaxRead + tableMaxWrite +} +``` + +Return a list of `aws.dynamodb.globaltable` resources and the value for specified fields + +```coffee +aws.dynamodb.globaltables { + arn + name + replicaSettings +} +``` + +Check that all DynamoDB tables are encrypted with AWS Key Management Service (KMS) + +```coffee +aws.dynamodb.tables.all( + sseDescription['SSEType'] == 'KMS' && sseDescription['Status'] == 'ENABLED' +) +``` + +**References** + +- [Security and Compliance in Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.dynamodb.table.md b/docs/mql/resources/aws-pack/aws.dynamodb.table.md new file mode 100644 index 000000000..f17735a97 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.dynamodb.table.md @@ -0,0 +1,38 @@ +--- +title: aws.dynamodb.table +id: aws.dynamodb.table +sidebar_label: aws.dynamodb.table +displayed_sidebar: MQL +description: Amazon DynamoDB table +--- + +# aws.dynamodb.table + +**Supported platform** + +- aws + +**Description** + +Amazon DynamoDB table + +The `aws.dynamodb.table` resource provides fields representing a DynamoDB table. For usage, see `aws.dynamodb` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| arn | string | ARN for the table | +| name | string | Table name | +| region | string | Region where the table exists | +| backups | []dict | Backups for the table | +| sseDescription | dict | Description of server-side encryption for the table | +| provisionedThroughput | dict | Provisioned throughput settings for the table | +| continuousBackups | dict | Continuous backups and point-in-time recovery settings for the table | +| tags | map[string]string | Tags for the table | +| createdTime | time | The creation time of the table | +| deletionProtectionEnabled | bool | Is deletion protection enabled | +| globalTableVersion | string | The global table version | +| id | string | The table ID | +| sizeBytes | int | The total size of the specified table, in bytes. DynamoDB updates this value approximately every six hours. | +| status | string | The current state of the table: CREATING, UPDATING, DELETING, ACTIVE, INACCESSIBLE_ENCRYPTION_CREDENTIALS, ARCHIVING, or ARCHIVED | diff --git a/docs/mql/resources/aws-pack/aws.ec2.image.md b/docs/mql/resources/aws-pack/aws.ec2.image.md new file mode 100644 index 000000000..b38ffe4d3 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.image.md @@ -0,0 +1,30 @@ +--- +title: aws.ec2.image +id: aws.ec2.image +sidebar_label: aws.ec2.image +displayed_sidebar: MQL +description: Amazon EC2 image (AMI) +--- + +# aws.ec2.image + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 image (AMI) + +The `aws.ec2.image` resource provides fields for assessing AMIs within an account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | -------------------------------------- | +| arn | string | ARN for the AMI | +| id | string | ID of the image | +| name | string | Name for the image | +| architecture | string | Architecture associated with the image | +| ownerId | string | AWS account ID of the image owner | +| ownerAlias | string | Alias for the image owner | diff --git a/docs/mql/resources/aws-pack/aws.ec2.instance.device.md b/docs/mql/resources/aws-pack/aws.ec2.instance.device.md new file mode 100644 index 000000000..32591b3d1 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.instance.device.md @@ -0,0 +1,28 @@ +--- +title: aws.ec2.instance.device +id: aws.ec2.instance.device +sidebar_label: aws.ec2.instance.device +displayed_sidebar: MQL +description: Amazon EC2 instance device +--- + +# aws.ec2.instance.device + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 instance device + +The `aws.ec2.instance.device` resource provides fields for assessing the configuration of devices attached to EC2 instances within an account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------ | -------------------------------------------------------------------------- | +| deleteOnTermination | bool | Boolean to denote whether volume should be deleted on instance termination | +| status | string | Status of the device | +| volumeId | string | Volume id for the device | +| deviceName | string | Name for the device | diff --git a/docs/mql/resources/aws-pack/aws.ec2.instance.md b/docs/mql/resources/aws-pack/aws.ec2.instance.md new file mode 100644 index 000000000..d8c715676 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.instance.md @@ -0,0 +1,58 @@ +--- +title: aws.ec2.instance +id: aws.ec2.instance +sidebar_label: aws.ec2.instance +displayed_sidebar: MQL +description: Amazon EC2 instance +--- + +# aws.ec2.instance + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 instance + +The `aws.ec2.instance` resource provides fields for assessing the configuration of EC2 instances within an account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| arn | string | ARN for the instance | +| instanceId | string | Instance ID for the instance | +| detailedMonitoring | string | Whether detailed monitoring is enabled | +| region | string | Region where the instance exists | +| publicIp | string | Public IP for instance | +| ssm | dict | Amazon Systems Manager information for the instance | +| vpc | [aws.vpc](aws.vpc.md) | VPC associated with the instance | +| httpTokens | string | A value of "optional" denotes IMDSv1 server compatibility; "required" denotes IMDSv2 | +| httpEndpoint | string | Status of the IMDS endpoint enabled on the instance | +| patchState | dict | Patch state information about the instance | +| state | string | State of the instance: pending, running, stopping, stopped, rebooting, or terminated | +| deviceMappings | [][aws.ec2.instance.device](aws.ec2.instance.device.md) | List of devices attached to the instance (such as EBS volume) | +| securityGroups | [][aws.ec2.securitygroup](aws.ec2.securitygroup.md) | List of security groups (IDs) associated with the instance | +| platformDetails | string | Platform details | +| publicDnsName | string | Public DNS name for the instance | +| instanceStatus | dict | The status of the specified instance | +| stateReason | dict | Reason for the most recent state transition | +| stateTransitionReason | string | Reason for the most recent state transition | +| ebsOptimized | bool | Whether the instance has EBS optimization turned on | +| enaSupported | bool | Whether enhanced networking with ENA is enabled | +| instanceType | string | Instance type, such as t2.micro | +| tags | map[string]string | Tags on the instance | +| image | [aws.ec2.image](aws.ec2.image.md) | Image that was used for the instance | +| launchTime | time | Launch time of the instance | +| privateIp | string | Private IP address for the instance | +| privateDnsName | string | Private DNS name for the instance | +| keypair | [aws.ec2.keypair](aws.ec2.keypair.md) | Key pair associated with the instance | +| stateTransitionTime | time | Time when the last state transition occurred | +| vpcArn | string | The ARN of the VPC associated with the instance | +| hypervisor | string | The hypervisor type of the instance: ovm or xen | +| instanceLifecycle | string | Whether this is a Spot Instance or a Scheduled Instance: spot, scheduled, or capacity-block | +| rootDeviceType | string | The root device type used by the AMI: ebs or instance-store | +| rootDeviceName | string | The device name of the root device volume, such as /dev/sda1 | +| architecture | string | The architecture of the instance | diff --git a/docs/mql/resources/aws-pack/aws.ec2.internetgateway.md b/docs/mql/resources/aws-pack/aws.ec2.internetgateway.md new file mode 100644 index 000000000..c80e5b1a2 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.internetgateway.md @@ -0,0 +1,27 @@ +--- +title: aws.ec2.internetgateway +id: aws.ec2.internetgateway +sidebar_label: aws.ec2.internetgateway +displayed_sidebar: MQL +description: Amazon EC2 internet gateway +--- + +# aws.ec2.internetgateway + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 internet gateway + +The `aws.ec2.internetgateway` resource provides fields for assessing the configuration of internet gateways within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | -------------- | ------------------- | +| arn | string | ARN for the gateway | +| id | string | ID for the gateway | +| attachments | []dict | VPC attachments | diff --git a/docs/mql/resources/aws-pack/aws.ec2.keypair.md b/docs/mql/resources/aws-pack/aws.ec2.keypair.md new file mode 100644 index 000000000..22130898e --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.keypair.md @@ -0,0 +1,29 @@ +--- +title: aws.ec2.keypair +id: aws.ec2.keypair +sidebar_label: aws.ec2.keypair +displayed_sidebar: MQL +description: Amazon EC2 key pair +--- + +# aws.ec2.keypair + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 key pair + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------- | -------------------------------- | +| arn | string | ARN of the key pair | +| fingerprint | string | Fingerprint for the key pair | +| name | string | Name of the key pair | +| type | string | Type of key, such as RSA | +| tags | map[string]string | Tags for the key pair | +| region | string | Region where the key pair exists | +| createdAt | time | Date the keypair was created | diff --git a/docs/mql/resources/aws-pack/aws.ec2.md b/docs/mql/resources/aws-pack/aws.ec2.md new file mode 100644 index 000000000..16d9d7755 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.md @@ -0,0 +1,97 @@ +--- +title: aws.ec2 +id: aws.ec2 +sidebar_label: aws.ec2 +displayed_sidebar: MQL +description: Amazon EC2 +--- + +# aws.ec2 + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 + +Use the `aws.ec2` resource to assess the configuration of AWS EC2 instances. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| securityGroups | [][aws.ec2.securitygroup](aws.ec2.securitygroup.md) | List of security groups available to the account | +| instances | [][aws.ec2.instance](aws.ec2.instance.md) | List of instances across the AWS account (all regions) | +| ebsEncryptionByDefault | map[string]bool | map[region]boolean used to denote if ebs encryption is on by default per region | +| volumes | [][aws.ec2.volume](aws.ec2.volume.md) | List of volumes across the AWS account | +| snapshots | [][aws.ec2.snapshot](aws.ec2.snapshot.md) | List of snapshots across the account | +| internetGateways | [][aws.ec2.internetgateway](aws.ec2.internetgateway.md) | List of internet gateways | +| vpnConnections | [][aws.ec2.vpnconnection](aws.ec2.vpnconnection.md) | List of VPN connections | +| networkAcls | [][aws.ec2.networkacl](aws.ec2.networkacl.md) | List of network ACLs | +| keypairs | [][aws.ec2.keypair](aws.ec2.keypair.md) | List of keypairs for the account | + +**Examples** + +Return a list of all EC2 instances across all enabled regions in the account and the values for specified fields + +```coffee +aws.ec2.instances { + arn + instanceId + detailedMonitoring + region + publicIp + ssm + vpc + httpTokens + patchState + state + deviceMappings + securityGroups + publicDnsName + instanceStatus + stateReason + stateTransitionReason + ebsOptimized + instanceType + tags + image + launchTime +} +``` + +Return a list of security groups across every enabled region and the value for specified fields + +```coffee +aws.ec2.securityGroups { + arn + region + vpc + id +} +``` + +Return a list of all EBS volumes along with the associated ARN and the region the volume exists in + +```coffee +aws.ec2.volumes { + arn + region +} +``` + +Ensure the default security group of every VPC restricts all traffic + +```coffee +aws.ec2.securityGroups.where(name == "default") { + ipPermissions.all(ipRanges.length == 0 && ipv6Ranges.length == 0 && fromPort == 0 && toPort == 0) + ipPermissionsEgress.all(ipRanges.length == 0 && ipv6Ranges.length == 0 && fromPort == 0 && toPort == 0) +} +``` + +**References** + +- [Security in Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security.html) +- [Security in Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.ec2.networkacl.entry.md b/docs/mql/resources/aws-pack/aws.ec2.networkacl.entry.md new file mode 100644 index 000000000..c9ba94364 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.networkacl.entry.md @@ -0,0 +1,31 @@ +--- +title: aws.ec2.networkacl.entry +id: aws.ec2.networkacl.entry +sidebar_label: aws.ec2.networkacl.entry +displayed_sidebar: MQL +description: Amazon EC2 network ACL entry +--- + +# aws.ec2.networkacl.entry + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 network ACL entry + +The `aws.ec2.networkacl.entry` resource provides fields for assessing the configuration of network ACL entries within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------------------- | ----------------------------------------- | +| egress | bool | Whether this is an entry for egress rules | +| ruleAction | string | Allow or deny | +| ruleNumber | int | The rule number | +| portRange | [aws.ec2.networkacl.entry.portrange](aws.ec2.networkacl.entry.portrange.md) | Port range for the ACL entry | +| cidrBlock | string | CIDR block for the ACL entry | +| ipv6CidrBlock | string | IPv6 CIDR block for the ACL entry | +| id | string | ID for the ACL entry rule | diff --git a/docs/mql/resources/aws-pack/aws.ec2.networkacl.entry.portrange.md b/docs/mql/resources/aws-pack/aws.ec2.networkacl.entry.portrange.md new file mode 100644 index 000000000..a84419792 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.networkacl.entry.portrange.md @@ -0,0 +1,27 @@ +--- +title: aws.ec2.networkacl.entry.portrange +id: aws.ec2.networkacl.entry.portrange +sidebar_label: aws.ec2.networkacl.entry.portrange +displayed_sidebar: MQL +description: Amazon EC2 network ACL entry port range +--- + +# aws.ec2.networkacl.entry.portrange + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 network ACL entry port range + +The `aws.ec2.networkacl.portrange` resource provides fields for assessing the port range configuration of network ACL entries within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ---------------------------- | +| from | int | Starting port for port range | +| to | int | Ending port for port range | +| id | string | ID for the entry port range | diff --git a/docs/mql/resources/aws-pack/aws.ec2.networkacl.md b/docs/mql/resources/aws-pack/aws.ec2.networkacl.md new file mode 100644 index 000000000..40390b019 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.networkacl.md @@ -0,0 +1,30 @@ +--- +title: aws.ec2.networkacl +id: aws.ec2.networkacl +sidebar_label: aws.ec2.networkacl +displayed_sidebar: MQL +description: Amazon EC2 network ACL +--- + +# aws.ec2.networkacl + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 network ACL + +The `aws.ec2.networkacl` resource provides fields for assessing the configuration of VPC network ACLs within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------- | ------------------------------------------------------ | +| arn | string | ARN for the network ACL | +| id | string | ID for the network ACL | +| region | string | Region for the network ACL | +| entries | [][aws.ec2.networkacl.entry](aws.ec2.networkacl.entry.md) | Entries for the network ACL | +| isDefault | bool | Whether the ACL is the default network ACL for the VPC | +| tags | map[string]string | Tags for the network ACL | diff --git a/docs/mql/resources/aws-pack/aws.ec2.securitygroup.ippermission.md b/docs/mql/resources/aws-pack/aws.ec2.securitygroup.ippermission.md new file mode 100644 index 000000000..4ea2fb273 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.securitygroup.ippermission.md @@ -0,0 +1,30 @@ +--- +title: aws.ec2.securitygroup.ippermission +id: aws.ec2.securitygroup.ippermission +sidebar_label: aws.ec2.securitygroup.ippermission +displayed_sidebar: MQL +description: Amazon EC2 security group IP permission +--- + +# aws.ec2.securitygroup.ippermission + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 security group IP permission + +The `aws.ec2.securitygroup.ippermission` resource provides fields for assessing the configuration of ip permissions for security groups within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ---------------- | ----------------------------------------- | +| id | string | Unique ID for the IP permission | +| fromPort | int | Start of port range for TCP/UDP protocols | +| toPort | int | End of port range for TCP/UDP protocols | +| ipProtocol | string | IP protocol name | +| ipRanges | []string | IPv4 ranges | +| ipv6Ranges | []string | IPv6 ranges | diff --git a/docs/mql/resources/aws-pack/aws.ec2.securitygroup.md b/docs/mql/resources/aws-pack/aws.ec2.securitygroup.md new file mode 100644 index 000000000..de39be9e6 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.securitygroup.md @@ -0,0 +1,34 @@ +--- +title: aws.ec2.securitygroup +id: aws.ec2.securitygroup +sidebar_label: aws.ec2.securitygroup +displayed_sidebar: MQL +description: Amazon EC2 security group +--- + +# aws.ec2.securitygroup + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 security group + +The `aws.ec2.securitygroup` resource provides fields for assessing the configuration of security groups within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| arn | string | Security group ARN | +| id | string | Security group ID | +| name | string | Name of the security group | +| description | string | Description of the security group | +| tags | map[string]string | A map of tags associated with the security group | +| vpc | [aws.vpc](aws.vpc.md) | VPC associated with the security group | +| ipPermissions | [][aws.ec2.securitygroup.ippermission](aws.ec2.securitygroup.ippermission.md) | IP permissions (ingress) for the security group | +| ipPermissionsEgress | [][aws.ec2.securitygroup.ippermission](aws.ec2.securitygroup.ippermission.md) | IP permissions (egress) for the security group | +| region | string | Region associated with the security group | +| isAttachedToNetworkInterface | bool | Whether the security group is attached to Amazon Elastic Compute Cloud | diff --git a/docs/mql/resources/aws-pack/aws.ec2.snapshot.md b/docs/mql/resources/aws-pack/aws.ec2.snapshot.md new file mode 100644 index 000000000..bd1a8ed5d --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.snapshot.md @@ -0,0 +1,35 @@ +--- +title: aws.ec2.snapshot +id: aws.ec2.snapshot +sidebar_label: aws.ec2.snapshot +displayed_sidebar: MQL +description: Amazon EC2 (EBS) snapshot +--- + +# aws.ec2.snapshot + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 (EBS) snapshot + +The `aws.ec2.snapshot` resource provides fields for assessing the configuration of EBS snapshots within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ----------------- | ---------------------------------------------------------------------------- | +| arn | string | ARN for the snapshot | +| id | string | ID for the snapshot | +| region | string | Region where the snapshot exists | +| createVolumePermission | []dict | Users/groups that have the permissions to create volumes from the snapshot | +| volumeId | string | ID of the volume used to create the snapshot | +| startTime | time | Time when the snapshot was initiated | +| tags | map[string]string | Tags for the snapshot | +| state | string | State of the snapshot: pending, completed, error, recoverable, or recovering | +| volumeSize | int | The size of the volume, in GiB | +| description | string | The description of the snapshot | +| encrypted | bool | Whether the snapshot is encrypted | diff --git a/docs/mql/resources/aws-pack/aws.ec2.vgwtelemetry.md b/docs/mql/resources/aws-pack/aws.ec2.vgwtelemetry.md new file mode 100644 index 000000000..be154a3e8 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.vgwtelemetry.md @@ -0,0 +1,27 @@ +--- +title: aws.ec2.vgwtelemetry +id: aws.ec2.vgwtelemetry +sidebar_label: aws.ec2.vgwtelemetry +displayed_sidebar: MQL +description: Amazon EC2 VPN tunnel telemetry +--- + +# aws.ec2.vgwtelemetry + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 VPN tunnel telemetry + +The `aws.ec2.vgwtelemetry` resource provides fields for assessing the configuration of telemetry for VPN tunnels within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------------- | +| outsideIpAddress | string | Outside IP address | +| status | string | VPN tunnel status | +| statusMessage | string | VPN tunnel status message | diff --git a/docs/mql/resources/aws-pack/aws.ec2.volume.md b/docs/mql/resources/aws-pack/aws.ec2.volume.md new file mode 100644 index 000000000..ed9060f1c --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.volume.md @@ -0,0 +1,38 @@ +--- +title: aws.ec2.volume +id: aws.ec2.volume +sidebar_label: aws.ec2.volume +displayed_sidebar: MQL +description: Amazon EC2 (EBS) volume +--- + +# aws.ec2.volume + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 (EBS) volume + +The `aws.ec2.volume` resource provides fields for assessing the configuration of EBS volumes within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| arn | string | ARN for the EC2 volume | +| id | string | ID of the EC2 volume | +| attachments | []dict | Information about the volume attachments | +| encrypted | bool | Whether the volume is encrypted | +| state | string | State of the volume: creating, available, in-use, and so on | +| tags | map[string]string | A map of tags associated with the EBS volume | +| availabilityZone | string | Availability Zone in which the volume was created | +| volumeType | string | EBS volume type: gp2, gp3, io1, io2, st1, sc1, or standard | +| createTime | time | Time the volume was created | +| region | string | Region where the EC2 volume is stored | +| multiAttachEnabled | bool | Whether Amazon EBS Multi-Attach is enabled. | +| throughput | int | The throughput that the volume supports, in MiB/s. | +| size | int | The size of the volume, in GiBs. | +| iops | int | The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting. | diff --git a/docs/mql/resources/aws-pack/aws.ec2.vpnconnection.md b/docs/mql/resources/aws-pack/aws.ec2.vpnconnection.md new file mode 100644 index 000000000..4794179b7 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ec2.vpnconnection.md @@ -0,0 +1,26 @@ +--- +title: aws.ec2.vpnconnection +id: aws.ec2.vpnconnection +sidebar_label: aws.ec2.vpnconnection +displayed_sidebar: MQL +description: Amazon EC2 VPN connection +--- + +# aws.ec2.vpnconnection + +**Supported platform** + +- aws + +**Description** + +Amazon EC2 VPN connection + +The `aws.ec2.vpnconnection` resource provides fields for assessing the configuration of VPN connections within an AWS account. For usage, see `aws.ec2` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------------------- | ---------------------------------- | +| arn | string | ARN for the VPN connection | +| vgwTelemetry | [][aws.ec2.vgwtelemetry](aws.ec2.vgwtelemetry.md) | List of telemetry data for the VPN | diff --git a/docs/mql/resources/aws-pack/aws.ecr.image.md b/docs/mql/resources/aws-pack/aws.ecr.image.md new file mode 100644 index 000000000..d520a8aa3 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecr.image.md @@ -0,0 +1,48 @@ +--- +title: aws.ecr.image +id: aws.ecr.image +sidebar_label: aws.ecr.image +displayed_sidebar: MQL +description: AWS Elastic Container Registry image +--- + +# aws.ecr.image + +**Supported platform** + +- aws + +**Description** + +AWS Elastic Container Registry image + +Use the `aws.ecr.image` resource to assess a container image stored in an Amazon Elastic Container Registry. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ---------------- | ------------------------------------------------------------- | +| digest | string | SHA256 of the image manifest | +| mediaType | string | Type of image manifest | +| tags | []string | List of tags associated with image | +| registryId | string | AWS account ID associated with public registry for this image | +| repoName | string | Name of the repository for the image | +| region | string | Region where the ECR image is located | +| arn | string | ARN for the image | +| uri | string | uri for the image repository | + +**Examples** + +Return a list of `aws.ecr.image` resources representing the images stored in public repositories. + +```coffee +aws.ecr { + publicRepositories { + images { + digest + repoName + tags + } + } +} +``` diff --git a/docs/mql/resources/aws-pack/aws.ecr.md b/docs/mql/resources/aws-pack/aws.ecr.md new file mode 100644 index 000000000..1cd21ce68 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecr.md @@ -0,0 +1,39 @@ +--- +title: aws.ecr +id: aws.ecr +sidebar_label: aws.ecr +displayed_sidebar: MQL +description: AWS Elastic Container Registry (ECR) +--- + +# aws.ecr + +**Supported platform** + +- aws + +**Description** + +AWS Elastic Container Registry (ECR) + +The `aws.ecr` resource to assess the configuration of an Amazon Elastic Container Registry. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ----------------------------------------------------- | ----------------------------------------------------------- | +| privateRepositories | [][aws.ecr.repository](aws.ecr.repository.md) | List of private repositories | +| publicRepositories | [][aws.ecr.repository](aws.ecr.repository.md) | List of public repositories associated with the AWS account | +| images | [][aws.ecr.image](aws.ecr.image.md) | List of images | + +**Examples** + +Return a `aws.ecr` resource representing the Elastic Container Registry. + +```coffee +aws.ecr {*} +``` + +**References** + +- [Security in Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.ecr.repository.md b/docs/mql/resources/aws-pack/aws.ecr.repository.md new file mode 100644 index 000000000..928616759 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecr.repository.md @@ -0,0 +1,45 @@ +--- +title: aws.ecr.repository +id: aws.ecr.repository +sidebar_label: aws.ecr.repository +displayed_sidebar: MQL +description: AWS Elastic Container Registry repository +--- + +# aws.ecr.repository + +**Supported platform** + +- aws + +**Description** + +AWS Elastic Container Registry repository + +Use the `aws.ecr.repository` resource to assess the Amazon Elastic Container Registry repositories. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------------------------------- | ------------------------------------------------------------------ | +| arn | string | ARN of the repository | +| name | string | Name of the repository | +| uri | string | URI of the repository, used for push/pull operations | +| registryId | string | AWS Account ID associated with public registry for this repository | +| public | bool | Whether the repository is public | +| images | [][aws.ecr.image](aws.ecr.image.md) | List of images in the repository | +| region | string | Region where the image is stored | +| imageScanOnPush | bool | Repository option to scan on image push | + +**Examples** + +Return a list of `aws.ecr.repository` resources representing the public repositories. + +```coffee +aws.ecr { + publicRepositories { + name + uri + } +} +``` diff --git a/docs/mql/resources/aws-pack/aws.ecs.cluster.md b/docs/mql/resources/aws-pack/aws.ecs.cluster.md new file mode 100644 index 000000000..c6bdae6de --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecs.cluster.md @@ -0,0 +1,33 @@ +--- +title: aws.ecs.cluster +id: aws.ecs.cluster +sidebar_label: aws.ecs.cluster +displayed_sidebar: MQL +description: Amazon ECS cluster +--- + +# aws.ecs.cluster + +**Supported platform** + +- aws + +**Description** + +Amazon ECS cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------------- | ------------------------------------------------- | ------------------------------------------------------ | +| arn | string | ARN of the ECS cluster | +| name | string | Name of the ECS cluster | +| tags | map[string]string | Tags of the ECS cluster | +| runningTasksCount | int | Count of running tasks in the cluster | +| pendingTasksCount | int | Count of pending tasks in the cluster | +| registeredContainerInstancesCount | int | Count of container instances registered to the cluster | +| configuration | dict | Configuration for the cluster | +| status | string | Status of the cluster | +| tasks | [][aws.ecs.task](aws.ecs.task.md) | List of AWS ECS task definitions | +| containerInstances | [][aws.ecs.instance](aws.ecs.instance.md) | List of AWS ECS container instances | +| region | string | The region where the cluster is located | diff --git a/docs/mql/resources/aws-pack/aws.ecs.container.md b/docs/mql/resources/aws-pack/aws.ecs.container.md new file mode 100644 index 000000000..903cd9d83 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecs.container.md @@ -0,0 +1,37 @@ +--- +title: aws.ecs.container +id: aws.ecs.container +sidebar_label: aws.ecs.container +displayed_sidebar: MQL +description: Amazon ECS container +--- + +# aws.ecs.container + +**Supported platform** + +- aws + +**Description** + +Amazon ECS container + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ---------------- | ------------------------------------------------------------- | +| name | string | Name of the ECS container + IP for unique identification | +| arn | string | ARN of the ECS container | +| publicIp | string | Public IP address of the ECS container | +| image | string | Image used for the ECS container | +| clusterName | string | Cluster associated with the ECS container | +| taskDefinitionArn | string | ARN for the task definition associated with the ECS container | +| logDriver | string | logDriver setting for the ECS container | +| platformFamily | string | Platform family associated with the ECS container | +| platformVersion | string | Platform version assigned to the ECS container | +| status | string | Status of the ECS container | +| region | string | Region where the ECS Container is located | +| command | []string | Command used to start the container | +| taskArn | string | ARN for the task used to create the container | +| runtimeId | string | Runtime id for the container | +| containerName | string | Name of the ECS container | diff --git a/docs/mql/resources/aws-pack/aws.ecs.instance.md b/docs/mql/resources/aws-pack/aws.ecs.instance.md new file mode 100644 index 000000000..eaaefbcb7 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecs.instance.md @@ -0,0 +1,28 @@ +--- +title: aws.ecs.instance +id: aws.ecs.instance +sidebar_label: aws.ecs.instance +displayed_sidebar: MQL +description: AWS ECS container instance +--- + +# aws.ecs.instance + +**Supported platform** + +- aws + +**Description** + +AWS ECS container instance + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------- | ------------------------------------------------------------------------ | +| agentConnected | bool | True if agent is connected to ECS | +| id | string | ID for the container instance | +| arn | string | ARN for the container instance | +| capacityProvider | string | Capacity provider associated with the container instance | +| ec2Instance | [aws.ec2.instance](aws.ec2.instance.md) | If container instance is EC2 instance, this is the EC2 instance resource | +| region | string | Region for the container instance | diff --git a/docs/mql/resources/aws-pack/aws.ecs.md b/docs/mql/resources/aws-pack/aws.ecs.md new file mode 100644 index 000000000..a2b9293ca --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecs.md @@ -0,0 +1,25 @@ +--- +title: aws.ecs +id: aws.ecs +sidebar_label: aws.ecs +displayed_sidebar: MQL +description: Amazon Elastic Container Service (ECS) +--- + +# aws.ecs + +**Supported platform** + +- aws + +**Description** + +Amazon Elastic Container Service (ECS) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | --------------------------------------------------- | ----------------------------------- | +| clusters | [][aws.ecs.cluster](aws.ecs.cluster.md) | List of AWS ECS Clusters | +| containers | [][aws.ecs.container](aws.ecs.container.md) | List of AWS ECS Containers | +| containerInstances | [][aws.ecs.instance](aws.ecs.instance.md) | List of AWS ECS Container Instances | diff --git a/docs/mql/resources/aws-pack/aws.ecs.task.md b/docs/mql/resources/aws-pack/aws.ecs.task.md new file mode 100644 index 000000000..1b5f01fdd --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ecs.task.md @@ -0,0 +1,30 @@ +--- +title: aws.ecs.task +id: aws.ecs.task +sidebar_label: aws.ecs.task +displayed_sidebar: MQL +description: Amazon ECS task +--- + +# aws.ecs.task + +**Supported platform** + +- aws + +**Description** + +Amazon ECS task + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ---------------------------------------------- | +| arn | string | ARN of the ECS task | +| clusterName | string | Cluster associated with the ECS task | +| connectivity | dict | Connectivity status of the ECS task | +| lastStatus | string | Last reported status for the ECS task | +| platformFamily | string | Platform Family assigned to the ECS task | +| platformVersion | string | Platform Version assigned to the ECS task | +| tags | map[string]string | User-defined tags associated with the ECS task | +| containers | [][aws.ecs.container](aws.ecs.container.md) | List of AWS ECS containers | diff --git a/docs/mql/resources/aws-pack/aws.efs.filesystem.md b/docs/mql/resources/aws-pack/aws.efs.filesystem.md new file mode 100644 index 000000000..959387ed2 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.efs.filesystem.md @@ -0,0 +1,34 @@ +--- +title: aws.efs.filesystem +id: aws.efs.filesystem +sidebar_label: aws.efs.filesystem +displayed_sidebar: MQL +description: AWS Elastic File System (EFS) file system +--- + +# aws.efs.filesystem + +**Supported platform** + +- aws + +**Description** + +AWS Elastic File System (EFS) file system + +The `aws.efs.filesystem` resource provides fields for assessing the configuration of individual EFS deployments. For usage, read the `aws.efs` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------- | -------------------------------------------------------------------------- | +| name | string | Name of the file system | +| id | string | ID of the file system | +| arn | string | ARN of the file system | +| encrypted | bool | Whether or not the file system is encrypted | +| kmsKey | [aws.kms.key](aws.kms.key.md) | KMS key used for encryption of the file system | +| backupPolicy | dict | Backup policy for the file system | +| region | string | Region in which the file system exists | +| availabilityZone | string | Availability zone where the file system exists if a specific AZ is defined | +| tags | map[string]string | Tags for the file system | +| createdAt | time | Creation timestamp | diff --git a/docs/mql/resources/aws-pack/aws.efs.md b/docs/mql/resources/aws-pack/aws.efs.md new file mode 100644 index 000000000..195dad902 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.efs.md @@ -0,0 +1,53 @@ +--- +title: aws.efs +id: aws.efs +sidebar_label: aws.efs +displayed_sidebar: MQL +description: AWS Elastic File System (EFS) service +--- + +# aws.efs + +**Supported platform** + +- aws + +**Description** + +AWS Elastic File System (EFS) service + +Use the `aws.efs` resource to assess the configuration of Amazon Elastic File System deployments. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------------------------------- | --------------------------------------------- | +| filesystems | [][aws.efs.filesystem](aws.efs.filesystem.md) | A list of file systems managed by the service | + +**Examples** + +Return a list of `aws.efs.filesystem` resources representing any EFS deployments across all enabled regions in the account + +```coffee +aws.efs.filesystems { + name + id + arn + encrypted + kmsKey + backupPolicy + region +} +``` + +Check whether all EFS systems are configured to encrypt file data using KMS + +```coffee +aws.efs.filesystems.all( + encrypted == true && kmsKey.arn == /^arn:aws:kms:.*/ +) +``` + +**References** + +- [Security in Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/security-considerations.html) diff --git a/docs/mql/resources/aws-pack/aws.eks.cluster.md b/docs/mql/resources/aws-pack/aws.eks.cluster.md new file mode 100644 index 000000000..5c71eb076 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.eks.cluster.md @@ -0,0 +1,35 @@ +--- +title: aws.eks.cluster +id: aws.eks.cluster +sidebar_label: aws.eks.cluster +displayed_sidebar: MQL +description: Amazon EKS cluster +--- + +# aws.eks.cluster + +**Supported platform** + +- aws + +**Description** + +Amazon EKS cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------- | ----------------------------------------- | +| name | string | Name of the cluster | +| arn | string | ARN of the cluster | +| region | string | Region for the cluster | +| tags | map[string]string | A map of tags associated with the cluster | +| endpoint | string | The endpoint of Kubernetes API server | +| version | string | Kubernetes server version | +| platformVersion | string | Amazon EKS cluster version | +| status | string | Cluster status | +| encryptionConfig | []dict | Encryption configuration for the cluster | +| logging | dict | Cluster logging configuration | +| networkConfig | dict | Kubernetes network configuration | +| resourcesVpcConfig | dict | VPC configuration | +| createdAt | time | Cluster creation timestamp | diff --git a/docs/mql/resources/aws-pack/aws.eks.md b/docs/mql/resources/aws-pack/aws.eks.md new file mode 100644 index 000000000..5ed916ecd --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.eks.md @@ -0,0 +1,23 @@ +--- +title: aws.eks +id: aws.eks +sidebar_label: aws.eks +displayed_sidebar: MQL +description: Amazon Elastic Kubernetes Service (EKS) +--- + +# aws.eks + +**Supported platform** + +- aws + +**Description** + +Amazon Elastic Kubernetes Service (EKS) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------------------------------------- | ------------ | +| clusters | [][aws.eks.cluster](aws.eks.cluster.md) | EKS clusters | diff --git a/docs/mql/resources/aws-pack/aws.elasticache.cluster.md b/docs/mql/resources/aws-pack/aws.elasticache.cluster.md new file mode 100644 index 000000000..bde0ded23 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.elasticache.cluster.md @@ -0,0 +1,49 @@ +--- +title: aws.elasticache.cluster +id: aws.elasticache.cluster +sidebar_label: aws.elasticache.cluster +displayed_sidebar: MQL +description: Amazon ElastiCache cluster +--- + +# aws.elasticache.cluster + +**Supported platform** + +- aws + +**Description** + +Amazon ElastiCache cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| arn | string | ARN for the cluster | +| atRestEncryptionEnabled | bool | Whether the cluster has at rest encryption enabled | +| authTokenEnabled | bool | Whether Redis authentication tokens (or passwords) enable Redis to require a password before allowing clients to run commands | +| authTokenLastModifiedDate | time | Date and time authentication token was last modified | +| autoMinorVersionUpgrade | bool | Whether the cluster is configured to auto-upgrade to the next minor version (Redis 6.0 or later) | +| cacheClusterCreateTime | time | The date and time when the cluster was created | +| cacheClusterId | string | The user-supplied unique key that identifies the cluster | +| cacheClusterStatus | string | The current state of the cluster: available, creating, deleted, deleting, incompatible-network, modifying, rebooting cluster nodes, restore-failed, or snapshotting | +| cacheNodeType | string | The name of the compute and memory capacity node type for the cluster | +| cacheNodes | []string | A list of cache nodes that are members of the cluster | +| cacheSecurityGroups | []string | A list of cache security group elements, composed of name and status sub-elements | +| cacheSubnetGroupName | string | The name of the cache subnet group associated with the cluster | +| clientDownloadLandingPage | string | The URL of the web page where you can download the latest ElastiCache client library | +| nodeType | string | The node type for the nodes in the cluster | +| engine | string | The name of the cache engine used for this cluster: Memcached or Redis | +| engineVersion | string | The version of the cache engine that is used in this cluster | +| ipDiscovery | string | The network type associated with the cluster: ipv4 or ipv6 | +| logDeliveryConfigurations | []dict | The log delivery configurations being modified | +| networkType | string | The supported network connection type for the cluster: ipv4, ipv6, or dual_stack | +| notificationConfiguration | string | Describes a notification topic and its status | +| numCacheNodes | int | The number of cache nodes in the cluster | +| preferredAvailabilityZone | string | The name of the availability zone in which the cluster is located or "Multiple" if the cache nodes are located in different availability zones | +| region | string | Region where the cluster exists | +| securityGroups | [][aws.ec2.securitygroup](aws.ec2.securitygroup.md) | A list of VPC security groups associated with the cluster | +| snapshotRetentionLimit | int | The number of days for which ElastiCache retains automatic cluster snapshots before deleting them | +| transitEncryptionEnabled | bool | Whether in-transit encryption is enabled | +| transitEncryptionMode | string | Whether migrating clients to use in-transit encryption (with no downtime) is allowed | diff --git a/docs/mql/resources/aws-pack/aws.elasticache.md b/docs/mql/resources/aws-pack/aws.elasticache.md new file mode 100644 index 000000000..30303bbda --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.elasticache.md @@ -0,0 +1,40 @@ +--- +title: aws.elasticache +id: aws.elasticache +sidebar_label: aws.elasticache +displayed_sidebar: MQL +description: Amazon ElastiCache +--- + +# aws.elasticache + +**Supported platform** + +- aws + +**Description** + +Amazon ElastiCache + +Use the `aws.elasticache` resource to assess the configuration of Amazon ElastiCache. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------- | ---------------------------------------- | +| clusters | []dict | Deprecated. Use `cacheClusters` instead. | +| cacheClusters | [][aws.elasticache.cluster](aws.elasticache.cluster.md) | List of clusters | + +**Examples** + +Check if the ElastiCache Redis clusters have automatic backup turned on + +```coffee +aws.elasticache.clusters.all( + _['SnapshotRetentionLimit'] > _['SnapshotRetentionPeriod'] +) +``` + +**References** + +- [Security in Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/redis-security.html) diff --git a/docs/mql/resources/aws-pack/aws.elb.loadbalancer.md b/docs/mql/resources/aws-pack/aws.elb.loadbalancer.md new file mode 100644 index 000000000..5f83cd15f --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.elb.loadbalancer.md @@ -0,0 +1,32 @@ +--- +title: aws.elb.loadbalancer +id: aws.elb.loadbalancer +sidebar_label: aws.elb.loadbalancer +displayed_sidebar: MQL +description: AWS Elastic Load Balancing load balancer +--- + +# aws.elb.loadbalancer + +**Supported platform** + +- aws + +**Description** + +AWS Elastic Load Balancing load balancer + +The `aws.elb.loadbalancer` resource provides fields for assessing the configuration of individual classic, application, gateway, and network Amazon Elastic Load Balancers. For usage, read the `aws.elb` documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | -------------- | ----------------------------------------------------- | +| arn | string | ARN for the load balancer | +| dnsName | string | DNS name for the load balancer | +| listenerDescriptions | []dict | List of listener configurations for the load balancer | +| name | string | User specified name for the load balancer | +| scheme | string | Scheme for the lb: internet-facing or internal | +| attributes | []dict | A list of attributes for the load balancer | +| vpcId | string | The ID of the VPC where the load balancer is located | +| createdTime | time | Date and time when the load balancer was created | diff --git a/docs/mql/resources/aws-pack/aws.elb.md b/docs/mql/resources/aws-pack/aws.elb.md new file mode 100644 index 000000000..7cd0ad61b --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.elb.md @@ -0,0 +1,74 @@ +--- +title: aws.elb +id: aws.elb +sidebar_label: aws.elb +displayed_sidebar: MQL +description: AWS Elastic Load Balancing +--- + +# aws.elb + +**Supported platform** + +- aws + +**Description** + +AWS Elastic Load Balancing + +Use the `aws.elb` resource to assess the configuration of Amazon Elastic Load Balancers within an AWS account. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | --------------------------------------------------------- | ---------------------------------------------------------------- | +| classicLoadBalancers | [][aws.elb.loadbalancer](aws.elb.loadbalancer.md) | List of classic load balancers | +| loadBalancers | [][aws.elb.loadbalancer](aws.elb.loadbalancer.md) | List of application, gateway, and network load balancers (elbv2) | + +**Examples** + +Return a list of all application, gateway, and network Elastic Load Balancers deployed across every enabled region and the values for specified fields + +```coffee +aws.elb.loadbalancers { + arn + dnsName + listenerDescriptions + name + scheme + attributes +} +``` + +Return a list of all classic Elastic Load Balancers deployed across every enabled region and the values for specified fields + +```coffee +aws.elb.classicLoadBalancers { + arn + dnsName + listenerDescriptions + name + scheme + attributes +} +``` + +Check whether HTTP to HTTPS redirection is configured on all application load balancer http listeners + +```coffee +aws.elb.loadBalancers.all( listenerDescriptions.any ( + _['Protocol'] == "HTTPS" || _['Protocol'] == "SSL" ) +) +``` + +Check that all Classic Load Balancers use SSL certificates provided by AWS Cert Mgr + +```coffee +aws.elb.classicLoadBalancers.all( listenerDescriptions.any ( + _['Listener']['Protocol'] == "HTTPS" || _['Listener']['Protocol'] == "SSL" ) +) +``` + +**References** + +- [Security in Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.emr.cluster.md b/docs/mql/resources/aws-pack/aws.emr.cluster.md new file mode 100644 index 000000000..3b33fff1d --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.emr.cluster.md @@ -0,0 +1,32 @@ +--- +title: aws.emr.cluster +id: aws.emr.cluster +sidebar_label: aws.emr.cluster +displayed_sidebar: MQL +description: Amazon EMR cluster +--- + +# aws.emr.cluster + +**Supported platform** + +- aws + +**Description** + +Amazon EMR cluster + +The `aws.emr.cluster` resource provides fields for assessing the configuration of individual Amazon EMR clusters. For usage, read the `aws.emr` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ----------------- | -------------------------------------------------------------------------- | +| arn | string | ARN for the cluster | +| name | string | Name of the cluster | +| normalizedInstanceHours | int | An approximation of the cost of the cluster, represented in m1.small/hours | +| outpostArn | string | ARN of outpost where cluster is launched | +| status | dict | Details about the current status of the cluster | +| masterInstances | []dict | List of master instances for the cluster | +| id | string | EMR cluster ID | +| tags | map[string]string | Tags for the cluster | diff --git a/docs/mql/resources/aws-pack/aws.emr.md b/docs/mql/resources/aws-pack/aws.emr.md new file mode 100644 index 000000000..0d0e466f1 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.emr.md @@ -0,0 +1,53 @@ +--- +title: aws.emr +id: aws.emr +sidebar_label: aws.emr +displayed_sidebar: MQL +description: Amazon EMR +--- + +# aws.emr + +**Supported platform** + +- aws + +**Description** + +Amazon EMR + +Use the `aws.emr` resource to assess the configuration of Amazon EMR clusters. This resource provides a list of `aws.emr.cluster` resources representing EMR clusters deployed across all enabled regions. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------------------------------------- | -------------------- | +| clusters | [][aws.emr.cluster](aws.emr.cluster.md) | List of EMR clusters | + +**Examples** + +Return a list of EMR clusters deployed across all enabled regions and the value for specified fields + +```coffee +aws.emr.clusters { + arn + name + normalizedInstanceHours + outpostArn + status + masterInstances + id +} +``` + +Check whether EMR cluster master nodes have public ips + +```coffee +aws.emr.clusters.all( + masterInstances { _['PublicIpAddress'] == null } +) +``` + +**References** + +- [Security in Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security.html) diff --git a/docs/mql/resources/aws-pack/aws.es.domain.md b/docs/mql/resources/aws-pack/aws.es.domain.md new file mode 100644 index 000000000..c6584ef40 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.es.domain.md @@ -0,0 +1,34 @@ +--- +title: aws.es.domain +id: aws.es.domain +sidebar_label: aws.es.domain +displayed_sidebar: MQL +description: Amazon Elasticsearch service domain +--- + +# aws.es.domain + +**Supported platform** + +- aws + +**Description** + +Amazon Elasticsearch service domain + +The `aws.es.domain` provides fields for assessing the configuration of individual Amazon Elasticsearch domains. For usage, read the `aws.es` resource documentation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | ----------------- | -------------------------------------------------- | +| arn | string | ARN for the Elasticsearch domain | +| encryptionAtRestEnabled | bool | Whether encryption at rest is enabled | +| nodeToNodeEncryptionEnabled | bool | Denoted whether node to node encryption is enabled | +| name | string | Name of the Elasticsearch domain | +| endpoint | string | Endpoint used to submit index and search requests | +| region | string | Region where the domain exists | +| tags | map[string]string | Tags for the domain | +| elasticsearchVersion | string | The version of Elasticsearch running | +| domainId | string | The Elasticsearch domain ID | +| domainName | string | The Elasticsearch domain name | diff --git a/docs/mql/resources/aws-pack/aws.es.md b/docs/mql/resources/aws-pack/aws.es.md new file mode 100644 index 000000000..fca7a909b --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.es.md @@ -0,0 +1,29 @@ +--- +title: aws.es +id: aws.es +sidebar_label: aws.es +displayed_sidebar: MQL +description: AWS Elasticsearch service +--- + +# aws.es + +**Supported platform** + +- aws + +**Description** + +AWS Elasticsearch service + +Use the `aws.es` resource to assess the configuration of Amazon Elasticsearch domains. This resource provides a list of `aws.es.domain` resources representing Elasticsearch domains deployed across all enabled regions. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------------------------- | ----------------------------- | +| domains | [][aws.es.domain](aws.es.domain.md) | List of Elasticsearch domains | + +**References** + +- [Amazon Security Blog on Elasticsearch](https://aws.amazon.com/blogs/security/tag/amazon-elasticsearch-service/) diff --git a/docs/mql/resources/aws-pack/aws.guardduty.detector.md b/docs/mql/resources/aws-pack/aws.guardduty.detector.md new file mode 100644 index 000000000..2209bf8e4 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.guardduty.detector.md @@ -0,0 +1,29 @@ +--- +title: aws.guardduty.detector +id: aws.guardduty.detector +sidebar_label: aws.guardduty.detector +displayed_sidebar: MQL +description: Amazon GuardDuty detector +--- + +# aws.guardduty.detector + +**Supported platform** + +- aws + +**Description** + +Amazon GuardDuty detector + +The `aws.guardduty.detector` provides fields for assessing the configuration of individual Amazon GuardDuty Detectors. For usage, read the `aws.guardduty` resource documentation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | -------------- | ------------------------------------------------ | +| id | string | Unique ID for the detector | +| region | string | Region for the detector | +| status | string | Status of the detector: ENABLED or DISABLED | +| findingPublishingFrequency | string | Publishing frequency for the detector | +| unarchivedFindings | []dict | List of unarchivedFindings found by the detector | diff --git a/docs/mql/resources/aws-pack/aws.guardduty.md b/docs/mql/resources/aws-pack/aws.guardduty.md new file mode 100644 index 000000000..c614b6e8c --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.guardduty.md @@ -0,0 +1,49 @@ +--- +title: aws.guardduty +id: aws.guardduty +sidebar_label: aws.guardduty +displayed_sidebar: MQL +description: Amazon GuardDuty for threat detection +--- + +# aws.guardduty + +**Supported platform** + +- aws + +**Description** + +Amazon GuardDuty for threat detection + +Use the `aws.guardduty` resource to assess the configuration of the AWS GuardDuty service. The resource provides a list of `aws.guardduty.detector` resources representing GuardDuty Detectors deployed across all enabled regions. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------------------------------------- | --------------------------- | +| detectors | [][aws.guardduty.detector](aws.guardduty.detector.md) | List of GuardDuty detectors | + +**Examples** + +Return a list of Amazon GuardDuty Detectors along with the values for specified fields + +```coffee +aws.guardduty.detectors { + id + region + status + findingPublishingFrequency + unarchivedFindings +} +``` + +Check that guardduty is enabled in all regions + +```coffee +aws.guardduty.detectors.all( status == "ENABLED" ) +``` + +**References** + +- [Security in Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/security.html) diff --git a/docs/mql/resources/aws-pack/aws.iam.group.md b/docs/mql/resources/aws-pack/aws.iam.group.md new file mode 100644 index 000000000..5160bf47d --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.group.md @@ -0,0 +1,29 @@ +--- +title: aws.iam.group +id: aws.iam.group +sidebar_label: aws.iam.group +displayed_sidebar: MQL +description: AWS IAM group +--- + +# aws.iam.group + +**Supported platform** + +- aws + +**Description** + +AWS IAM group + +The `aws.iam.group` provides fields for assessing the configuration of IAM Groups. For usage, read the `aws.iam` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ---------------- | ------------------------------------------ | +| arn | string | ARN of the group | +| id | string | ID of the group | +| name | string | Name of the group | +| createDate | time | Time when the group was created | +| usernames | []string | List of usernames that belong to the group | diff --git a/docs/mql/resources/aws-pack/aws.iam.loginprofile.md b/docs/mql/resources/aws-pack/aws.iam.loginprofile.md new file mode 100644 index 000000000..5f1ef03b9 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.loginprofile.md @@ -0,0 +1,23 @@ +--- +title: aws.iam.loginProfile +id: aws.iam.loginProfile +sidebar_label: aws.iam.loginProfile +displayed_sidebar: MQL +description: AWS IAM login profile for a user +--- + +# aws.iam.loginProfile + +**Supported platform** + +- aws + +**Description** + +AWS IAM login profile for a user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ---- | --------------------------------------- | +| createdAt | time | Time when the login profile was created | diff --git a/docs/mql/resources/aws-pack/aws.iam.md b/docs/mql/resources/aws-pack/aws.iam.md new file mode 100644 index 000000000..4a86e3316 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.md @@ -0,0 +1,81 @@ +--- +title: aws.iam +id: aws.iam +sidebar_label: aws.iam +displayed_sidebar: MQL +description: AWS service to create and manage permissions for users and groups +--- + +# aws.iam + +**Supported platform** + +- aws + +**Description** + +AWS service to create and manage permissions for users and groups + +Use the `aws.iam` resource to assess the configuration of the AWS IAM service. The resource provides a list of `aws.iam.user` resources representing GuardDuty Detectors deployed across all enabled regions. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------- | +| users | [][aws.iam.user](aws.iam.user.md) | List of IAM users in the account | +| roles | [][aws.iam.role](aws.iam.role.md) | List of IAM roles in the account | +| groups | [][aws.iam.group](aws.iam.group.md) | List of IAM groups in the account | +| policies | [][aws.iam.policy](aws.iam.policy.md) | List of IAM policies in the account | +| attachedPolicies | [][aws.iam.policy](aws.iam.policy.md) | List of IAM policies attached to a user, role, or group | +| credentialReport | [][aws.iam.usercredentialreportentry](aws.iam.usercredentialreportentry.md) | IAM credential report | +| accountPasswordPolicy | dict | IAM account password policy for the account | +| accountSummary | map[string]int | IAM account summary | +| virtualMfaDevices | [][aws.iam.virtualmfadevice](aws.iam.virtualmfadevice.md) | List of virtual mfs devices associated with the account | +| serverCertificates | []dict | List of server certificates stored in IAM | + +**Examples** + +Return a list of `aws.iam.user` resources representing IAM users in the account and specified fields + +```coffee +aws.iam.users { + users + roles + groups + policies + attachedPolicies + accountSummary + virtualMfaDevices + serverCertificates +} +``` + +Return a list of users that do not have MFA configured along with the ARN, name, and associated IAM Groups + +```coffee +aws.iam.credentialReport.where(mfaActive == false) { + user { + arn + name + groups + } +} +``` + +Do not setup access keys during initial user setup for all IAM users that have a console password + +```coffee +aws.iam.credentialReport. + where( + passwordEnabled && + accessKey1Active && + userCreationTime < time.today + ). + all( + accessKey1LastUsedDate != null + ) +``` + +**References** + +- [Security in IAM and AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.iam.policy.md b/docs/mql/resources/aws-pack/aws.iam.policy.md new file mode 100644 index 000000000..0adeb55c4 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.policy.md @@ -0,0 +1,38 @@ +--- +title: aws.iam.policy +id: aws.iam.policy +sidebar_label: aws.iam.policy +displayed_sidebar: MQL +description: AWS IAM policy +--- + +# aws.iam.policy + +**Supported platform** + +- aws + +**Description** + +AWS IAM policy + +The `aws.iam.policy` provides fields for assessing the configuration of individual IAM Policies. For usage, read the `aws.iam` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------ | +| arn | string | ARN of the policy | +| id | string | ID of the policy | +| name | string | Name of the policy | +| description | string | Description of the policy | +| isAttachable | bool | Denotes if the policy can be attached | +| attachmentCount | int | The number of principal entities (users, groups, and roles) that the policy is attached to | +| createDate | time | Time when the policy was created | +| updateDate | time | Time when the policy was updated | +| scope | string | Scope of the policy | +| versions | [][aws.iam.policyversion](aws.iam.policyversion.md) | List of versions for the policy | +| defaultVersion | [aws.iam.policyversion](aws.iam.policyversion.md) | Default version of the policy | +| attachedUsers | [][aws.iam.user](aws.iam.user.md) | List of users attached to the policy | +| attachedRoles | [][aws.iam.role](aws.iam.role.md) | List of roles attached to the policy | +| attachedGroups | [][aws.iam.group](aws.iam.group.md) | List of groups attached to the policy | diff --git a/docs/mql/resources/aws-pack/aws.iam.policyversion.md b/docs/mql/resources/aws-pack/aws.iam.policyversion.md new file mode 100644 index 000000000..69f85a6da --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.policyversion.md @@ -0,0 +1,29 @@ +--- +title: aws.iam.policyversion +id: aws.iam.policyversion +sidebar_label: aws.iam.policyversion +displayed_sidebar: MQL +description: AWS IAM policy version +--- + +# aws.iam.policyversion + +**Supported platform** + +- aws + +**Description** + +AWS IAM policy version + +The `aws.iam.policyversion` provides fields for assessing the metadata for IAM Policy versions. For usage, read the `aws.iam` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ----------------------------------------------------- | +| arn | string | ARN of the policy version | +| versionId | string | Version ID | +| isDefaultVersion | bool | Denotes if this version is the policy default version | +| document | dict | JSON statements for this policy version | +| createDate | time | Time when this policy version was created | diff --git a/docs/mql/resources/aws-pack/aws.iam.role.md b/docs/mql/resources/aws-pack/aws.iam.role.md new file mode 100644 index 000000000..1abd8e5c9 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.role.md @@ -0,0 +1,30 @@ +--- +title: aws.iam.role +id: aws.iam.role +sidebar_label: aws.iam.role +displayed_sidebar: MQL +description: AWS IAM role +--- + +# aws.iam.role + +**Supported platform** + +- aws + +**Description** + +AWS IAM role + +The `aws.iam.role` provides fields for assessing the configuration of individual IAM Roles. For usage, read the `aws.iam` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------- | ------------------------------ | +| arn | string | ARN of the role | +| id | string | ID of the role | +| name | string | Name of the role | +| description | string | Description of the role | +| tags | map[string]string | Tags associated with the role | +| createDate | time | Time when the role was created | diff --git a/docs/mql/resources/aws-pack/aws.iam.user.md b/docs/mql/resources/aws-pack/aws.iam.user.md new file mode 100644 index 000000000..1d9cfb550 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.user.md @@ -0,0 +1,35 @@ +--- +title: aws.iam.user +id: aws.iam.user +sidebar_label: aws.iam.user +displayed_sidebar: MQL +description: AWS IAM user +--- + +# aws.iam.user + +**Supported platform** + +- aws + +**Description** + +AWS IAM user + +The `aws.iam.user` provides fields for assessing the configuration of individual IAM users. For usage, read the `aws.iam` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------------------------- | ----------------------------------------------------- | +| arn | string | ARN of the IAM user | +| id | string | ID of the IAM user | +| name | string | Name of the user | +| createDate | time | Time when user was created | +| passwordLastUsed | time | Time when password was last used | +| tags | map[string]string | Tags for the IAM user | +| policies | []string | List of inline policies attached to the user | +| attachedPolicies | [][aws.iam.policy](aws.iam.policy.md) | List of managed policies attached to the user | +| groups | []string | List of group ARNs that the user belongs to | +| accessKeys | []dict | List of access keys metadata associated with the user | +| loginProfile | [aws.iam.loginProfile](aws.iam.loginprofile.md) | Login profile for the user | diff --git a/docs/mql/resources/aws-pack/aws.iam.usercredentialreportentry.md b/docs/mql/resources/aws-pack/aws.iam.usercredentialreportentry.md new file mode 100644 index 000000000..950923aaf --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.usercredentialreportentry.md @@ -0,0 +1,51 @@ +--- +title: aws.iam.usercredentialreportentry +id: aws.iam.usercredentialreportentry +sidebar_label: aws.iam.usercredentialreportentry +displayed_sidebar: MQL +description: Entry in AWS IAM credential report +--- + +# aws.iam.usercredentialreportentry + +**Supported platform** + +- aws + +**Description** + +Entry in AWS IAM credential report + +The `aws.iam.credentialreportentry` provides fields for assessing the metadata for individual IAM Credential Report entries. For usage, read the `aws.iam` resource documentation. + +**Init** + +aws.iam.usercredentialreportentry(properties map[string]string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ------------------------------- | -------------------------------------------- | +| properties | map[string]string | properties on the IAM user credential report | +| arn | string | ARN for the credential report | +| accessKey1Active | bool | Denotes if the access key is active | +| accessKey1LastRotated | time | Time when key was last rotated | +| accessKey1LastUsedDate | time | Time when key was last used | +| accessKey1LastUsedRegion | string | Region in which the key was last used | +| accessKey1LastUsedService | string | Service that last used the key | +| accessKey2Active | bool | Denotes if the access key is active | +| accessKey2LastRotated | time | Time when key was last rotated | +| accessKey2LastUsedDate | time | Time when key was last used | +| accessKey2LastUsedRegion | string | Region in which the key was last used | +| accessKey2LastUsedService | string | Service that last used the key | +| cert1Active | bool | Denotes if the cert is active | +| cert1LastRotated | time | Time when the cert was last rotated | +| cert2Active | bool | Denotes if the cert is active | +| cert2LastRotated | time | Time when the cert was last rotated | +| mfaActive | bool | Denotes if mfa is active in the account | +| passwordEnabled | bool | Whether passwords are enabled | +| passwordLastChanged | time | Time when the password was last changed | +| passwordLastUsed | time | Time when the password was last used | +| passwordNextRotation | time | Next time when the password should rotate | +| user | [aws.iam.user](aws.iam.user.md) | IAM user | +| userCreationTime | time | Time when user was created | diff --git a/docs/mql/resources/aws-pack/aws.iam.virtualmfadevice.md b/docs/mql/resources/aws-pack/aws.iam.virtualmfadevice.md new file mode 100644 index 000000000..5551c552a --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.iam.virtualmfadevice.md @@ -0,0 +1,27 @@ +--- +title: aws.iam.virtualmfadevice +id: aws.iam.virtualmfadevice +sidebar_label: aws.iam.virtualmfadevice +displayed_sidebar: MQL +description: AWS IAM virtual MFA device +--- + +# aws.iam.virtualmfadevice + +**Supported platform** + +- aws + +**Description** + +AWS IAM virtual MFA device + +The `aws.iam.virtualmfadevice` provides fields for assessing the metadata for individual virtual MFA devices associated with IAM users. For usage, read the `aws.iam` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------------------------------- | ------------------------------------ | +| serialNumber | string | Serial number for the MFA device | +| enableDate | time | Time when the MFA device was enabled | +| user | [aws.iam.user](aws.iam.user.md) | User associated with the MFA device | diff --git a/docs/mql/resources/aws-pack/aws.kms.key.md b/docs/mql/resources/aws-pack/aws.kms.key.md new file mode 100644 index 000000000..b98d99e65 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.kms.key.md @@ -0,0 +1,29 @@ +--- +title: aws.kms.key +id: aws.kms.key +sidebar_label: aws.kms.key +displayed_sidebar: MQL +description: AWS Key Management Service (KMS) key +--- + +# aws.kms.key + +**Supported platform** + +- aws + +**Description** + +AWS Key Management Service (KMS) key + +The `aws.kms.key` provides fields for assessing the configuration of individual KMS keys. For usage, read the `aws.kms` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------ | --------------------------------------------------- | +| id | string | Unique identifier for the key | +| arn | string | ARN of the key | +| region | string | Region the key lives in | +| keyRotationEnabled | bool | Bool that specifies whether key rotation is enabled | +| metadata | dict | Metadata for the key | diff --git a/docs/mql/resources/aws-pack/aws.kms.md b/docs/mql/resources/aws-pack/aws.kms.md new file mode 100644 index 000000000..059c698ce --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.kms.md @@ -0,0 +1,33 @@ +--- +title: aws.kms +id: aws.kms +sidebar_label: aws.kms +displayed_sidebar: MQL +description: AWS Key Management Service (KMS) +--- + +# aws.kms + +**Supported platform** + +- aws + +**Description** + +AWS Key Management Service (KMS) + +Use the `aws.kms` resource to assess the configuration of AWS KMS keys. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | --------------------------------------- | ------------------------------------------------------------------------------------------ | +| keys | [][aws.kms.key](aws.kms.key.md) | A list of all customer master keys (CMKs) in the caller's AWS account (across all regions) | + +**Examples** + +Ensure rotation for customer created CMKs is enabled + +```coffee +aws.kms.keys.where( metadata['KeyState'] == "Enabled" ).all( keyRotationEnabled == true ) +``` diff --git a/docs/mql/resources/aws-pack/aws.lambda.function.md b/docs/mql/resources/aws-pack/aws.lambda.function.md new file mode 100644 index 000000000..8cb92fe10 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.lambda.function.md @@ -0,0 +1,33 @@ +--- +title: aws.lambda.function +id: aws.lambda.function +sidebar_label: aws.lambda.function +displayed_sidebar: MQL +description: AWS Lambda function +--- + +# aws.lambda.function + +**Supported platform** + +- aws + +**Description** + +AWS Lambda function + +The `aws.lambda.function` provides fields for assessing the configuration of individual AWS Lambda functions. For usage, read the `aws.lambda` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------- | ------------------------------------------ | +| arn | string | ARN of the function | +| name | string | Name of the function | +| runtime | string | Runtime environment for the function | +| concurrency | int | Concurrency limit for the function | +| dlqTargetArn | string | Target ARN of the dead-letter queue config | +| policy | dict | Policy for the function | +| vpcConfig | dict | VPC configuration for the lambda function | +| region | string | Region where the function exists | +| tags | map[string]string | Tags for the function | diff --git a/docs/mql/resources/aws-pack/aws.lambda.md b/docs/mql/resources/aws-pack/aws.lambda.md new file mode 100644 index 000000000..1bbb6dd96 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.lambda.md @@ -0,0 +1,25 @@ +--- +title: aws.lambda +id: aws.lambda +sidebar_label: aws.lambda +displayed_sidebar: MQL +description: AWS Lambda +--- + +# aws.lambda + +**Supported platform** + +- aws + +**Description** + +AWS Lambda + +Use the `aws.lambda` resource to assess the configuration of AWS Lambda. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------------------------------- | ---------------------------------------------------------- | +| functions | [][aws.lambda.function](aws.lambda.function.md) | List of lambda functions across all regions in the account | diff --git a/docs/mql/resources/aws-pack/aws.md b/docs/mql/resources/aws-pack/aws.md new file mode 100644 index 000000000..f13f43326 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.md @@ -0,0 +1,65 @@ +--- +title: aws +id: aws +sidebar_label: aws +displayed_sidebar: MQL +description: AWS resource +--- + +# aws + +**Supported platform** + +- aws + +**Description** + +AWS resource + +Use the `aws` resource to assess the configuration of AWS accounts. It features the `aws.regions` field, which returns a list of enabled AWS regions in the account, and the `aws.vpcs` field, which provides a list of VPCs configured within the account. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------------- | ----------------------------------------------------------------------------------------- | +| vpcs | [][aws.vpc](aws.vpc.md) | List of `aws.vpc` objects representing all VPCs in the account across all enabled regions | +| regions | []string | List of all enabled regions in the account | + +**Examples** + +List all enabled regions within the AWS account + +```coffee +aws.regions +``` + +List of `aws.vpc` resources for all VPCs across all enabled regions + +```coffee +aws.vpcs +``` + +List of `aws.vpc` resources for all VPCs across all enabled regions and the values for specified fields + +```coffee +aws.vpcs { + arn + id + state + isDefault + region + flowLogs + routeTables +} +``` + +Ensure VPC flow logging is enabled in all VPCs + +```coffee +aws.vpcs.all( flowLogs.any(status == "ACTIVE") ) +``` + +**References** + +- [AWS Documentation: Managing AWS Regions](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) +- [AWS Documentation: Security in Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/security.html) diff --git a/docs/mql/resources/aws-pack/aws.organization.md b/docs/mql/resources/aws-pack/aws.organization.md new file mode 100644 index 000000000..f2462e340 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.organization.md @@ -0,0 +1,26 @@ +--- +title: aws.organization +id: aws.organization +sidebar_label: aws.organization +displayed_sidebar: MQL +description: AWS Organization resource +--- + +# aws.organization + +**Supported platform** + +- aws + +**Description** + +AWS Organization resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------ | ------------------------------------------------------------------------- | +| arn | string | ARN of the organization | +| featureSet | string | Specifies the functionality available to org: ALL or CONSOLIDATED_BILLING | +| masterAccountId | string | ID of the organization's master account | +| masterAccountEmail | string | Email owner of the organization's master account | diff --git a/docs/mql/resources/aws-pack/aws.rds.dbcluster.md b/docs/mql/resources/aws-pack/aws.rds.dbcluster.md new file mode 100644 index 000000000..1a690f651 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.rds.dbcluster.md @@ -0,0 +1,48 @@ +--- +title: aws.rds.dbcluster +id: aws.rds.dbcluster +sidebar_label: aws.rds.dbcluster +displayed_sidebar: MQL +description: Amazon RDS database cluster +--- + +# aws.rds.dbcluster + +**Supported platform** + +- aws + +**Description** + +Amazon RDS database cluster + +The `aws.rds.dbcluster` provides fields for assessing the configuration of AWS RDS Clusters. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------------- | +| arn | string | ARN for the database cluster | +| region | string | Region where the database cluster exists | +| id | string | Identifier for the database cluster | +| members | [][aws.rds.dbinstance](aws.rds.dbinstance.md) | List of database instances that belong to the cluster | +| snapshots | [][aws.rds.snapshot](aws.rds.snapshot.md) | List of snapshots for the cluster | +| tags | map[string]string | Tags for the database cluster | +| storageEncrypted | bool | Whether the cluster is encrypted | +| storageAllocated | int | The amount of storage, in GiB, provisioned on the cluster | +| storageIops | int | The storage IOPS provisioned on the cluster | +| storageType | string | The type of storage provisioned on the cluster | +| status | string | Current state of the cluster | +| createdTime | time | The creation date of the RDS cluster | +| backupRetentionPeriod | int | Number of days for which automated snapshots are retained | +| autoMinorVersionUpgrade | bool | Whether minor version patches are applied automatically | +| clusterDbInstanceClass | string | Name of the compute and memory capacity class of the Cluster DB instances | +| engine | string | Name of the database engine for this DB cluster | +| engineVersion | string | The version of the database engine for this DB cluster | +| publiclyAccessible | bool | Whether the cluster is publicly accessible | +| multiAZ | bool | Whether the cluster is a Multi-AZ deployment | +| deletionProtection | bool | Whether deletion protection is enabled | +| securityGroups | [][aws.ec2.securitygroup](aws.ec2.securitygroup.md) | List of VPC security group elements that the DB cluster belongs to | +| availabilityZones | []string | List of Availability Zones (AZs) where instances in the DB cluster can be created | +| port | int | The port that the database engine is listening on | +| endpoint | string | The connection endpoint for the primary instance of the DB cluster | diff --git a/docs/mql/resources/aws-pack/aws.rds.dbinstance.md b/docs/mql/resources/aws-pack/aws.rds.dbinstance.md new file mode 100644 index 000000000..df75353f1 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.rds.dbinstance.md @@ -0,0 +1,51 @@ +--- +title: aws.rds.dbinstance +id: aws.rds.dbinstance +sidebar_label: aws.rds.dbinstance +displayed_sidebar: MQL +description: Amazon RDS database instance +--- + +# aws.rds.dbinstance + +**Supported platform** + +- aws + +**Description** + +Amazon RDS database instance + +The `aws.rds.dbinstance` provides fields for assessing the configuration of RDS instances. For usage, read the `aws.rds` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| arn | string | ARN for the database instance | +| name | string | Name of the database instance | +| backupRetentionPeriod | int | Number of days for which automated snapshots are retained | +| snapshots | [][aws.rds.snapshot](aws.rds.snapshot.md) | List of snapshots for the database instance | +| storageEncrypted | bool | Whether the instance is encrypted | +| storageAllocated | int | The amount of storage, in GiB, provisioned on the instance | +| storageIops | int | The storage IOPS provisioned on the instance | +| storageType | string | The type of storage provisioned on the instance | +| region | string | Region where the instance exists | +| availabilityZone | string | Availability zone where the instance exists | +| publiclyAccessible | bool | Whether the instance is publicly accessible | +| enabledCloudwatchLogsExports | []string | List of log types the instance is configured to export to CloudWatch logs | +| deletionProtection | bool | Whether deletion protection is enabled | +| multiAZ | bool | Whether the instance is a Multi-AZ deployment | +| id | string | Identifier for the database instance | +| enhancedMonitoringResourceArn | string | ARN of the CloudWatch log stream that receives the enhanced monitoring metrics data | +| tags | map[string]string | Tags for the database instance | +| dbInstanceClass | string | Name of the compute and memory capacity class of the DB instance | +| dbInstanceIdentifier | string | User-supplied unique key that identifies a DB instance | +| engine | string | Name of the database engine for this DB instance | +| engineVersion | string | The version of the database engine for this DB instance | +| securityGroups | [][aws.ec2.securitygroup](aws.ec2.securitygroup.md) | List of VPC security group elements that the DB instance belongs to | +| status | string | Current state of this database | +| autoMinorVersionUpgrade | bool | Whether minor version patches are applied automatically | +| createdTime | time | The creation date of the RDS instance | +| port | int | The port that the DB instance listens on. If the DB instance is part of a DB cluster, this can be a different port than the DB cluster port. | +| endpoint | string | The connection endpoint for the DB instance | diff --git a/docs/mql/resources/aws-pack/aws.rds.md b/docs/mql/resources/aws-pack/aws.rds.md new file mode 100644 index 000000000..0ead4393d --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.rds.md @@ -0,0 +1,50 @@ +--- +title: aws.rds +id: aws.rds +sidebar_label: aws.rds +displayed_sidebar: MQL +description: Amazon Relational Database Service (RDS) +--- + +# aws.rds + +**Supported platform** + +- aws + +**Description** + +Amazon Relational Database Service (RDS) + +Use the `aws.rds` resource to assess the configuration of AWS RDS deployments. The resource returns lists of `aws.rds.dbcluster`, `aws.rds.dbinstance`, and `aws.rds.snapshot` resources, each with fields for assessing the configuration of those assets. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------------------------------- | ----------------------------- | +| dbInstances | [][aws.rds.dbinstance](aws.rds.dbinstance.md) | List of database instances | +| dbClusters | [][aws.rds.dbcluster](aws.rds.dbcluster.md) | List of RDS database clusters | + +**Examples** + +Check whether RDS DB instances have backups enabled + +```coffee +aws.rds.dbInstances.all(snapshots.length > 0) +``` + +Check whether high availability is enabled for all rds instances + +```coffee +aws.rds.dbInstances.all(multiAZ == true) +``` + +Return a list of RDS Clusters across all regions where snapshots are not encrypted and return the `arn` `region` and `id` for the cluster + +```coffee +aws.rds.dbClusters { snapshots.where( encrypted == false) } { arn region id } +``` + +**References** + +- [Security in Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.html) diff --git a/docs/mql/resources/aws-pack/aws.rds.snapshot.md b/docs/mql/resources/aws-pack/aws.rds.snapshot.md new file mode 100644 index 000000000..5d12cd951 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.rds.snapshot.md @@ -0,0 +1,38 @@ +--- +title: aws.rds.snapshot +id: aws.rds.snapshot +sidebar_label: aws.rds.snapshot +displayed_sidebar: MQL +description: Amazon RDS snapshot +--- + +# aws.rds.snapshot + +**Supported platform** + +- aws + +**Description** + +Amazon RDS snapshot + +The `aws.rds.snapshot` provides fields for assessing the configuration of RDS snapshots. For usage, read the `aws.rds` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------- | ------------------------------------------------------------------ | +| arn | string | ARN of the snapshot | +| id | string | ID of the snapshot | +| attributes | []dict | Attribute values that describe permissions to restore the snapshot | +| type | string | Type of snapshot: manual or automated | +| encrypted | bool | Whether the snapshot is encrypted | +| region | string | Region where the snapshot exists | +| isClusterSnapshot | bool | Whether the snapshot is for a cluster | +| tags | map[string]string | Tags for the snapshot | +| engine | string | The snapshot DB engine | +| engineVersion | string | The snapshot DB engine version | +| status | string | The snapshot status | +| allocatedStorage | int | The amount of storage allocated to the snapshot | +| port | int | The port that the DB instance or cluster listens on | +| createdAt | time | The creation date of the snapshot | diff --git a/docs/mql/resources/aws-pack/aws.redshift.cluster.md b/docs/mql/resources/aws-pack/aws.redshift.cluster.md new file mode 100644 index 000000000..5b8687066 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.redshift.cluster.md @@ -0,0 +1,47 @@ +--- +title: aws.redshift.cluster +id: aws.redshift.cluster +sidebar_label: aws.redshift.cluster +displayed_sidebar: MQL +description: Amazon Redshift cluster +--- + +# aws.redshift.cluster + +**Supported platform** + +- aws + +**Description** + +Amazon Redshift cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------- | +| allowVersionUpgrade | bool | Whether major upgrades are applied automatically | +| arn | string | ARN for the cluster | +| automatedSnapshotRetentionPeriod | int | Number of days automatic cluster snapshots are retained | +| availabilityZone | string | Availability zone where the cluster exists | +| clusterParameterGroupNames | []string | List of cluster parameter group names | +| clusterRevisionNumber | string | Specific revision number of the database in the cluster | +| clusterStatus | string | Current state of this cluster: available, creating, deleting, rebooting, renaming, or resizing | +| clusterSubnetGroupName | string | Name of the subnet group associated with the cluster | +| clusterVersion | string | Version of the Redshift engine running on the cluster | +| createdAt | time | Cluster creation timestamp | +| dbName | string | Name of the initial database that was created when the cluster was created | +| encrypted | bool | Whether the cluster is encrypted at rest | +| enhancedVpcRouting | bool | Whether enhanced VPC routing is enabled for the cluster traffic | +| logging | dict | Logging configuration for the cluster | +| masterUsername | string | Master user name for the cluster. | +| name | string | Name of the initial database created when cluster was created | +| nextMaintenanceWindowStartTime | time | The next scheduled maintenance window | +| nodeType | string | The node type for the nodes in the cluster | +| numberOfNodes | int | The number of nodes in the cluster | +| parameters | []dict | Detailed list of parameters for each parameter group name | +| preferredMaintenanceWindow | string | Weekly time range for system maintenance (in UTC) | +| publiclyAccessible | bool | Whether the cluster is publicly accessible | +| region | string | Region where the cluster exists | +| tags | map[string]string | Tags for the cluster | +| vpcId | string | The ID of the VPC where the cluster is running | diff --git a/docs/mql/resources/aws-pack/aws.redshift.md b/docs/mql/resources/aws-pack/aws.redshift.md new file mode 100644 index 000000000..d17478a89 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.redshift.md @@ -0,0 +1,60 @@ +--- +title: aws.redshift +id: aws.redshift +sidebar_label: aws.redshift +displayed_sidebar: MQL +description: Amazon Redshift +--- + +# aws.redshift + +**Supported platform** + +- aws + +**Description** + +Amazon Redshift + +Use the `aws.redshift` resource to assess the configuration of Amazon Redshift deployments. The resource returns lists of `aws.rds.dbcluster`, `aws.rds.dbinstance`, and `aws.rds.snapshot` resources, each with fields for assessing the configuration of those assets. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | --------------------------------------------------------- | ---------------- | +| clusters | [][aws.redshift.cluster](aws.redshift.cluster.md) | List of clusters | + +**Examples** + +Return a list of Amazon Redshift clusters deployed across all enabled regions and the values for specified fields + +```coffee +aws.redshift.clusters { + arn + encrypted + nodeType + allowVersionUpgrade + preferredMaintenanceWindow + automatedSnapshotRetentionPeriod + publiclyAccessible + parameters + logging + name + region + clusterParameterGroupNames +} +``` + +Return a list of Amazon Redshift clusters that are not encrypted and the values for the `arn` `region` and `name` fields + +```coffee +aws.redshift.clusters.where( encrypted == false ) { + arn + region + name +} +``` + +**References** + +- [Amazon Redshift security overview](https://docs.aws.amazon.com/redshift/latest/dg/c_security-overview.html) diff --git a/docs/mql/resources/aws-pack/aws.s3.bucket.corsrule.md b/docs/mql/resources/aws-pack/aws.s3.bucket.corsrule.md new file mode 100644 index 000000000..45f198ed0 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.s3.bucket.corsrule.md @@ -0,0 +1,28 @@ +--- +title: aws.s3.bucket.corsrule +id: aws.s3.bucket.corsrule +sidebar_label: aws.s3.bucket.corsrule +displayed_sidebar: MQL +description: Amazon S3 bucket CORS rule +--- + +# aws.s3.bucket.corsrule + +**Supported platform** + +- aws + +**Description** + +Amazon S3 bucket CORS rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ---------------- | ---------------------------------------------------------- | +| name | string | Name of the rule | +| allowedHeaders | []string | List of allowed headers | +| allowedMethods | []string | List of allowed methods GET, POST, PUT, and so on | +| allowedOrigins | []string | List of origins from which the bucket can be accessed | +| exposeHeaders | []string | List of exposed response headers | +| maxAgeSeconds | int | Time in seconds that the browser caches preflight response | diff --git a/docs/mql/resources/aws-pack/aws.s3.bucket.grant.md b/docs/mql/resources/aws-pack/aws.s3.bucket.grant.md new file mode 100644 index 000000000..5a6d8be27 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.s3.bucket.grant.md @@ -0,0 +1,26 @@ +--- +title: aws.s3.bucket.grant +id: aws.s3.bucket.grant +sidebar_label: aws.s3.bucket.grant +displayed_sidebar: MQL +description: Amazon S3 bucket grant +--- + +# aws.s3.bucket.grant + +**Supported platform** + +- aws + +**Description** + +Amazon S3 bucket grant + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | ------------------------------------ | +| id | string | ID of the bucket grant | +| name | string | Name for the bucket grant | +| permission | string | Permission associated with the grant | +| grantee | map[string]string | Grantee associated with the grant | diff --git a/docs/mql/resources/aws-pack/aws.s3.bucket.md b/docs/mql/resources/aws-pack/aws.s3.bucket.md new file mode 100644 index 000000000..a9826230c --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.s3.bucket.md @@ -0,0 +1,47 @@ +--- +title: aws.s3.bucket +id: aws.s3.bucket +sidebar_label: aws.s3.bucket +displayed_sidebar: MQL +description: Amazon S3 bucket +--- + +# aws.s3.bucket + +**Supported platform** + +- aws + +**Description** + +Amazon S3 bucket + +The `aws.s3.bucket` resource provides fields for assessing the configuration of AWS S3 buckets. For usage, read the `aws.s3` resource documentation. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| arn | string | ARN of the bucket | +| name | string | Name of the bucket | +| policy | [aws.s3.bucket.policy](aws.s3.bucket.policy.md) | Policy associated with the bucket | +| tags | map[string]string | Tags for the bucket | +| acl | [][aws.s3.bucket.grant](aws.s3.bucket.grant.md) | List of access control grants associated with the bucket | +| owner | map[string]string | Owner for the bucket | +| public | bool | Whether the bucket is public | +| cors | [][aws.s3.bucket.corsrule](aws.s3.bucket.corsrule.md) | List of CORS information for the bucket | +| location | string | Location of the bucket | +| versioning | map[string]string | Versioning state and MFA delete status of bucket | +| logging | map[string]string | Logging status and user permissions for bucket logging status | +| staticWebsiteHosting | map[string]string | Website configuration for the bucket | +| defaultLock | string | Whether the bucket is locked by default | +| replication | dict | Bucket cross-region replication configuration | +| encryption | dict | Bucket encryption configuration | +| publicAccessBlock | dict | Public access block configuration for the bucket | +| exists | bool | Whether the bucket still exists (stale reference) | +| createdTime | time | Date the bucket was created | + +**References** + +- [Amazon S3 Product Page](https://aws.amazon.com/s3/) +- [AWS Documentation: Buckets overview](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) diff --git a/docs/mql/resources/aws-pack/aws.s3.bucket.policy.md b/docs/mql/resources/aws-pack/aws.s3.bucket.policy.md new file mode 100644 index 000000000..72548bb16 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.s3.bucket.policy.md @@ -0,0 +1,33 @@ +--- +title: aws.s3.bucket.policy +id: aws.s3.bucket.policy +sidebar_label: aws.s3.bucket.policy +displayed_sidebar: MQL +description: Amazon S3 bucket policy +--- + +# aws.s3.bucket.policy + +**Supported platform** + +- aws + +**Description** + +Amazon S3 bucket policy + +Bucket policies grant permission to your Amazon S3 resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | -------------- | --------------------------------- | +| id | string | Unique ID for the policy | +| name | string | Name for the policy | +| document | string | Document for the policy | +| version | string | Version of the policy | +| statements | []dict | List of statements for the policy | + +**References** + +- [AWS Documentation: Using bucket policies](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) diff --git a/docs/mql/resources/aws-pack/aws.s3.md b/docs/mql/resources/aws-pack/aws.s3.md new file mode 100644 index 000000000..dbbf6161a --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.s3.md @@ -0,0 +1,84 @@ +--- +title: aws.s3 +id: aws.s3 +sidebar_label: aws.s3 +displayed_sidebar: MQL +description: Amazon S3 cloud object storage +--- + +# aws.s3 + +**Supported platform** + +- aws + +**Description** + +Amazon S3 cloud object storage + +Amazon Simple Storage Service (Amazon S3) is an object storage service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------------------------- | ------------------------------------- | +| buckets | [][aws.s3.bucket](aws.s3.bucket.md) | List of S3 buckets across the account | + +**Examples** + +Return a list of AWS S3 buckets and the values for specified fields + +```coffee +aws.s3.buckets { + arn + name + policy + tags + acl + owner + public + cors + location + versioning + logging + staticWebsiteHosting + defaultLock + replication + encryption + publicAccessBlock + exists +} +``` + +Return a list of AWS S3 buckets that are public and return the values for the `arn` `name` `location` `tags` and `publicAccessBlock` + +```coffee +aws.s3.buckets.where( public == true ) { + arn + name + location + tags + publicAccessBlock +} +``` + +Check whether S3 buckets have cross-region replication enabled + +```coffee +aws.s3.buckets.all( + replication['Rules'] { _['Status'] == "Enabled" } +) +``` + +Check that all buckets are encrypted with kms + +```coffee +aws.s3.buckets.all( + encryption['Rules'] { _['ApplyServerSideEncryptionByDefault']['KMSMasterKeyID'] == /^arn:aws:kms:.*/} +) +``` + +**References** + +- [Amazon S3 Product Page](https://aws.amazon.com/s3/) +- [AWS Documentation: What is Amazon S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) diff --git a/docs/mql/resources/aws-pack/aws.s3control.md b/docs/mql/resources/aws-pack/aws.s3control.md new file mode 100644 index 000000000..48c006b29 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.s3control.md @@ -0,0 +1,23 @@ +--- +title: aws.s3control +id: aws.s3control +sidebar_label: aws.s3control +displayed_sidebar: MQL +description: Amazon S3 bucket control +--- + +# aws.s3control + +**Supported platform** + +- aws + +**Description** + +Amazon S3 bucket control + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ---- | ------------------------------------------------ | +| accountPublicAccessBlock | dict | Account level public access configuration for S3 | diff --git a/docs/mql/resources/aws-pack/aws.sagemaker.endpoint.md b/docs/mql/resources/aws-pack/aws.sagemaker.endpoint.md new file mode 100644 index 000000000..861b7039e --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.sagemaker.endpoint.md @@ -0,0 +1,27 @@ +--- +title: aws.sagemaker.endpoint +id: aws.sagemaker.endpoint +sidebar_label: aws.sagemaker.endpoint +displayed_sidebar: MQL +description: AWS SageMaker endpoint +--- + +# aws.sagemaker.endpoint + +**Supported platform** + +- aws + +**Description** + +AWS SageMaker endpoint + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ----------------- | ------------------------------------------ | +| arn | string | ARN for the endpoint | +| name | string | Name of the endpoint | +| config | dict | Configuration information for the endpoint | +| region | string | Region where the endpoint exists | +| tags | map[string]string | Tags for the endpoint | diff --git a/docs/mql/resources/aws-pack/aws.sagemaker.md b/docs/mql/resources/aws-pack/aws.sagemaker.md new file mode 100644 index 000000000..2a12ee108 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.sagemaker.md @@ -0,0 +1,24 @@ +--- +title: aws.sagemaker +id: aws.sagemaker +sidebar_label: aws.sagemaker +displayed_sidebar: MQL +description: AWS SageMaker +--- + +# aws.sagemaker + +**Supported platform** + +- aws + +**Description** + +AWS SageMaker + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------------------------------------------------------- | ------------------------------------ | +| endpoints | [][aws.sagemaker.endpoint](aws.sagemaker.endpoint.md) | List of SageMaker endpoints | +| notebookInstances | [][aws.sagemaker.notebookinstance](aws.sagemaker.notebookinstance.md) | List of SageMaker notebook instances | diff --git a/docs/mql/resources/aws-pack/aws.sagemaker.notebookinstance.details.md b/docs/mql/resources/aws-pack/aws.sagemaker.notebookinstance.details.md new file mode 100644 index 000000000..31ce95c3e --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.sagemaker.notebookinstance.details.md @@ -0,0 +1,25 @@ +--- +title: aws.sagemaker.notebookinstance.details +id: aws.sagemaker.notebookinstance.details +sidebar_label: aws.sagemaker.notebookinstance.details +displayed_sidebar: MQL +description: AWS SageMaker notebook instance details +--- + +# aws.sagemaker.notebookinstance.details + +**Supported platform** + +- aws + +**Description** + +AWS SageMaker notebook instance details + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ----------------------------- | ---------------------------------------------------------- | +| arn | string | ARN for the notebook instance | +| kmsKey | [aws.kms.key](aws.kms.key.md) | KMS key used to encrypt data | +| directInternetAccess | string | Whether SageMaker provides internet access to the instance | diff --git a/docs/mql/resources/aws-pack/aws.sagemaker.notebookinstance.md b/docs/mql/resources/aws-pack/aws.sagemaker.notebookinstance.md new file mode 100644 index 000000000..fc25628ab --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.sagemaker.notebookinstance.md @@ -0,0 +1,27 @@ +--- +title: aws.sagemaker.notebookinstance +id: aws.sagemaker.notebookinstance +sidebar_label: aws.sagemaker.notebookinstance +displayed_sidebar: MQL +description: AWS SageMaker notebook instance +--- + +# aws.sagemaker.notebookinstance + +**Supported platform** + +- aws + +**Description** + +AWS SageMaker notebook instance + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------------------------------------------------------------------------- | ----------------------------------------- | +| arn | string | ARN for the notebook instance | +| name | string | Name of the notebook instance | +| details | [aws.sagemaker.notebookinstance.details](aws.sagemaker.notebookinstance.details.md) | Details about the notebook | +| region | string | Region where the notebook instance exists | +| tags | map[string]string | Tags for the notebook instance | diff --git a/docs/mql/resources/aws-pack/aws.secretsmanager.md b/docs/mql/resources/aws-pack/aws.secretsmanager.md new file mode 100644 index 000000000..b50fed0bf --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.secretsmanager.md @@ -0,0 +1,23 @@ +--- +title: aws.secretsmanager +id: aws.secretsmanager +sidebar_label: aws.secretsmanager +displayed_sidebar: MQL +description: AWS Secrets Manager +--- + +# aws.secretsmanager + +**Supported platform** + +- aws + +**Description** + +AWS Secrets Manager + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------------------------------------------------- | --------------- | +| secrets | [][aws.secretsmanager.secret](aws.secretsmanager.secret.md) | List of secrets | diff --git a/docs/mql/resources/aws-pack/aws.secretsmanager.secret.md b/docs/mql/resources/aws-pack/aws.secretsmanager.secret.md new file mode 100644 index 000000000..d9fa5a7cf --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.secretsmanager.secret.md @@ -0,0 +1,32 @@ +--- +title: aws.secretsmanager.secret +id: aws.secretsmanager.secret +sidebar_label: aws.secretsmanager.secret +displayed_sidebar: MQL +description: AWS Secrets Manager secret +--- + +# aws.secretsmanager.secret + +**Supported platform** + +- aws + +**Description** + +AWS Secrets Manager secret + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------- | -------------------------------------------------- | +| arn | string | ARN for the secret | +| createdAt | time | Creation date of the secret | +| description | string | Description of the secret | +| lastChangedDate | time | The last date the secret was changed | +| lastRotatedDate | time | The last date the secret was automatically rotated | +| name | string | Name of the secret | +| nextRotationDate | time | The date of the next secret rotation | +| primaryRegion | string | The primary region of the secret | +| rotationEnabled | bool | Whether rotation is enabled for the secret | +| tags | map[string]string | Tags for the secret | diff --git a/docs/mql/resources/aws-pack/aws.securityhub.hub.md b/docs/mql/resources/aws-pack/aws.securityhub.hub.md new file mode 100644 index 000000000..17ddcddcd --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.securityhub.hub.md @@ -0,0 +1,24 @@ +--- +title: aws.securityhub.hub +id: aws.securityhub.hub +sidebar_label: aws.securityhub.hub +displayed_sidebar: MQL +description: AWS Security Hub hub +--- + +# aws.securityhub.hub + +**Supported platform** + +- aws + +**Description** + +AWS Security Hub hub + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | -------------------------------------- | +| arn | string | ARN for the Security Hub | +| subscribedAt | string | Date and time when the hub was enabled | diff --git a/docs/mql/resources/aws-pack/aws.securityhub.md b/docs/mql/resources/aws-pack/aws.securityhub.md new file mode 100644 index 000000000..45739e315 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.securityhub.md @@ -0,0 +1,23 @@ +--- +title: aws.securityhub +id: aws.securityhub +sidebar_label: aws.securityhub +displayed_sidebar: MQL +description: AWS Security Hub +--- + +# aws.securityhub + +**Supported platform** + +- aws + +**Description** + +AWS Security Hub + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------------------------------------------------------- | ------------------------------------ | +| hubs | [][aws.securityhub.hub](aws.securityhub.hub.md) | List of Security Hubs in the account | diff --git a/docs/mql/resources/aws-pack/aws.sns.md b/docs/mql/resources/aws-pack/aws.sns.md new file mode 100644 index 000000000..af95ab04b --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.sns.md @@ -0,0 +1,23 @@ +--- +title: aws.sns +id: aws.sns +sidebar_label: aws.sns +displayed_sidebar: MQL +description: AWS Simple Notification Service (SNS) +--- + +# aws.sns + +**Supported platform** + +- aws + +**Description** + +AWS Simple Notification Service (SNS) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------------------------------------------- | ------------------ | +| topics | [][aws.sns.topic](aws.sns.topic.md) | List of SNS topics | diff --git a/docs/mql/resources/aws-pack/aws.sns.subscription.md b/docs/mql/resources/aws-pack/aws.sns.subscription.md new file mode 100644 index 000000000..f9de1ac45 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.sns.subscription.md @@ -0,0 +1,24 @@ +--- +title: aws.sns.subscription +id: aws.sns.subscription +sidebar_label: aws.sns.subscription +displayed_sidebar: MQL +description: AWS Simple Notification Service (SNS) subscription +--- + +# aws.sns.subscription + +**Supported platform** + +- aws + +**Description** + +AWS Simple Notification Service (SNS) subscription + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ----------------------------------- | +| arn | string | ARN of the subscription | +| protocol | string | Protocol value for the subscription | diff --git a/docs/mql/resources/aws-pack/aws.sns.topic.md b/docs/mql/resources/aws-pack/aws.sns.topic.md new file mode 100644 index 000000000..0f17ae08f --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.sns.topic.md @@ -0,0 +1,27 @@ +--- +title: aws.sns.topic +id: aws.sns.topic +sidebar_label: aws.sns.topic +displayed_sidebar: MQL +description: AWS Simple Notification Service (SNS) topic +--- + +# aws.sns.topic + +**Supported platform** + +- aws + +**Description** + +AWS Simple Notification Service (SNS) topic + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------- | ----------------------------------------------------- | +| arn | string | SNS topic ARN | +| region | string | Region where the SNS topic exists | +| subscriptions | [][aws.sns.subscription](aws.sns.subscription.md) | List of subscriptions associated with the topic ARN | +| attributes | dict | Attributes for the SNS topic, including KMS ID if any | +| tags | map[string]string | Tags for the topic | diff --git a/docs/mql/resources/aws-pack/aws.ssm.instance.md b/docs/mql/resources/aws-pack/aws.ssm.instance.md new file mode 100644 index 000000000..3fbb0d106 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ssm.instance.md @@ -0,0 +1,31 @@ +--- +title: aws.ssm.instance +id: aws.ssm.instance +sidebar_label: aws.ssm.instance +displayed_sidebar: MQL +description: Amazon SSM instance +--- + +# aws.ssm.instance + +**Supported platform** + +- aws + +**Description** + +Amazon SSM instance + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | -------------------------------------------------------------------------------- | +| instanceId | string | Instance ID for the SSM Instance | +| pingStatus | string | Ping status (such as online) for the SSM Instance | +| ipAddress | string | IP Address for the SSM instance | +| platformName | string | Platform name for the SSM Instance, as described by AWS | +| platformType | string | The type of for the SSM Instance, as described by AWS: Windows, Linux, and so on | +| platformVersion | string | Platform version for the SSM Instance, as described by AWS | +| region | string | Region where the SSM instance is located | +| arn | string | ARN for the SSM instance | +| tags | map[string]string | Tags for the SSM instance | diff --git a/docs/mql/resources/aws-pack/aws.ssm.md b/docs/mql/resources/aws-pack/aws.ssm.md new file mode 100644 index 000000000..1e148fe75 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.ssm.md @@ -0,0 +1,23 @@ +--- +title: aws.ssm +id: aws.ssm +sidebar_label: aws.ssm +displayed_sidebar: MQL +description: Amazon Systems Manager +--- + +# aws.ssm + +**Supported platform** + +- aws + +**Description** + +Amazon Systems Manager + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------------------------- | ----------- | +| instances | [][aws.ssm.instance](aws.ssm.instance.md) | | diff --git a/docs/mql/resources/aws-pack/aws.vpc.endpoint.md b/docs/mql/resources/aws-pack/aws.vpc.endpoint.md new file mode 100644 index 000000000..26b909b40 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.vpc.endpoint.md @@ -0,0 +1,32 @@ +--- +title: aws.vpc.endpoint +id: aws.vpc.endpoint +sidebar_label: aws.vpc.endpoint +displayed_sidebar: MQL +description: Amazon Virtual Private Cloud (VPC) endpoint +--- + +# aws.vpc.endpoint + +**Supported platform** + +- aws + +**Description** + +Amazon Virtual Private Cloud (VPC) endpoint + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ---------------- | ----------------------------------------------------------------- | +| id | string | Unique ID of the endpoint | +| type | string | Type of the endpoint | +| vpc | string | VPC in which the endpoint exists | +| region | string | Region in which the VPC exists | +| serviceName | string | The name of the endpoint service | +| policyDocument | string | The policy document associated with the endpoint, if applicable | +| subnets | []string | The subnets for the (interface) endpoint | +| privateDnsEnabled | bool | Whether to associate a private hosted zone with the specified VPC | +| state | string | VPC endpoint state | +| createdAt | time | Creation timestamp | diff --git a/docs/mql/resources/aws-pack/aws.vpc.flowlog.md b/docs/mql/resources/aws-pack/aws.vpc.flowlog.md new file mode 100644 index 000000000..bffc4a840 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.vpc.flowlog.md @@ -0,0 +1,33 @@ +--- +title: aws.vpc.flowlog +id: aws.vpc.flowlog +sidebar_label: aws.vpc.flowlog +displayed_sidebar: MQL +description: Amazon Virtual Private Cloud (VPC) flow log +--- + +# aws.vpc.flowlog + +**Supported platform** + +- aws + +**Description** + +Amazon Virtual Private Cloud (VPC) flow log + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | Unique ID of the flow log | +| vpc | string | VPC in which the flow log exists | +| region | string | Region in which the flow log exists | +| status | string | Status of the flow log | +| tags | map[string]string | Tags on the flow log | +| createdAt | time | Creation timestamp | +| destination | string | The destination for the flow log data | +| destinationType | string | The destination type for the flow log data | +| deliverLogsStatus | string | The delivery log status for the flow log data | +| maxAggregationInterval | int | The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. The possible values are 60 seconds (1 minute) or 600 seconds (10 minutes). | +| trafficType | string | The type of traffic to monitor. ACCEPT, ALL, and REJECT | diff --git a/docs/mql/resources/aws-pack/aws.vpc.md b/docs/mql/resources/aws-pack/aws.vpc.md new file mode 100644 index 000000000..212796492 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.vpc.md @@ -0,0 +1,34 @@ +--- +title: aws.vpc +id: aws.vpc +sidebar_label: aws.vpc +displayed_sidebar: MQL +description: Amazon Virtual Private Cloud (VPC) +--- + +# aws.vpc + +**Supported platform** + +- aws + +**Description** + +Amazon Virtual Private Cloud (VPC) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------- | +| arn | string | ARN of the VPC | +| id | string | ID of the VPC | +| cidrBlock | string | IPv4 CIDR block of the VPC | +| state | string | State of the VPC: pending or available | +| isDefault | bool | Whether the VPC is the default VPC | +| instanceTenancy | string | How instance hardware tenancy settings are enforced on instances launched in this VPC | +| region | string | Region in which the VPC exists | +| endpoints | [][aws.vpc.endpoint](aws.vpc.endpoint.md) | List of endpoints for the VPC | +| flowLogs | [][aws.vpc.flowlog](aws.vpc.flowlog.md) | List of flow logs for the VPC | +| routeTables | [][aws.vpc.routetable](aws.vpc.routetable.md) | List of route tables for the VPC | +| subnets | [][aws.vpc.subnet](aws.vpc.subnet.md) | List of subnets for the VPC | +| tags | map[string]string | Tags on the VPC | diff --git a/docs/mql/resources/aws-pack/aws.vpc.routetable.md b/docs/mql/resources/aws-pack/aws.vpc.routetable.md new file mode 100644 index 000000000..00c037e67 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.vpc.routetable.md @@ -0,0 +1,25 @@ +--- +title: aws.vpc.routetable +id: aws.vpc.routetable +sidebar_label: aws.vpc.routetable +displayed_sidebar: MQL +description: Amazon Virtual Private Cloud (VPC) route table +--- + +# aws.vpc.routetable + +**Supported platform** + +- aws + +**Description** + +Amazon Virtual Private Cloud (VPC) route table + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ----------------- | ---------------------------- | +| id | string | Unique ID of the route table | +| routes | []dict | A list of route descriptions | +| tags | map[string]string | Tags on the route table | diff --git a/docs/mql/resources/aws-pack/aws.vpc.subnet.md b/docs/mql/resources/aws-pack/aws.vpc.subnet.md new file mode 100644 index 000000000..9dc451611 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.vpc.subnet.md @@ -0,0 +1,30 @@ +--- +title: aws.vpc.subnet +id: aws.vpc.subnet +sidebar_label: aws.vpc.subnet +displayed_sidebar: MQL +description: Amazon Virtual Private Cloud (VPC) subnet +--- + +# aws.vpc.subnet + +**Supported platform** + +- aws + +**Description** + +Amazon Virtual Private Cloud (VPC) subnet + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| arn | string | ARN of the subnet | +| id | string | Unique ID of the subnet | +| cidrs | string | List of CIDR descriptions | +| mapPublicIpOnLaunch | bool | Whether instances launched in this subnet receive public IPv4 addresses | +| availabilityZone | string | The availability zone where this subnet is located | +| defaultForAvailabilityZone | bool | Whether this is the default subnet for the availability zone | +| assignIpv6AddressOnCreation | bool | Whether a network interface created in this subnet (including a network interface created by RunInstances ) receives an IPv6 address | +| state | string | The state of the subnet: pending or available | diff --git a/docs/mql/resources/aws-pack/aws.waf.acl.md b/docs/mql/resources/aws-pack/aws.waf.acl.md new file mode 100644 index 000000000..b9044b0e0 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.acl.md @@ -0,0 +1,29 @@ +--- +title: aws.waf.acl +id: aws.waf.acl +sidebar_label: aws.waf.acl +displayed_sidebar: MQL +description: Amazon WAF v2 ACL +--- + +# aws.waf.acl + +**Supported platform** + +- aws + +**Description** + +Amazon WAF v2 ACL + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ----------------------------------------- | ---------------------------------------------- | +| arn | string | ARN of the ACL | +| id | string | ID of the ACL | +| name | string | Name of the ACL | +| description | string | Description of the ACL | +| managedByFirewallManager | bool | Whether the ACL is managed by Firewall Manager | +| rules | [][aws.waf.rule](aws.waf.rule.md) | List of WAF rules | +| scope | string | Scope either REGIONAL or CLOUDFRONT | diff --git a/docs/mql/resources/aws-pack/aws.waf.ipset.md b/docs/mql/resources/aws-pack/aws.waf.ipset.md new file mode 100644 index 000000000..6e76cecb1 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.ipset.md @@ -0,0 +1,29 @@ +--- +title: aws.waf.ipset +id: aws.waf.ipset +sidebar_label: aws.waf.ipset +displayed_sidebar: MQL +description: Amazon WAF IP set (defining IP Ranges) +--- + +# aws.waf.ipset + +**Supported platform** + +- aws + +**Description** + +Amazon WAF IP set (defining IP Ranges) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ----------------------------- | +| arn | string | ARN of the IP set | +| id | string | ID of the IP set | +| scope | string | Scope: REGIONAL or CLOUDFRONT | +| name | string | Name of the IP set | +| description | string | Description of the IP set | +| addressType | string | Address type: ipv4 or ipv6 | +| addresses | dict | list of IP addresses | diff --git a/docs/mql/resources/aws-pack/aws.waf.md b/docs/mql/resources/aws-pack/aws.waf.md new file mode 100644 index 000000000..aeb89d826 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.md @@ -0,0 +1,26 @@ +--- +title: aws.waf +id: aws.waf +sidebar_label: aws.waf +displayed_sidebar: MQL +description: Amazon WAF v2 +--- + +# aws.waf + +**Supported platform** + +- aws + +**Description** + +Amazon WAF v2 + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------------------------------------------- | ----------------------------------- | +| acls | [][aws.waf.acl](aws.waf.acl.md) | List of WAF ACLs | +| ruleGroups | [][aws.waf.rulegroup](aws.waf.rulegroup.md) | List of WAF rules | +| ipSets | [][aws.waf.ipset](aws.waf.ipset.md) | List of WAF IP sets | +| scope | string | Scope either REGIONAL or CLOUDFRONT | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.action.md b/docs/mql/resources/aws-pack/aws.waf.rule.action.md new file mode 100644 index 000000000..5a1ebace0 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.action.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.action +id: aws.waf.rule.action +sidebar_label: aws.waf.rule.action +displayed_sidebar: MQL +description: Action that happens if a rule statement matches +--- + +# aws.waf.rule.action + +**Supported platform** + +- aws + +**Description** + +Action that happens if a rule statement matches + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ----------------------------------------------- | +| ruleName | string | Name of the rule this action belongs to | +| action | string | One of Block, Allow, Count, Captcha | +| responseCode | string | HTTP Response Code, only if the action is Block | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.body.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.body.md new file mode 100644 index 000000000..5a525f1f6 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.body.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.fieldtomatch.body +id: aws.waf.rule.fieldtomatch.body +sidebar_label: aws.waf.rule.fieldtomatch.body +displayed_sidebar: MQL +description: Body of the field to match +--- + +# aws.waf.rule.fieldtomatch.body + +**Supported platform** + +- aws + +**Description** + +Body of the field to match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| overSizeHandling | string | What to do if the body is over size | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.cookie.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.cookie.md new file mode 100644 index 000000000..eac0d9170 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.cookie.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.fieldtomatch.cookie +id: aws.waf.rule.fieldtomatch.cookie +sidebar_label: aws.waf.rule.fieldtomatch.cookie +displayed_sidebar: MQL +description: Cookie of the field to match +--- + +# aws.waf.rule.fieldtomatch.cookie + +**Supported platform** + +- aws + +**Description** + +Cookie of the field to match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| overSizeHandling | string | What to do if the cookie is over size | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headerorder.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headerorder.md new file mode 100644 index 000000000..3dbdf9af0 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headerorder.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.fieldtomatch.headerorder +id: aws.waf.rule.fieldtomatch.headerorder +sidebar_label: aws.waf.rule.fieldtomatch.headerorder +displayed_sidebar: MQL +description: Order of headers of the field to match +--- + +# aws.waf.rule.fieldtomatch.headerorder + +**Supported platform** + +- aws + +**Description** + +Order of headers of the field to match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ----------------------------------------------- | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| overSizeHandling | string | What to do if the order of headers is over size | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headers.matchpattern.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headers.matchpattern.md new file mode 100644 index 000000000..2b7e9a094 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headers.matchpattern.md @@ -0,0 +1,27 @@ +--- +title: aws.waf.rule.fieldtomatch.headers.matchpattern +id: aws.waf.rule.fieldtomatch.headers.matchpattern +sidebar_label: aws.waf.rule.fieldtomatch.headers.matchpattern +displayed_sidebar: MQL +description: The pattern to match +--- + +# aws.waf.rule.fieldtomatch.headers.matchpattern + +**Supported platform** + +- aws + +**Description** + +The pattern to match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ---------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| all | bool | Whether to match all | +| includeHeaders | []string | Headers to include | +| excludeHeaders | []string | Headers to exclude | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headers.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headers.md new file mode 100644 index 000000000..78d499ec7 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.headers.md @@ -0,0 +1,27 @@ +--- +title: aws.waf.rule.fieldtomatch.headers +id: aws.waf.rule.fieldtomatch.headers +sidebar_label: aws.waf.rule.fieldtomatch.headers +displayed_sidebar: MQL +description: Headers +--- + +# aws.waf.rule.fieldtomatch.headers + +**Supported platform** + +- aws + +**Description** + +Headers + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| matchScope | string | Match scope | +| overSizeHandling | string | What to do if the headers are over size | +| matchPattern | [aws.waf.rule.fieldtomatch.headers.matchpattern](aws.waf.rule.fieldtomatch.headers.matchpattern.md) | Match pattern | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.ja3fingerprint.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.ja3fingerprint.md new file mode 100644 index 000000000..2f7e57fff --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.ja3fingerprint.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.fieldtomatch.ja3fingerprint +id: aws.waf.rule.fieldtomatch.ja3fingerprint +sidebar_label: aws.waf.rule.fieldtomatch.ja3fingerprint +displayed_sidebar: MQL +description: JA3 fingerprint +--- + +# aws.waf.rule.fieldtomatch.ja3fingerprint + +**Supported platform** + +- aws + +**Description** + +JA3 fingerprint + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| fallbackBehavior | string | FallbackBehavior | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.jsonbody.matchpattern.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.jsonbody.matchpattern.md new file mode 100644 index 000000000..9a0d3410b --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.jsonbody.matchpattern.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.fieldtomatch.jsonbody.matchpattern +id: aws.waf.rule.fieldtomatch.jsonbody.matchpattern +sidebar_label: aws.waf.rule.fieldtomatch.jsonbody.matchpattern +displayed_sidebar: MQL +description: The pattern to match +--- + +# aws.waf.rule.fieldtomatch.jsonbody.matchpattern + +**Supported platform** + +- aws + +**Description** + +The pattern to match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ---------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| all | bool | Whether to match all | +| includePaths | []string | Paths to include | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.jsonbody.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.jsonbody.md new file mode 100644 index 000000000..c6068daed --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.jsonbody.md @@ -0,0 +1,28 @@ +--- +title: aws.waf.rule.fieldtomatch.jsonbody +id: aws.waf.rule.fieldtomatch.jsonbody +sidebar_label: aws.waf.rule.fieldtomatch.jsonbody +displayed_sidebar: MQL +description: Request body as JSON +--- + +# aws.waf.rule.fieldtomatch.jsonbody + +**Supported platform** + +- aws + +**Description** + +Request body as JSON + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| overSizeHandling | string | What to do if the body is over size | +| matchScope | string | Match scope | +| invalidFallbackBehavior | string | What to do if the body is not valid JSON | +| matchPattern | [aws.waf.rule.fieldtomatch.jsonbody.matchpattern](aws.waf.rule.fieldtomatch.jsonbody.matchpattern.md) | Match pattern | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.md new file mode 100644 index 000000000..f118c4a71 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.md @@ -0,0 +1,37 @@ +--- +title: aws.waf.rule.fieldtomatch +id: aws.waf.rule.fieldtomatch +sidebar_label: aws.waf.rule.fieldtomatch +displayed_sidebar: MQL +description: Field to match +--- + +# aws.waf.rule.fieldtomatch + +**Supported platform** + +- aws + +**Description** + +Field to match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| target | string | | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| method | bool | Whether to match the HTTP method: GET or POST | +| uriPath | bool | Whether to match the URI path | +| queryString | bool | Whether to match the query string | +| allQueryArguments | bool | Whether to match all query arguments | +| body | [aws.waf.rule.fieldtomatch.body](aws.waf.rule.fieldtomatch.body.md) | Whether to match the body (match if not null) | +| cookie | [aws.waf.rule.fieldtomatch.cookie](aws.waf.rule.fieldtomatch.cookie.md) | Whether to match the cookie (match if not null) | +| singleHeader | [aws.waf.rule.fieldtomatch.singleheader](aws.waf.rule.fieldtomatch.singleheader.md) | Whether to match the single header (match if not null) | +| headerOrder | [aws.waf.rule.fieldtomatch.headerorder](aws.waf.rule.fieldtomatch.headerorder.md) | Whether to match the header order (match if not null) | +| headers | [aws.waf.rule.fieldtomatch.headers](aws.waf.rule.fieldtomatch.headers.md) | Whether to match the header (match if not null) | +| ja3Fingerprint | [aws.waf.rule.fieldtomatch.ja3fingerprint](aws.waf.rule.fieldtomatch.ja3fingerprint.md) | Whether to match the JA3 fingerprint (match if not null) | +| jsonBody | [aws.waf.rule.fieldtomatch.jsonbody](aws.waf.rule.fieldtomatch.jsonbody.md) | Whether to match the JSON body (match if not null) | +| singleQueryArgument | [aws.waf.rule.fieldtomatch.singlequeryargument](aws.waf.rule.fieldtomatch.singlequeryargument.md) | Whether to match the single query argument of the field (match if not null) | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.singleheader.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.singleheader.md new file mode 100644 index 000000000..d2b86020f --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.singleheader.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.fieldtomatch.singleheader +id: aws.waf.rule.fieldtomatch.singleheader +sidebar_label: aws.waf.rule.fieldtomatch.singleheader +displayed_sidebar: MQL +description: Single header of the field to match +--- + +# aws.waf.rule.fieldtomatch.singleheader + +**Supported platform** + +- aws + +**Description** + +Single header of the field to match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| name | string | Name of the header | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.singlequeryargument.md b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.singlequeryargument.md new file mode 100644 index 000000000..01179e187 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.fieldtomatch.singlequeryargument.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.fieldtomatch.singlequeryargument +id: aws.waf.rule.fieldtomatch.singlequeryargument +sidebar_label: aws.waf.rule.fieldtomatch.singlequeryargument +displayed_sidebar: MQL +description: Single query argument +--- + +# aws.waf.rule.fieldtomatch.singlequeryargument + +**Supported platform** + +- aws + +**Description** + +Single query argument + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| name | string | Name of the query argument | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.md b/docs/mql/resources/aws-pack/aws.waf.rule.md new file mode 100644 index 000000000..52813f800 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.md @@ -0,0 +1,28 @@ +--- +title: aws.waf.rule +id: aws.waf.rule +sidebar_label: aws.waf.rule +displayed_sidebar: MQL +description: Amazon WAF rule +--- + +# aws.waf.rule + +**Supported platform** + +- aws + +**Description** + +Amazon WAF rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| id | string | arn of the acl/ruleGroup + the name of the rule | +| name | string | Name of the rule | +| priority | int | Priority from lowest to highest number | +| statement | [aws.waf.rule.statement](aws.waf.rule.statement.md) | Part of the rule that tells WAF how to inspect a web request | +| action | [aws.waf.rule.action](aws.waf.rule.action.md) | Part of the rule that tells WAF what to do with a web request when it matches the criteria defined in the rule | +| belongsTo | string | The ARN of either rule ACL or the RuleGroup that this rule belongs to | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.andstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.andstatement.md new file mode 100644 index 000000000..cccb3e114 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.andstatement.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.statement.andstatement +id: aws.waf.rule.statement.andstatement +sidebar_label: aws.waf.rule.statement.andstatement +displayed_sidebar: MQL +description: Rule statement that matches if all of the rule statements inside it match +--- + +# aws.waf.rule.statement.andstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that matches if all of the rule statements inside it match + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| statements | [][aws.waf.rule.statement](aws.waf.rule.statement.md) | Sub-statements | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.bytematchstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.bytematchstatement.md new file mode 100644 index 000000000..c67336fb0 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.bytematchstatement.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.statement.bytematchstatement +id: aws.waf.rule.statement.bytematchstatement +sidebar_label: aws.waf.rule.statement.bytematchstatement +displayed_sidebar: MQL +description: Rule statement that matches a specified sequence of bytes +--- + +# aws.waf.rule.statement.bytematchstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that matches a specified sequence of bytes + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| fieldToMatch | [aws.waf.rule.fieldtomatch](aws.waf.rule.fieldtomatch.md) | Field to match | +| searchString | string | String to search for | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.geomatchstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.geomatchstatement.md new file mode 100644 index 000000000..4e943c7d2 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.geomatchstatement.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.statement.geomatchstatement +id: aws.waf.rule.statement.geomatchstatement +sidebar_label: aws.waf.rule.statement.geomatchstatement +displayed_sidebar: MQL +description: Rule statement that checks for requests from certain countries +--- + +# aws.waf.rule.statement.geomatchstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that checks for requests from certain countries + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ---------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| countryCodes | []string | Country codes | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig.md new file mode 100644 index 000000000..10c1d2ee0 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig.md @@ -0,0 +1,22 @@ +--- +title: aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig +id: aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig +sidebar_label: aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig +displayed_sidebar: MQL +--- + +# aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig + +**Supported platform** + +- aws + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| headerName | string | Name of the header | +| position | string | Position | +| fallbackBehavior | string | Fallback behavior | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.ipsetreferencestatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.ipsetreferencestatement.md new file mode 100644 index 000000000..339afb390 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.ipsetreferencestatement.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.statement.ipsetreferencestatement +id: aws.waf.rule.statement.ipsetreferencestatement +sidebar_label: aws.waf.rule.statement.ipsetreferencestatement +displayed_sidebar: MQL +description: Rule statement that checks for requests from IP addresses defined in an IPSet +--- + +# aws.waf.rule.statement.ipsetreferencestatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that checks for requests from IP addresses defined in an IPSet + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| arn | string | arn of the ipset | +| ipSetForwardedIPConfig | [aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig](aws.waf.rule.statement.ipsetreferencestatement.ipsetforwardedipconfig.md) | ipSetForwardedIPConfig | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.labelmatchstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.labelmatchstatement.md new file mode 100644 index 000000000..c4b3ba78d --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.labelmatchstatement.md @@ -0,0 +1,21 @@ +--- +title: aws.waf.rule.statement.labelmatchstatement +id: aws.waf.rule.statement.labelmatchstatement +sidebar_label: aws.waf.rule.statement.labelmatchstatement +displayed_sidebar: MQL +--- + +# aws.waf.rule.statement.labelmatchstatement + +**Supported platform** + +- aws + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| key | string | Key | +| scope | string | Scope | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.managedrulegroupstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.managedrulegroupstatement.md new file mode 100644 index 000000000..5df82c893 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.managedrulegroupstatement.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.statement.managedrulegroupstatement +id: aws.waf.rule.statement.managedrulegroupstatement +sidebar_label: aws.waf.rule.statement.managedrulegroupstatement +displayed_sidebar: MQL +description: Rule statement that is managed by AWS +--- + +# aws.waf.rule.statement.managedrulegroupstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that is managed by AWS + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| name | string | Name | +| vendorName | string | Vendor name | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.md new file mode 100644 index 000000000..18ac4d9fd --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.md @@ -0,0 +1,35 @@ +--- +title: aws.waf.rule.statement +id: aws.waf.rule.statement +sidebar_label: aws.waf.rule.statement +displayed_sidebar: MQL +--- + +# aws.waf.rule.statement + +**Supported platform** + +- aws + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| id | string | ID of the statement | +| kind | string | Kind of statement, e.g., "sqliMatchStatement" | +| json | dict | Entire statement as JSON | +| sqliMatchStatement | [aws.waf.rule.statement.sqlimatchstatement](aws.waf.rule.statement.sqlimatchstatement.md) | Statement that detects SQL injection attacks | +| xssMatchStatement | [aws.waf.rule.statement.xssmatchstatement](aws.waf.rule.statement.xssmatchstatement.md) | Statement that detects XSS attacks | +| byteMatchStatement | [aws.waf.rule.statement.bytematchstatement](aws.waf.rule.statement.bytematchstatement.md) | Statement that matches certain bytes | +| regexMatchStatement | [aws.waf.rule.statement.regexmatchstatement](aws.waf.rule.statement.regexmatchstatement.md) | Statement that matches a regex pattern | +| geoMatchStatement | [aws.waf.rule.statement.geomatchstatement](aws.waf.rule.statement.geomatchstatement.md) | Statement that matches requests from certain countries | +| ipSetReferenceStatement | [aws.waf.rule.statement.ipsetreferencestatement](aws.waf.rule.statement.ipsetreferencestatement.md) | Statement that matches requests from certain ips defined in an IPSet | +| labelMatchStatement | [aws.waf.rule.statement.labelmatchstatement](aws.waf.rule.statement.labelmatchstatement.md) | Statement that matches requests with certain labels | +| managedRuleGroupStatement | [aws.waf.rule.statement.managedrulegroupstatement](aws.waf.rule.statement.managedrulegroupstatement.md) | Statement managed by AWS | +| notStatement | [aws.waf.rule.statement.notstatement](aws.waf.rule.statement.notstatement.md) | Statement that matches if the conditions are not met | +| orStatement | [aws.waf.rule.statement.orstatement](aws.waf.rule.statement.orstatement.md) | Statement that matches if one or many sub-statements match | +| andStatement | [aws.waf.rule.statement.andstatement](aws.waf.rule.statement.andstatement.md) | Statement that matches if all sub-statements match | +| rateBasedStatement | [aws.waf.rule.statement.ratebasedstatement](aws.waf.rule.statement.ratebasedstatement.md) | Statement that matches if a request comes in at a certain rate (rate limiting) | +| regexPatternSetReferenceStatement | [aws.waf.rule.statement.regexpatternsetreferencestatement](aws.waf.rule.statement.regexpatternsetreferencestatement.md) | Statement that matches a regex pattern defined in a regex pattern set | +| ruleGroupReferenceStatement | [aws.waf.rule.statement.rulegroupreferencestatement](aws.waf.rule.statement.rulegroupreferencestatement.md) | Statement that refers to the rules in a rule group | +| sizeConstraintStatement | [aws.waf.rule.statement.sizeconstraintstatement](aws.waf.rule.statement.sizeconstraintstatement.md) | Statement that matches the size of the request | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.notstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.notstatement.md new file mode 100644 index 000000000..90c18de63 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.notstatement.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.statement.notstatement +id: aws.waf.rule.statement.notstatement +sidebar_label: aws.waf.rule.statement.notstatement +displayed_sidebar: MQL +description: Rule statement that negates another rule statement +--- + +# aws.waf.rule.statement.notstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that negates another rule statement + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| statement | [aws.waf.rule.statement](aws.waf.rule.statement.md) | Sub-statement (will be negated) | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.orstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.orstatement.md new file mode 100644 index 000000000..edd0ca5c5 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.orstatement.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.statement.orstatement +id: aws.waf.rule.statement.orstatement +sidebar_label: aws.waf.rule.statement.orstatement +displayed_sidebar: MQL +description: Rule statement that matches if one of the rule statements inside it matches +--- + +# aws.waf.rule.statement.orstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that matches if one of the rule statements inside it matches + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| statements | [][aws.waf.rule.statement](aws.waf.rule.statement.md) | Sub-statements | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.ratebasedstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.ratebasedstatement.md new file mode 100644 index 000000000..c8a6e053e --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.ratebasedstatement.md @@ -0,0 +1,17 @@ +--- +title: aws.waf.rule.statement.ratebasedstatement +id: aws.waf.rule.statement.ratebasedstatement +sidebar_label: aws.waf.rule.statement.ratebasedstatement +displayed_sidebar: MQL +description: Rule statement that matches at a certain rate of requests (rate limiting) +--- + +# aws.waf.rule.statement.ratebasedstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that matches at a certain rate of requests (rate limiting) diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.regexmatchstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.regexmatchstatement.md new file mode 100644 index 000000000..908da36dd --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.regexmatchstatement.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.statement.regexmatchstatement +id: aws.waf.rule.statement.regexmatchstatement +sidebar_label: aws.waf.rule.statement.regexmatchstatement +displayed_sidebar: MQL +description: Rule statement that matches a specified regex pattern +--- + +# aws.waf.rule.statement.regexmatchstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that matches a specified regex pattern + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| fieldToMatch | [aws.waf.rule.fieldtomatch](aws.waf.rule.fieldtomatch.md) | Field to match | +| regexString | string | Regex pattern to match | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.regexpatternsetreferencestatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.regexpatternsetreferencestatement.md new file mode 100644 index 000000000..1d165e7cf --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.regexpatternsetreferencestatement.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.statement.regexpatternsetreferencestatement +id: aws.waf.rule.statement.regexpatternsetreferencestatement +sidebar_label: aws.waf.rule.statement.regexpatternsetreferencestatement +displayed_sidebar: MQL +description: Rule statement that checks for a regex pattern defined in a regex pattern set +--- + +# aws.waf.rule.statement.regexpatternsetreferencestatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that checks for a regex pattern defined in a regex pattern set + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| arn | string | ARN of the regex pattern set | +| fieldToMatch | [aws.waf.rule.fieldtomatch](aws.waf.rule.fieldtomatch.md) | Field that is matched | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.rulegroupreferencestatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.rulegroupreferencestatement.md new file mode 100644 index 000000000..b0a59bc2f --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.rulegroupreferencestatement.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.statement.rulegroupreferencestatement +id: aws.waf.rule.statement.rulegroupreferencestatement +sidebar_label: aws.waf.rule.statement.rulegroupreferencestatement +displayed_sidebar: MQL +description: Rule statement that refers to a group of rules +--- + +# aws.waf.rule.statement.rulegroupreferencestatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that refers to a group of rules + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ---------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| arn | string | ARN of the rule group | +| excludeRules | []string | List of rules to exclude | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.sizeconstraintstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.sizeconstraintstatement.md new file mode 100644 index 000000000..af050197e --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.sizeconstraintstatement.md @@ -0,0 +1,27 @@ +--- +title: aws.waf.rule.statement.sizeconstraintstatement +id: aws.waf.rule.statement.sizeconstraintstatement +sidebar_label: aws.waf.rule.statement.sizeconstraintstatement +displayed_sidebar: MQL +description: Rule statement that checks the size of the specified field +--- + +# aws.waf.rule.statement.sizeconstraintstatement + +**Supported platform** + +- aws + +**Description** + +Rule statement that checks the size of the specified field + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | --------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| size | int | The size that triggers this statement | +| comparisonOperator | string | How to compare the size | +| fieldToMatch | [aws.waf.rule.fieldtomatch](aws.waf.rule.fieldtomatch.md) | Field to match | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.sqlimatchstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.sqlimatchstatement.md new file mode 100644 index 000000000..e13c7f436 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.sqlimatchstatement.md @@ -0,0 +1,26 @@ +--- +title: aws.waf.rule.statement.sqlimatchstatement +id: aws.waf.rule.statement.sqlimatchstatement +sidebar_label: aws.waf.rule.statement.sqlimatchstatement +displayed_sidebar: MQL +description: Statement that matches SQLI attacks +--- + +# aws.waf.rule.statement.sqlimatchstatement + +**Supported platform** + +- aws + +**Description** + +Statement that matches SQLI attacks + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| fieldToMatch | [aws.waf.rule.fieldtomatch](aws.waf.rule.fieldtomatch.md) | Field to match | +| sensitivityLevel | string | How aggressive the statement matches | diff --git a/docs/mql/resources/aws-pack/aws.waf.rule.statement.xssmatchstatement.md b/docs/mql/resources/aws-pack/aws.waf.rule.statement.xssmatchstatement.md new file mode 100644 index 000000000..c3d7fadf9 --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rule.statement.xssmatchstatement.md @@ -0,0 +1,25 @@ +--- +title: aws.waf.rule.statement.xssmatchstatement +id: aws.waf.rule.statement.xssmatchstatement +sidebar_label: aws.waf.rule.statement.xssmatchstatement +displayed_sidebar: MQL +description: Statement that matches XSS attacks +--- + +# aws.waf.rule.statement.xssmatchstatement + +**Supported platform** + +- aws + +**Description** + +Statement that matches XSS attacks + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------------------- | ------------------------------------------ | +| ruleName | string | Name of the rule this statement belongs to | +| statementID | string | ID of the statement | +| fieldToMatch | [aws.waf.rule.fieldtomatch](aws.waf.rule.fieldtomatch.md) | Field to match | diff --git a/docs/mql/resources/aws-pack/aws.waf.rulegroup.md b/docs/mql/resources/aws-pack/aws.waf.rulegroup.md new file mode 100644 index 000000000..d942b894c --- /dev/null +++ b/docs/mql/resources/aws-pack/aws.waf.rulegroup.md @@ -0,0 +1,28 @@ +--- +title: aws.waf.rulegroup +id: aws.waf.rulegroup +sidebar_label: aws.waf.rulegroup +displayed_sidebar: MQL +description: Amazon WAF v2 RuleGroup +--- + +# aws.waf.rulegroup + +**Supported platform** + +- aws + +**Description** + +Amazon WAF v2 RuleGroup + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------------------- | ----------------------------------- | +| arn | string | ARN of the rulegroup | +| id | string | ID of the rulegroup | +| name | string | Name of the rulegroup | +| description | string | Description of the rulegroup | +| rules | [][aws.waf.rule](aws.waf.rule.md) | List of waf rules | +| scope | string | Scope either REGIONAL or CLOUDFRONT | diff --git a/docs/mql/resources/azure-pack/README.md b/docs/mql/resources/azure-pack/README.md new file mode 100644 index 000000000..d06732562 --- /dev/null +++ b/docs/mql/resources/azure-pack/README.md @@ -0,0 +1,111 @@ +--- +title: Azure Resource Pack - MQL Resources +id: azure.pack +sidebar_label: Azure Resource Pack +displayed_sidebar: MQL +description: The Azure resource pack lets you use MQL to query and assess the security of your Azure cloud services. +--- + +# Mondoo Azure Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | +| [azure](azure.md) | Azure resource | +| [azure.subscription](azure.subscription.md) | Azure subscription | +| [azure.subscription.advisorService](azure.subscription.advisorservice.md) | Azure Advisor | +| [azure.subscription.advisorService.recommendation](azure.subscription.advisorservice.recommendation.md) | Azure Advisor recommendation | +| [azure.subscription.advisorService.score](azure.subscription.advisorservice.score.md) | Azure Advisor score | +| [azure.subscription.advisorService.securityScore](azure.subscription.advisorservice.securityscore.md) | Azure Advisor security score | +| [azure.subscription.advisorService.timeSeries](azure.subscription.advisorservice.timeseries.md) | Azure Advisor time series | +| [azure.subscription.aksService](azure.subscription.aksservice.md) | Azure Kubernetes Service | +| [azure.subscription.aksService.cluster](azure.subscription.aksservice.cluster.md) | Azure Kubernetes Service cluster | +| [azure.subscription.authorizationService](azure.subscription.authorizationservice.md) | Azure authorization | +| [azure.subscription.authorizationService.roleDefinition](azure.subscription.authorizationservice.roledefinition.md) | Azure role definition | +| [azure.subscription.authorizationService.roleDefinition.permission](azure.subscription.authorizationservice.roledefinition.permission.md) | Azure role definition permission | +| [azure.subscription.cloudDefenderService](azure.subscription.clouddefenderservice.md) | Microsoft Defender for Cloud | +| [azure.subscription.cloudDefenderService.securityContact](azure.subscription.clouddefenderservice.securitycontact.md) | Microsoft Defender for Cloud security contact | +| [azure.subscription.computeService](azure.subscription.computeservice.md) | Azure compute | +| [azure.subscription.computeService.disk](azure.subscription.computeservice.disk.md) | Azure disk resource | +| [azure.subscription.computeService.vm](azure.subscription.computeservice.vm.md) | Azure compute virtual machine | +| [azure.subscription.cosmosDbService](azure.subscription.cosmosdbservice.md) | Azure Cosmos DB | +| [azure.subscription.cosmosDbService.account](azure.subscription.cosmosdbservice.account.md) | Azure Cosmos DB account | +| [azure.subscription.keyVaultService](azure.subscription.keyvaultservice.md) | Azure Key Vault | +| [azure.subscription.keyVaultService.certificate](azure.subscription.keyvaultservice.certificate.md) | Azure Key Vault certificate | +| [azure.subscription.keyVaultService.key](azure.subscription.keyvaultservice.key.md) | Azure Key Vault key | +| [azure.subscription.keyVaultService.secret](azure.subscription.keyvaultservice.secret.md) | Azure Key Vault secret | +| [azure.subscription.keyVaultService.vault](azure.subscription.keyvaultservice.vault.md) | Azure Key Vault vault | +| [azure.subscription.mariaDbService](azure.subscription.mariadbservice.md) | Azure Database for MariaDB | +| [azure.subscription.mariaDbService.database](azure.subscription.mariadbservice.database.md) | Azure Database for MariaDB database | +| [azure.subscription.mariaDbService.server](azure.subscription.mariadbservice.server.md) | Azure Database for MariaDB server | +| [azure.subscription.monitorService](azure.subscription.monitorservice.md) | Azure Monitor | +| [azure.subscription.monitorService.activityLog](azure.subscription.monitorservice.activitylog.md) | Azure Monitor activity log | +| [azure.subscription.monitorService.activityLog.alert](azure.subscription.monitorservice.activitylog.alert.md) | Azure Monitor activity log alert | +| [azure.subscription.monitorService.applicationInsight](azure.subscription.monitorservice.applicationinsight.md) | Azure Monitor application insights | +| [azure.subscription.monitorService.diagnosticsetting](azure.subscription.monitorservice.diagnosticsetting.md) | Azure Monitor diagnostic setting | +| [azure.subscription.monitorService.logprofile](azure.subscription.monitorservice.logprofile.md) | Azure Monitor log profile | +| [azure.subscription.mySqlService](azure.subscription.mysqlservice.md) | Azure Database for MySQL | +| [azure.subscription.mySqlService.database](azure.subscription.mysqlservice.database.md) | Azure Database for MySQL database | +| [azure.subscription.mySqlService.flexibleServer](azure.subscription.mysqlservice.flexibleserver.md) | Azure Database for MySQL flexible server | +| [azure.subscription.mySqlService.server](azure.subscription.mysqlservice.server.md) | Azure Database for MySQL server | +| [azure.subscription.networkService](azure.subscription.networkservice.md) | Azure network | +| [azure.subscription.networkService.appSecurityGroup](azure.subscription.networkservice.appsecuritygroup.md) | Azure network application security group | +| [azure.subscription.networkService.applicationFirewallPolicy](azure.subscription.networkservice.applicationfirewallpolicy.md) | Azure Application Firewall Policy (WAF) | +| [azure.subscription.networkService.applicationGateway](azure.subscription.networkservice.applicationgateway.md) | Azure Application Gateway | +| [azure.subscription.networkService.backendAddressPool](azure.subscription.networkservice.backendaddresspool.md) | Azure network backend address pool | +| [azure.subscription.networkService.bastionHost](azure.subscription.networkservice.bastionhost.md) | Azure Network Bastion host | +| [azure.subscription.networkService.bgpSettings](azure.subscription.networkservice.bgpsettings.md) | Azure network BGP settings | +| [azure.subscription.networkService.bgpSettings.ipConfigurationBgpPeeringAddress](azure.subscription.networkservice.bgpsettings.ipconfigurationbgppeeringaddress.md) | Azure BGP settings IP configuration | +| [azure.subscription.networkService.firewall](azure.subscription.networkservice.firewall.md) | Azure network firewall | +| [azure.subscription.networkService.firewall.applicationRule](azure.subscription.networkservice.firewall.applicationrule.md) | Azure network firewall application rule | +| [azure.subscription.networkService.firewall.ipConfig](azure.subscription.networkservice.firewall.ipconfig.md) | Azure network firewall IP configuration | +| [azure.subscription.networkService.firewall.natRule](azure.subscription.networkservice.firewall.natrule.md) | Azure network firewall NAT rule | +| [azure.subscription.networkService.firewall.networkRule](azure.subscription.networkservice.firewall.networkrule.md) | Azure network firewall network rule | +| [azure.subscription.networkService.firewallPolicy](azure.subscription.networkservice.firewallpolicy.md) | Azure network firewall policy | +| [azure.subscription.networkService.frontendIpConfig](azure.subscription.networkservice.frontendipconfig.md) | Azure network frontend IP configuration | +| [azure.subscription.networkService.inboundNatPool](azure.subscription.networkservice.inboundnatpool.md) | Azure network inbound NAT pool | +| [azure.subscription.networkService.inboundNatRule](azure.subscription.networkservice.inboundnatrule.md) | Azure network inbound NAT rule | +| [azure.subscription.networkService.interface](azure.subscription.networkservice.interface.md) | Azure network interface | +| [azure.subscription.networkService.ipAddress](azure.subscription.networkservice.ipaddress.md) | Azure network IP address | +| [azure.subscription.networkService.loadBalancer](azure.subscription.networkservice.loadbalancer.md) | Azure Load Balancer | +| [azure.subscription.networkService.loadBalancerRule](azure.subscription.networkservice.loadbalancerrule.md) | Azure Load Balancer rule | +| [azure.subscription.networkService.natGateway](azure.subscription.networkservice.natgateway.md) | Azure network NAT gateway | +| [azure.subscription.networkService.outboundRule](azure.subscription.networkservice.outboundrule.md) | Azure network outbound rule | +| [azure.subscription.networkService.probe](azure.subscription.networkservice.probe.md) | Azure network probe | +| [azure.subscription.networkService.securityGroup](azure.subscription.networkservice.securitygroup.md) | Azure network security group | +| [azure.subscription.networkService.securityrule](azure.subscription.networkservice.securityrule.md) | Azure network security rule | +| [azure.subscription.networkService.subnet](azure.subscription.networkservice.subnet.md) | Azure network subnet | +| [azure.subscription.networkService.virtualNetwork](azure.subscription.networkservice.virtualnetwork.md) | Azure Virtual network (VNet) | +| [azure.subscription.networkService.virtualNetwork.dhcpOptions](azure.subscription.networkservice.virtualnetwork.dhcpoptions.md) | Azure Virtual Network DHCP options | +| [azure.subscription.networkService.virtualNetworkGateway](azure.subscription.networkservice.virtualnetworkgateway.md) | Azure virtual network (VNet) gateway | +| [azure.subscription.networkService.virtualNetworkGateway.connection](azure.subscription.networkservice.virtualnetworkgateway.connection.md) | Azure Virtual Network (VNet) gateway connection | +| [azure.subscription.networkService.virtualNetworkGateway.ipConfig](azure.subscription.networkservice.virtualnetworkgateway.ipconfig.md) | Azure Virtual Network (VNet) gateway IP configuration | +| [azure.subscription.networkService.watcher](azure.subscription.networkservice.watcher.md) | Azure Network Watcher | +| [azure.subscription.networkService.watcher.flowlog](azure.subscription.networkservice.watcher.flowlog.md) | Azure Network Watcher flow log | +| [azure.subscription.postgreSqlService](azure.subscription.postgresqlservice.md) | Azure Database for PostgreSQL | +| [azure.subscription.postgreSqlService.database](azure.subscription.postgresqlservice.database.md) | Azure Database for PostgreSQL database | +| [azure.subscription.postgreSqlService.server](azure.subscription.postgresqlservice.server.md) | Azure Database for PostgreSQL server | +| [azure.subscription.resource](azure.subscription.resource.md) | Azure resource | +| [azure.subscription.resourcegroup](azure.subscription.resourcegroup.md) | Azure resource group | +| [azure.subscription.sqlService](azure.subscription.sqlservice.md) | Azure SQL | +| [azure.subscription.sqlService.configuration](azure.subscription.sqlservice.configuration.md) | Azure SQL configuration | +| [azure.subscription.sqlService.database](azure.subscription.sqlservice.database.md) | Azure SQL server database | +| [azure.subscription.sqlService.databaseusage](azure.subscription.sqlservice.databaseusage.md) | Azure SQL database usage | +| [azure.subscription.sqlService.firewallrule](azure.subscription.sqlservice.firewallrule.md) | Azure SQL firewall rule | +| [azure.subscription.sqlService.server](azure.subscription.sqlservice.server.md) | Azure SQL server | +| [azure.subscription.sqlService.server.administrator](azure.subscription.sqlservice.server.administrator.md) | Azure SQL server administrator | +| [azure.subscription.sqlService.server.vulnerabilityassessmentsettings](azure.subscription.sqlservice.server.vulnerabilityassessmentsettings.md) | Azure SQL server vulnerability assessment settings | +| [azure.subscription.sqlService.virtualNetworkRule](azure.subscription.sqlservice.virtualnetworkrule.md) | Azure SQL virtual network rule | +| [azure.subscription.storageService](azure.subscription.storageservice.md) | Azure Storage | +| [azure.subscription.storageService.account](azure.subscription.storageservice.account.md) | Azure Storage account | +| [azure.subscription.storageService.account.container](azure.subscription.storageservice.account.container.md) | Azure Storage container | +| [azure.subscription.storageService.account.dataProtection](azure.subscription.storageservice.account.dataprotection.md) | Azure Storage account data protection | +| [azure.subscription.storageService.account.service.properties](azure.subscription.storageservice.account.service.properties.md) | Azure Storage account service properties | +| [azure.subscription.storageService.account.service.properties.logging](azure.subscription.storageservice.account.service.properties.logging.md) | Azure Storage account service properties logging | +| [azure.subscription.storageService.account.service.properties.metrics](azure.subscription.storageservice.account.service.properties.metrics.md) | Azure Storage account service properties metrics | +| [azure.subscription.storageService.account.service.properties.retentionPolicy](azure.subscription.storageservice.account.service.properties.retentionpolicy.md) | Azure Storage account service properties retention policy | +| [azure.subscription.webService](azure.subscription.webservice.md) | Azure Web | +| [azure.subscription.webService.appsite](azure.subscription.webservice.appsite.md) | Azure Web app site | +| [azure.subscription.webService.appsiteauthsettings](azure.subscription.webservice.appsiteauthsettings.md) | Azure AppSite authentication settings | +| [azure.subscription.webService.appsiteconfig](azure.subscription.webservice.appsiteconfig.md) | Azure AppSite config | diff --git a/docs/mql/resources/azure-pack/azure.md b/docs/mql/resources/azure-pack/azure.md new file mode 100644 index 000000000..f0441fbd6 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.md @@ -0,0 +1,17 @@ +--- +title: azure +id: azure +sidebar_label: azure +displayed_sidebar: MQL +description: Azure resource +--- + +# azure + +**Supported platform** + +- azure + +**Description** + +Azure resource diff --git a/docs/mql/resources/azure-pack/azure.subscription.advisorservice.md b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.md new file mode 100644 index 000000000..1c960918a --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.advisorService +id: azure.subscription.advisorService +sidebar_label: azure.subscription.advisorService +displayed_sidebar: MQL +description: Azure Advisor +--- + +# azure.subscription.advisorService + +**Supported platform** + +- azure + +**Description** + +Azure Advisor + +Use the `azure.subscription.advisorService` resource to retrieve scoring and recommendations from Microsoft Azure Advisor. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | +| subscriptionId | string | Subscription identifier | +| recommendations | [][azure.subscription.advisorService.recommendation](azure.subscription.advisorservice.recommendation.md) | List of all recommendations by the advisor | +| scores | [][azure.subscription.advisorService.score](azure.subscription.advisorservice.score.md) | List of scores by categories | +| averageScore | float | Average advisory score | diff --git a/docs/mql/resources/azure-pack/azure.subscription.advisorservice.recommendation.md b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.recommendation.md new file mode 100644 index 000000000..a43dae1d8 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.recommendation.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.advisorService.recommendation +id: azure.subscription.advisorService.recommendation +sidebar_label: azure.subscription.advisorService.recommendation +displayed_sidebar: MQL +description: Azure Advisor recommendation +--- + +# azure.subscription.advisorService.recommendation + +**Supported platform** + +- azure + +**Description** + +Azure Advisor recommendation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------ | ----------------------------------- | +| id | string | Recommendation ID | +| name | string | Recommendation name | +| type | string | Recommendation resource type | +| category | string | Recommendation category | +| risk | string | Recommendation risk | +| impact | string | Recommendation risk | +| description | string | Recommendation description | +| remediation | string | Recommendation remediation | +| impactedResourceType | string | The impacted resource category type | +| impactedResource | string | The impacted resource | +| properties | dict | Recommendation properties | diff --git a/docs/mql/resources/azure-pack/azure.subscription.advisorservice.score.md b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.score.md new file mode 100644 index 000000000..28bc7bf4a --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.score.md @@ -0,0 +1,27 @@ +--- +title: azure.subscription.advisorService.score +id: azure.subscription.advisorService.score +sidebar_label: azure.subscription.advisorService.score +displayed_sidebar: MQL +description: Azure Advisor score +--- + +# azure.subscription.advisorService.score + +**Supported platform** + +- azure + +**Description** + +Azure Advisor score + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | +| id | string | Score identifier | +| name | string | Score name | +| type | string | Score type | +| currentScore | [azure.subscription.advisorService.securityScore](azure.subscription.advisorservice.securityscore.md) | Current score for the advisor category | +| timeSeries | [][azure.subscription.advisorService.timeSeries](azure.subscription.advisorservice.timeseries.md) | List of time series, containing previous scores for the category | diff --git a/docs/mql/resources/azure-pack/azure.subscription.advisorservice.securityscore.md b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.securityscore.md new file mode 100644 index 000000000..0ae4798ea --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.securityscore.md @@ -0,0 +1,29 @@ +--- +title: azure.subscription.advisorService.securityScore +id: azure.subscription.advisorService.securityScore +sidebar_label: azure.subscription.advisorService.securityScore +displayed_sidebar: MQL +description: Azure Advisor security score +--- + +# azure.subscription.advisorService.securityScore + +**Supported platform** + +- azure + +**Description** + +Azure Advisor security score + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------ | +| id | string | Security score identifier | +| score | float | Security score score | +| date | time | The date the score was calculated | +| potentialScoreIncrease | float | The potential percentage increase in overall score at subscription level after all recommendations are implemented | +| impactedResourcesCount | int | The number of impacted resources | +| categoryCount | int | The count of impacted categories | +| consumptionUnits | float | The consumption units for the score | diff --git a/docs/mql/resources/azure-pack/azure.subscription.advisorservice.timeseries.md b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.timeseries.md new file mode 100644 index 000000000..56ae7c1d3 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.advisorservice.timeseries.md @@ -0,0 +1,25 @@ +--- +title: azure.subscription.advisorService.timeSeries +id: azure.subscription.advisorService.timeSeries +sidebar_label: azure.subscription.advisorService.timeSeries +displayed_sidebar: MQL +description: Azure Advisor time series +--- + +# azure.subscription.advisorService.timeSeries + +**Supported platform** + +- azure + +**Description** + +Azure Advisor time series + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| id | string | Advisor time series identifier | +| aggregationLevel | string | The aggregation level for the time series | +| scores | [][azure.subscription.advisorService.securityScore](azure.subscription.advisorservice.securityscore.md) | The scores in the time series | diff --git a/docs/mql/resources/azure-pack/azure.subscription.aksservice.cluster.md b/docs/mql/resources/azure-pack/azure.subscription.aksservice.cluster.md new file mode 100644 index 000000000..b21d5c9d8 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.aksservice.cluster.md @@ -0,0 +1,42 @@ +--- +title: azure.subscription.aksService.cluster +id: azure.subscription.aksService.cluster +sidebar_label: azure.subscription.aksService.cluster +displayed_sidebar: MQL +description: Azure Kubernetes Service cluster +--- + +# azure.subscription.aksService.cluster + +**Supported platform** + +- azure + +**Description** + +Azure Kubernetes Service cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ----------------- | -------------------------------------------------- | +| id | string | ID of the AKS cluster | +| name | string | Name of the AKS cluster | +| location | string | Location of the AKS cluster | +| kubernetesVersion | string | The Kubernetes version of the AKS cluster | +| provisioningState | string | The provisioning state of the AKS cluster | +| powerState | string | The power state of the AKS cluster | +| tags | map[string]string | The tags of the AKS cluster | +| nodeResourceGroup | string | The node resource group of the AKS cluster | +| createdAt | time | Time the AKS cluster was created | +| rbacEnabled | bool | Whether RBAC is enabled for the AKS cluster | +| fqdn | string | The fully qualified domain name of the AKS cluster | +| dnsPrefix | string | The DNS prefix of the AKS cluster | +| storageProfile | dict | The storage profile of the AKS cluster | +| workloadAutoScalerProfile | dict | The workload autoscaler profile of the AKS cluster | +| securityProfile | dict | The security profile of the AKS cluster | +| podIdentityProfile | dict | The pod identity profile of the AKS cluster | +| networkProfile | dict | The network profile of the AKS cluster | +| httpProxyConfig | dict | The HTTP proxy config of the AKS cluster | +| addonProfiles | []dict | The add-on profiles of the AKS cluster | +| agentPoolProfiles | []dict | The agent pool profiles of the AKS cluster | diff --git a/docs/mql/resources/azure-pack/azure.subscription.aksservice.md b/docs/mql/resources/azure-pack/azure.subscription.aksservice.md new file mode 100644 index 000000000..daafddc68 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.aksservice.md @@ -0,0 +1,24 @@ +--- +title: azure.subscription.aksService +id: azure.subscription.aksService +sidebar_label: azure.subscription.aksService +displayed_sidebar: MQL +description: Azure Kubernetes Service +--- + +# azure.subscription.aksService + +**Supported platform** + +- azure + +**Description** + +Azure Kubernetes Service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------- | +| subscriptionId | string | Subscription identifier | +| clusters | [][azure.subscription.aksService.cluster](azure.subscription.aksservice.cluster.md) | List all the AKS clusters inside the subscription | diff --git a/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.md b/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.md new file mode 100644 index 000000000..486242e22 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.authorizationService +id: azure.subscription.authorizationService +sidebar_label: azure.subscription.authorizationService +displayed_sidebar: MQL +description: Azure authorization +--- + +# azure.subscription.authorizationService + +**Supported platform** + +- azure + +**Description** + +Azure authorization + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | +| subscriptionId | string | Subscription identifier | +| roleDefinitions | [][azure.subscription.authorizationService.roleDefinition](azure.subscription.authorizationservice.roledefinition.md) | Role definitions for the Azure subscription | + +**References** + +- [Azure RBAC documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.roledefinition.md b/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.roledefinition.md new file mode 100644 index 000000000..03aea906f --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.roledefinition.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.authorizationService.roleDefinition +id: azure.subscription.authorizationService.roleDefinition +sidebar_label: azure.subscription.authorizationService.roleDefinition +displayed_sidebar: MQL +description: Azure role definition +--- + +# azure.subscription.authorizationService.roleDefinition + +**Supported platform** + +- azure + +**Description** + +Azure role definition + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | +| id | string | ID of the role definition | +| description | string | Description of the role definition | +| name | string | Name of the role definition | +| isCustom | bool | Whether the role definition is manually created | +| scopes | []string | Scopes for which the role definition applies | +| permissions | [][azure.subscription.authorizationService.roleDefinition.permission](azure.subscription.authorizationservice.roledefinition.permission.md) | Permissions that are attached to the role definition | + +**References** + +- [Azure RBAC documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.roledefinition.permission.md b/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.roledefinition.permission.md new file mode 100644 index 000000000..063a1c250 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.authorizationservice.roledefinition.permission.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.authorizationService.roleDefinition.permission +id: azure.subscription.authorizationService.roleDefinition.permission +sidebar_label: azure.subscription.authorizationService.roleDefinition.permission +displayed_sidebar: MQL +description: Azure role definition permission +--- + +# azure.subscription.authorizationService.roleDefinition.permission + +**Supported platform** + +- azure + +**Description** + +Azure role definition permission + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ---------------- | ---------------------------------------------------------------- | +| id | string | ID of the permission | +| allowedActions | []string | List of allowed actions that are attached to the permission | +| deniedActions | []string | List of denied actions that are attached to the permission | +| allowedDataActions | []string | List of allowed data actions that are attached to the permission | +| deniedDataActions | []string | List of denied data actions that are attached to the permission | + +**References** + +- [Azure RBAC documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.clouddefenderservice.md b/docs/mql/resources/azure-pack/azure.subscription.clouddefenderservice.md new file mode 100644 index 000000000..3263f1257 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.clouddefenderservice.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.cloudDefenderService +id: azure.subscription.cloudDefenderService +sidebar_label: azure.subscription.cloudDefenderService +displayed_sidebar: MQL +description: Microsoft Defender for Cloud +--- + +# azure.subscription.cloudDefenderService + +**Supported platform** + +- azure + +**Description** + +Microsoft Defender for Cloud + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| subscriptionId | string | Subscription identifier | +| monitoringAgentAutoProvision | bool | Whether the monitoring agent is automatically provisioned on new VMs | +| defenderForServers | dict | List of Defender for Server components and whether they are enabled | +| defenderForContainers | dict | List of Defender for Container components and whether they are enabled | +| securityContacts | [][azure.subscription.cloudDefenderService.securityContact](azure.subscription.clouddefenderservice.securitycontact.md) | List of configured security contacts | + +**References** + +- [Microsoft Defender for Cloud Apps overview](https://learn.microsoft.com/en-us/defender-cloud-apps/what-is-defender-for-cloud-apps) diff --git a/docs/mql/resources/azure-pack/azure.subscription.clouddefenderservice.securitycontact.md b/docs/mql/resources/azure-pack/azure.subscription.clouddefenderservice.securitycontact.md new file mode 100644 index 000000000..02df019a4 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.clouddefenderservice.securitycontact.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.cloudDefenderService.securityContact +id: azure.subscription.cloudDefenderService.securityContact +sidebar_label: azure.subscription.cloudDefenderService.securityContact +displayed_sidebar: MQL +description: Microsoft Defender for Cloud security contact +--- + +# azure.subscription.cloudDefenderService.securityContact + +**Supported platform** + +- azure + +**Description** + +Microsoft Defender for Cloud security contact + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ---------------- | ----------------------------------- | +| id | string | ID of the security contact | +| name | string | Name of the security contact | +| emails | []string | Emails that receive security alerts | +| alertNotifications | dict | Alerts notification settings | +| notificationsByRole | dict | Notifications by role settings | + +**References** + +- [Microsoft Defender for Cloud Apps overview](https://learn.microsoft.com/en-us/defender-cloud-apps/what-is-defender-for-cloud-apps) diff --git a/docs/mql/resources/azure-pack/azure.subscription.computeservice.disk.md b/docs/mql/resources/azure-pack/azure.subscription.computeservice.disk.md new file mode 100644 index 000000000..9e32daf6c --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.computeservice.disk.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.computeService.disk +id: azure.subscription.computeService.disk +sidebar_label: azure.subscription.computeService.disk +displayed_sidebar: MQL +description: Azure disk resource +--- + +# azure.subscription.computeService.disk + +**Supported platform** + +- azure + +**Description** + +Azure disk resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------- | ------------------------------------------------------------------------------- | +| id | string | Disk resource ID | +| name | string | Disk resource name | +| location | string | Disk resource location | +| tags | map[string]string | Disk resource tags | +| type | string | Disk resource type | +| managedBy | string | A relative URI containing the ID of the VM that has the disk attached | +| managedByExtended | []string | List of relative URIs containing the IDs of the VMs that have the disk attached | +| zones | []string | The logical zone list for disk | +| sku | dict | The disk SKU name and tier | +| properties | dict | Disk resource properties | diff --git a/docs/mql/resources/azure-pack/azure.subscription.computeservice.md b/docs/mql/resources/azure-pack/azure.subscription.computeservice.md new file mode 100644 index 000000000..834f9065c --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.computeservice.md @@ -0,0 +1,25 @@ +--- +title: azure.subscription.computeService +id: azure.subscription.computeService +sidebar_label: azure.subscription.computeService +displayed_sidebar: MQL +description: Azure compute +--- + +# azure.subscription.computeService + +**Supported platform** + +- azure + +**Description** + +Azure compute + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------ | +| subscriptionId | string | Subscription identifier | +| vms | [][azure.subscription.computeService.vm](azure.subscription.computeservice.vm.md) | All compute instances under a subscription | +| disks | [][azure.subscription.computeService.disk](azure.subscription.computeservice.disk.md) | All the disks under a subscription | diff --git a/docs/mql/resources/azure-pack/azure.subscription.computeservice.vm.md b/docs/mql/resources/azure-pack/azure.subscription.computeservice.vm.md new file mode 100644 index 000000000..2c07e19bf --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.computeservice.vm.md @@ -0,0 +1,39 @@ +--- +title: azure.subscription.computeService.vm +id: azure.subscription.computeService.vm +sidebar_label: azure.subscription.computeService.vm +displayed_sidebar: MQL +description: Azure compute virtual machine +--- + +# azure.subscription.computeService.vm + +**Supported platform** + +- azure + +**Description** + +Azure compute virtual machine + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------ | +| id | string | VM ID | +| name | string | VM name | +| location | string | VM location | +| zones | []string | VM zones | +| state | string | VM state | +| isRunning | bool | Indicates if the VM is running | +| tags | map[string]string | VM tags | +| type | string | VM type | +| properties | dict | VM properties | +| extensions | []dict | VM extension | +| osDisk | [azure.subscription.computeService.disk](azure.subscription.computeservice.disk.md) | VM compute disk | +| dataDisks | [][azure.subscription.computeService.disk](azure.subscription.computeservice.disk.md) | VM compute data disk | +| publicIpAddresses | [][azure.subscription.networkService.ipAddress](azure.subscription.networkservice.ipaddress.md) | VM public IP addresses | + +**References** + +- [Virtual machines in Azure](https://learn.microsoft.com/en-us/azure/virtual-machines/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.cosmosdbservice.account.md b/docs/mql/resources/azure-pack/azure.subscription.cosmosdbservice.account.md new file mode 100644 index 000000000..7183869d1 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.cosmosdbservice.account.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.cosmosDbService.account +id: azure.subscription.cosmosDbService.account +sidebar_label: azure.subscription.cosmosDbService.account +displayed_sidebar: MQL +description: Azure Cosmos DB account +--- + +# azure.subscription.cosmosDbService.account + +**Supported platform** + +- azure + +**Description** + +Azure Cosmos DB account + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | ---------------------------- | +| id | string | Cosmos DB account ID | +| name | string | Cosmos DB account name | +| properties | dict | Cosmos DB account properties | +| location | string | Cosmos DB account location | +| tags | map[string]string | Cosmos DB account tags | +| type | string | Cosmos DB account type | +| kind | string | Cosmos DB account kind | + +**References** + +- [Azure Cosmos DB documentation](https://learn.microsoft.com/en-us/azure/cosmos-db/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.cosmosdbservice.md b/docs/mql/resources/azure-pack/azure.subscription.cosmosdbservice.md new file mode 100644 index 000000000..3237531a1 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.cosmosdbservice.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.cosmosDbService +id: azure.subscription.cosmosDbService +sidebar_label: azure.subscription.cosmosDbService +displayed_sidebar: MQL +description: Azure Cosmos DB +--- + +# azure.subscription.cosmosDbService + +**Supported platform** + +- azure + +**Description** + +Azure Cosmos DB + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ----------------------------------------------------------------------------------------------------- | -------------------------- | +| subscriptionId | string | Subscription identifier | +| accounts | [][azure.subscription.cosmosDbService.account](azure.subscription.cosmosdbservice.account.md) | List of Cosmos DB accounts | + +**References** + +- [Azure Cosmos DB documentation](https://learn.microsoft.com/en-us/azure/cosmos-db/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.certificate.md b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.certificate.md new file mode 100644 index 000000000..17195ba76 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.certificate.md @@ -0,0 +1,38 @@ +--- +title: azure.subscription.keyVaultService.certificate +id: azure.subscription.keyVaultService.certificate +sidebar_label: azure.subscription.keyVaultService.certificate +displayed_sidebar: MQL +description: Azure Key Vault certificate +--- + +# azure.subscription.keyVaultService.certificate + +**Supported platform** + +- azure + +**Description** + +Azure Key Vault certificate + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------------------------------------------------------------------------------------------------------------- | ---------------------------------- | +| id | string | Certificate ID | +| tags | map[string]string | Certificate tags | +| x5t | string | Certificate x5t | +| enabled | bool | Whether the certificate is enabled | +| notBefore | time | Certificate not before date | +| expires | time | Certificate expiration date | +| created | time | Certificate creation time | +| updated | time | Certificate last update time | +| recoveryLevel | string | Certificate recovery level | +| certName | string | Certificate name | +| version | string | Certificate version | +| versions | [][azure.subscription.keyVaultService.certificate](azure.subscription.keyvaultservice.certificate.md) | List of certificate versions | + +**References** + +- [Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.key.md b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.key.md new file mode 100644 index 000000000..b633f560b --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.key.md @@ -0,0 +1,38 @@ +--- +title: azure.subscription.keyVaultService.key +id: azure.subscription.keyVaultService.key +sidebar_label: azure.subscription.keyVaultService.key +displayed_sidebar: MQL +description: Azure Key Vault key +--- + +# azure.subscription.keyVaultService.key + +**Supported platform** + +- azure + +**Description** + +Azure Key Vault key + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------------------------------------- | -------------------------------- | +| kid | string | Key ID | +| tags | map[string]string | Key tags | +| managed | bool | Whether the key is managed | +| enabled | bool | Whether the key is enabled | +| notBefore | time | Date the key begins to be usable | +| expires | time | Date the key expires | +| created | time | Key creation time | +| updated | time | Key last update time | +| recoveryLevel | string | Key recovery level | +| keyName | string | Key name | +| version | string | Key version | +| versions | [][azure.subscription.keyVaultService.key](azure.subscription.keyvaultservice.key.md) | List of key versions | + +**References** + +- [Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.md b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.md new file mode 100644 index 000000000..b8dc88370 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.keyVaultService +id: azure.subscription.keyVaultService +sidebar_label: azure.subscription.keyVaultService +displayed_sidebar: MQL +description: Azure Key Vault +--- + +# azure.subscription.keyVaultService + +**Supported platform** + +- azure + +**Description** + +Azure Key Vault + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------------------------------------------------------------------- | ------------------------ | +| subscriptionId | string | Subscription identifier | +| vaults | [][azure.subscription.keyVaultService.vault](azure.subscription.keyvaultservice.vault.md) | List of Azure key vaults | + +**References** + +- [Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.secret.md b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.secret.md new file mode 100644 index 000000000..7245e6452 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.secret.md @@ -0,0 +1,38 @@ +--- +title: azure.subscription.keyVaultService.secret +id: azure.subscription.keyVaultService.secret +sidebar_label: azure.subscription.keyVaultService.secret +displayed_sidebar: MQL +description: Azure Key Vault secret +--- + +# azure.subscription.keyVaultService.secret + +**Supported platform** + +- azure + +**Description** + +Azure Key Vault secret + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------------------------------------------------------------------- | ----------------------------------- | +| id | string | Secret ID | +| tags | map[string]string | Secret tags | +| contentType | string | Secret content type | +| managed | bool | Whether the secret is managed | +| enabled | bool | Whether the secret is enabled | +| notBefore | time | Date the secret begins to be usable | +| expires | time | Secret expiration date | +| created | time | Secret creation date | +| updated | time | Secret last updated date | +| secretName | string | Secret name | +| version | string | Secret version | +| versions | [][azure.subscription.keyVaultService.secret](azure.subscription.keyvaultservice.secret.md) | List of secret versions | + +**References** + +- [Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.vault.md b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.vault.md new file mode 100644 index 000000000..a02c4a933 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.keyvaultservice.vault.md @@ -0,0 +1,38 @@ +--- +title: azure.subscription.keyVaultService.vault +id: azure.subscription.keyVaultService.vault +sidebar_label: azure.subscription.keyVaultService.vault +displayed_sidebar: MQL +description: Azure Key Vault vault +--- + +# azure.subscription.keyVaultService.vault + +**Supported platform** + +- azure + +**Description** + +Azure Key Vault vault + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | +| id | string | Vault ID | +| vaultName | string | Vault name | +| type | string | Vault type | +| location | string | Vault location | +| tags | map[string]string | Vault tags | +| vaultUri | string | Vault URL | +| properties | dict | Vault properties | +| rbacAuthorizationEnabled | bool | Whether RBAC access to the vault is enabled | +| keys | [][azure.subscription.keyVaultService.key](azure.subscription.keyvaultservice.key.md) | Vault keys | +| certificates | [][azure.subscription.keyVaultService.certificate](azure.subscription.keyvaultservice.certificate.md) | Vault certificates | +| secrets | [][azure.subscription.keyVaultService.secret](azure.subscription.keyvaultservice.secret.md) | Vault secrets | +| diagnosticSettings | [][azure.subscription.monitorService.diagnosticsetting](azure.subscription.monitorservice.diagnosticsetting.md) | Vault diagnostic settings | + +**References** + +- [Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.database.md b/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.database.md new file mode 100644 index 000000000..6e0a5a4c4 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.database.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.mariaDbService.database +id: azure.subscription.mariaDbService.database +sidebar_label: azure.subscription.mariaDbService.database +displayed_sidebar: MQL +description: Azure Database for MariaDB database +--- + +# azure.subscription.mariaDbService.database + +**Supported platform** + +- azure + +**Description** + +Azure Database for MariaDB database + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ------------------------------ | +| id | string | MariaDB database ID | +| name | string | MariaDB database name | +| type | string | MariaDB database type | +| charset | string | MariaDB database character set | +| collation | string | MariaDB database collation | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/mariadb/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.md b/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.md new file mode 100644 index 000000000..d9339785b --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.mariaDbService +id: azure.subscription.mariaDbService +sidebar_label: azure.subscription.mariaDbService +displayed_sidebar: MQL +description: Azure Database for MariaDB +--- + +# azure.subscription.mariaDbService + +**Supported platform** + +- azure + +**Description** + +Azure Database for MariaDB + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------------------------------------------------------------------- | ----------------------- | +| subscriptionId | string | Subscription identifier | +| servers | [][azure.subscription.mariaDbService.server](azure.subscription.mariadbservice.server.md) | List of MariaDB servers | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/mariadb/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.server.md b/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.server.md new file mode 100644 index 000000000..b065e9026 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.mariadbservice.server.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.mariaDbService.server +id: azure.subscription.mariaDbService.server +sidebar_label: azure.subscription.mariaDbService.server +displayed_sidebar: MQL +description: Azure Database for MariaDB server +--- + +# azure.subscription.mariaDbService.server + +**Supported platform** + +- azure + +**Description** + +Azure Database for MariaDB server + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------- | +| id | string | MariaDB server ID | +| name | string | MariaDB server name | +| location | string | MariaDB server location | +| tags | map[string]string | MariaDB server tags | +| type | string | MariaDB server type | +| properties | dict | MariaDB server properties | +| configuration | [][azure.subscription.sqlService.configuration](azure.subscription.sqlservice.configuration.md) | MariaDB server configuration | +| databases | [][azure.subscription.mariaDbService.database](azure.subscription.mariadbservice.database.md) | MariaDB server databases | +| firewallRules | [][azure.subscription.sqlService.firewallrule](azure.subscription.sqlservice.firewallrule.md) | MariaDB server firewall rules | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/mariadb/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.md b/docs/mql/resources/azure-pack/azure.subscription.md new file mode 100644 index 000000000..5633c6ef1 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.md @@ -0,0 +1,61 @@ +--- +title: azure.subscription +id: azure.subscription +sidebar_label: azure.subscription +displayed_sidebar: MQL +description: Azure subscription +--- + +# azure.subscription + +**Supported platform** + +- azure + +**Description** + +Azure subscription + +Use the `azure.subscription` resource to assess the configuration of Azure subscriptions. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------- | +| id | string | Full resource identifier of the subscription | +| name | string | Name of the subscription | +| subscriptionId | string | Subscription identifier | +| tenantId | string | Subscription tenant identifier | +| managedByTenants | []string | List of tenants that manage the subscription | +| tags | map[string]string | Subscription tags | +| state | string | Subscription state | +| authorizationSource | string | Subscription authorization source | +| subscriptionsPolicies | dict | Subscription policies | +| resources | [][azure.subscription.resource](azure.subscription.resource.md) | All resources in a subscription | +| resourceGroups | [][azure.subscription.resourcegroup](azure.subscription.resourcegroup.md) | Resource groups in the subscription | +| compute | [azure.subscription.computeService](azure.subscription.computeservice.md) | Compute resources in the subscription | +| network | [azure.subscription.networkService](azure.subscription.networkservice.md) | Network resources in the subscription | +| storage | [azure.subscription.storageService](azure.subscription.storageservice.md) | Storage resources in the subscription | +| web | [azure.subscription.webService](azure.subscription.webservice.md) | Web resources in the subscription | +| sql | [azure.subscription.sqlService](azure.subscription.sqlservice.md) | SQL resources in the subscription | +| mySql | [azure.subscription.mySqlService](azure.subscription.mysqlservice.md) | MySQL resources inside the subscription | +| postgreSql | [azure.subscription.postgreSqlService](azure.subscription.postgresqlservice.md) | PostgreSQL resources in the subscription | +| mariaDb | [azure.subscription.mariaDbService](azure.subscription.mariadbservice.md) | MariaDB resources in the subscription | +| cosmosDb | [azure.subscription.cosmosDbService](azure.subscription.cosmosdbservice.md) | Cosmos DB resources in the subscription | +| keyVault | [azure.subscription.keyVaultService](azure.subscription.keyvaultservice.md) | Azure Key Vault resources in the subscription | +| authorization | [azure.subscription.authorizationService](azure.subscription.authorizationservice.md) | Authorization resources in the subscription | +| monitor | [azure.subscription.monitorService](azure.subscription.monitorservice.md) | Monitor resources in the subscription | +| cloudDefender | [azure.subscription.cloudDefenderService](azure.subscription.clouddefenderservice.md) | Cloud defender resources in the subscription | +| aks | [azure.subscription.aksService](azure.subscription.aksservice.md) | AKS resources in the subscription | +| advisor | [azure.subscription.advisorService](azure.subscription.advisorservice.md) | Advisor resources in the subscription | + +**Examples** + +Return the subscription ID and a list of tenants that manage the subscription + +```coffee +azure.subscription { + subscriptionId + managedByTenants +} +``` diff --git a/docs/mql/resources/azure-pack/azure.subscription.monitorservice.activitylog.alert.md b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.activitylog.alert.md new file mode 100644 index 000000000..ccc55db1e --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.activitylog.alert.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.monitorService.activityLog.alert +id: azure.subscription.monitorService.activityLog.alert +sidebar_label: azure.subscription.monitorService.activityLog.alert +displayed_sidebar: MQL +description: Azure Monitor activity log alert +--- + +# azure.subscription.monitorService.activityLog.alert + +**Supported platform** + +- azure + +**Description** + +Azure Monitor activity log alert + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------- | --------------------------------------------------------------- | +| id | string | ID of the activity log alert | +| type | string | Type of the activity log alert | +| name | string | Name of the activity log alert | +| description | string | Description of the activity log alert | +| conditions | []dict | Conditions for the activity log alert, all of which must be met | +| location | string | Location of the alert | +| tags | map[string]string | Tags of the alert | +| actions | []dict | Actions that activate when the conditions are met | +| scopes | []string | List of resource IDs that must be present to trigger the alert | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/azure-monitor/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.monitorservice.activitylog.md b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.activitylog.md new file mode 100644 index 000000000..57b411881 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.activitylog.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.monitorService.activityLog +id: azure.subscription.monitorService.activityLog +sidebar_label: azure.subscription.monitorService.activityLog +displayed_sidebar: MQL +description: Azure Monitor activity log +--- + +# azure.subscription.monitorService.activityLog + +**Supported platform** + +- azure + +**Description** + +Azure Monitor activity log + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------- | +| subscriptionId | string | Subscription identifier | +| alerts | [][azure.subscription.monitorService.activityLog.alert](azure.subscription.monitorservice.activitylog.alert.md) | List of activity log alerts | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/azure-monitor/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.monitorservice.applicationinsight.md b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.applicationinsight.md new file mode 100644 index 000000000..c643e9ffc --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.applicationinsight.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.monitorService.applicationInsight +id: azure.subscription.monitorService.applicationInsight +sidebar_label: azure.subscription.monitorService.applicationInsight +displayed_sidebar: MQL +description: Azure Monitor application insights +--- + +# azure.subscription.monitorService.applicationInsight + +**Supported platform** + +- azure + +**Description** + +Azure Monitor application insights + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | ------------------------------ | +| id | string | Application insight ID | +| name | string | Application insight name | +| properties | dict | Application insight properties | +| tags | map[string]string | Application insight tags | +| location | string | Application insight location | +| kind | string | Application insight kind | +| type | string | Application insight type | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/azure-monitor/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.monitorservice.diagnosticsetting.md b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.diagnosticsetting.md new file mode 100644 index 000000000..4fafa8cc2 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.diagnosticsetting.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.monitorService.diagnosticsetting +id: azure.subscription.monitorService.diagnosticsetting +sidebar_label: azure.subscription.monitorService.diagnosticsetting +displayed_sidebar: MQL +description: Azure Monitor diagnostic setting +--- + +# azure.subscription.monitorService.diagnosticsetting + +**Supported platform** + +- azure + +**Description** + +Azure Monitor diagnostic setting + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------- | +| id | string | Diagnostic setting ID | +| name | string | Diagnostic setting name | +| type | string | Diagnostic setting type | +| properties | dict | Diagnostic setting properties | +| storageAccountId | string | ID of the diagnostic setting storage account | +| storageAccount | [azure.subscription.storageService.account](azure.subscription.storageservice.account.md) | Diagnostic setting storage account | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/azure-monitor/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.monitorservice.logprofile.md b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.logprofile.md new file mode 100644 index 000000000..cbbd22958 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.logprofile.md @@ -0,0 +1,34 @@ +--- +title: azure.subscription.monitorService.logprofile +id: azure.subscription.monitorService.logprofile +sidebar_label: azure.subscription.monitorService.logprofile +displayed_sidebar: MQL +description: Azure Monitor log profile +--- + +# azure.subscription.monitorService.logprofile + +**Supported platform** + +- azure + +**Description** + +Azure Monitor log profile + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------------------------------------------------------------------- | ------------------------------------- | +| id | string | Log profile ID | +| name | string | Log profile name | +| location | string | Log profile location | +| type | string | Log profile type | +| tags | map[string]string | Log profile tags | +| properties | dict | Log profile properties | +| storageAccountId | string | ID of the log profile storage account | +| storageAccount | [azure.subscription.storageService.account](azure.subscription.storageservice.account.md) | Log profile storage account | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/azure-monitor/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.monitorservice.md b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.md new file mode 100644 index 000000000..a03c1a31e --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.monitorservice.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.monitorService +id: azure.subscription.monitorService +sidebar_label: azure.subscription.monitorService +displayed_sidebar: MQL +description: Azure Monitor +--- + +# azure.subscription.monitorService + +**Supported platform** + +- azure + +**Description** + +Azure Monitor + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| subscriptionId | string | Subscription identifier | +| logProfiles | [][azure.subscription.monitorService.logprofile](azure.subscription.monitorservice.logprofile.md) | List of log profiles | +| diagnosticSettings | [][azure.subscription.monitorService.diagnosticsetting](azure.subscription.monitorservice.diagnosticsetting.md) | List of diagnostic settings for the subscription | +| applicationInsights | [][azure.subscription.monitorService.applicationInsight](azure.subscription.monitorservice.applicationinsight.md) | Application insights for the subscription | +| activityLog | [azure.subscription.monitorService.activityLog](azure.subscription.monitorservice.activitylog.md) | Monitor activity log | + +**References** + +- [Azure Database for MariaDB documentation](https://learn.microsoft.com/en-us/azure/azure-monitor/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.database.md b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.database.md new file mode 100644 index 000000000..ce2503cad --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.database.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.mySqlService.database +id: azure.subscription.mySqlService.database +sidebar_label: azure.subscription.mySqlService.database +displayed_sidebar: MQL +description: Azure Database for MySQL database +--- + +# azure.subscription.mySqlService.database + +**Supported platform** + +- azure + +**Description** + +Azure Database for MySQL database + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ---------------------------- | +| id | string | MySQL database ID | +| name | string | MySQL database name | +| type | string | MySQL database type | +| charset | string | MySQL database character set | +| collation | string | MySQL database collation | + +**References** + +- [Azure Database for MySQL - Flexible Server documentation](https://learn.microsoft.com/en-us/azure/mysql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.flexibleserver.md b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.flexibleserver.md new file mode 100644 index 000000000..d52ea5d75 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.flexibleserver.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.mySqlService.flexibleServer +id: azure.subscription.mySqlService.flexibleServer +sidebar_label: azure.subscription.mySqlService.flexibleServer +displayed_sidebar: MQL +description: Azure Database for MySQL flexible server +--- + +# azure.subscription.mySqlService.flexibleServer + +**Supported platform** + +- azure + +**Description** + +Azure Database for MySQL flexible server + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------ | +| id | string | MySQL flexible server ID | +| name | string | MySQL flexible server name | +| location | string | MySQL flexible server location | +| tags | map[string]string | MySQL flexible server tags | +| type | string | MySQL flexible server type | +| properties | dict | MySQL flexible server properties | +| configuration | [][azure.subscription.sqlService.configuration](azure.subscription.sqlservice.configuration.md) | MySQL flexible server configuration | +| databases | [][azure.subscription.mySqlService.database](azure.subscription.mysqlservice.database.md) | MySQL flexible server databases | +| firewallRules | [][azure.subscription.sqlService.firewallrule](azure.subscription.sqlservice.firewallrule.md) | MySQL flexible server firewall rules | + +**References** + +- [Azure Database for MySQL - Flexible Server documentation](https://learn.microsoft.com/en-us/azure/mysql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.md b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.md new file mode 100644 index 000000000..ca819e69d --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.md @@ -0,0 +1,29 @@ +--- +title: azure.subscription.mySqlService +id: azure.subscription.mySqlService +sidebar_label: azure.subscription.mySqlService +displayed_sidebar: MQL +description: Azure Database for MySQL +--- + +# azure.subscription.mySqlService + +**Supported platform** + +- azure + +**Description** + +Azure Database for MySQL + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------ | +| subscriptionId | string | Subscription identifier | +| servers | [][azure.subscription.mySqlService.server](azure.subscription.mysqlservice.server.md) | List of MySQL servers | +| flexibleServers | [][azure.subscription.mySqlService.flexibleServer](azure.subscription.mysqlservice.flexibleserver.md) | List of Flexible MySQL servers | + +**References** + +- [Azure Database for MySQL - Flexible Server documentation](https://learn.microsoft.com/en-us/azure/mysql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.server.md b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.server.md new file mode 100644 index 000000000..17de158f6 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.mysqlservice.server.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.mySqlService.server +id: azure.subscription.mySqlService.server +sidebar_label: azure.subscription.mySqlService.server +displayed_sidebar: MQL +description: Azure Database for MySQL server +--- + +# azure.subscription.mySqlService.server + +**Supported platform** + +- azure + +**Description** + +Azure Database for MySQL server + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------------------------------------------------------------------------------------------------------- | --------------------------- | +| id | string | MySQL server ID | +| name | string | MySQL server name | +| location | string | MySQL server location | +| tags | map[string]string | MySQL server tags | +| type | string | MySQL server type | +| properties | dict | MySQL server properties | +| configuration | [][azure.subscription.sqlService.configuration](azure.subscription.sqlservice.configuration.md) | MySQL server configuration | +| databases | [][azure.subscription.mySqlService.database](azure.subscription.mysqlservice.database.md) | MySQL server databases | +| firewallRules | [][azure.subscription.sqlService.firewallrule](azure.subscription.sqlservice.firewallrule.md) | MySQL server firewall rules | + +**References** + +- [Azure Database for MySQL - Flexible Server documentation](https://learn.microsoft.com/en-us/azure/mysql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.applicationfirewallpolicy.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.applicationfirewallpolicy.md new file mode 100644 index 000000000..e8a69d34a --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.applicationfirewallpolicy.md @@ -0,0 +1,34 @@ +--- +title: azure.subscription.networkService.applicationFirewallPolicy +id: azure.subscription.networkService.applicationFirewallPolicy +sidebar_label: azure.subscription.networkService.applicationFirewallPolicy +displayed_sidebar: MQL +description: Azure Application Firewall Policy (WAF) +--- + +# azure.subscription.networkService.applicationFirewallPolicy + +**Supported platform** + +- azure + +**Description** + +Azure Application Firewall Policy (WAF) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| id | string | Application firewall policy ID | +| name | string | Application firewall policy name | +| location | string | Application firewall policy location | +| tags | map[string]string | Application firewall policy tags | +| type | string | Application firewall policy resource type | +| etag | string | Application firewall policy etag | +| properties | dict | Application firewall policy properties | +| gateways | [][azure.subscription.networkService.applicationGateway](azure.subscription.networkservice.applicationgateway.md) | List of associated application gateways | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.applicationgateway.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.applicationgateway.md new file mode 100644 index 000000000..ff8337ab8 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.applicationgateway.md @@ -0,0 +1,34 @@ +--- +title: azure.subscription.networkService.applicationGateway +id: azure.subscription.networkService.applicationGateway +sidebar_label: azure.subscription.networkService.applicationGateway +displayed_sidebar: MQL +description: Azure Application Gateway +--- + +# azure.subscription.networkService.applicationGateway + +**Supported platform** + +- azure + +**Description** + +Azure Application Gateway + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| id | string | Application Gateway ID | +| name | string | Application Gateway name | +| location | string | Application Gateway location | +| tags | map[string]string | Application Gateway tags | +| type | string | Application Gateway resource type | +| etag | string | Application Gateway etag | +| properties | dict | Application Gateway properties | +| policy | [azure.subscription.networkService.applicationFirewallPolicy](azure.subscription.networkservice.applicationfirewallpolicy.md) | Gets the attached application firewall policy | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.appsecuritygroup.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.appsecuritygroup.md new file mode 100644 index 000000000..480db3bd6 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.appsecuritygroup.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.networkService.appSecurityGroup +id: azure.subscription.networkService.appSecurityGroup +sidebar_label: azure.subscription.networkService.appSecurityGroup +displayed_sidebar: MQL +description: Azure network application security group +--- + +# azure.subscription.networkService.appSecurityGroup + +**Supported platform** + +- azure + +**Description** + +Azure network application security group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | ------------------------------------- | +| id | string | Application security group ID | +| name | string | Application security group name | +| location | string | Application security group location | +| tags | map[string]string | Application security group tags | +| type | string | Application security group type | +| etag | string | Application security group etag | +| properties | dict | Application security group properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.backendaddresspool.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.backendaddresspool.md new file mode 100644 index 000000000..4eeda9ef2 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.backendaddresspool.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.backendAddressPool +id: azure.subscription.networkService.backendAddressPool +sidebar_label: azure.subscription.networkService.backendAddressPool +displayed_sidebar: MQL +description: Azure network backend address pool +--- + +# azure.subscription.networkService.backendAddressPool + +**Supported platform** + +- azure + +**Description** + +Azure network backend address pool + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------------- | +| id | string | Backend Address Pool ID | +| name | string | Backend Address Pool name | +| type | string | Backend Address Pool type | +| etag | string | Backend Address Pool etag | +| properties | dict | Backend Address Pool properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.bastionhost.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.bastionhost.md new file mode 100644 index 000000000..bd42621ad --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.bastionhost.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.networkService.bastionHost +id: azure.subscription.networkService.bastionHost +sidebar_label: azure.subscription.networkService.bastionHost +displayed_sidebar: MQL +description: Azure Network Bastion host +--- + +# azure.subscription.networkService.bastionHost + +**Supported platform** + +- azure + +**Description** + +Azure Network Bastion host + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | ----------------------- | +| id | string | Bastion Host ID | +| name | string | Bastion Host name | +| location | string | Bastion Host location | +| tags | map[string]string | Bastion Host tags | +| type | string | Bastion Host type | +| properties | dict | Bastion host properties | +| sku | dict | Bastion host SKU | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.bgpsettings.ipconfigurationbgppeeringaddress.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.bgpsettings.ipconfigurationbgppeeringaddress.md new file mode 100644 index 000000000..166d52304 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.bgpsettings.ipconfigurationbgppeeringaddress.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.bgpSettings.ipConfigurationBgpPeeringAddress +id: azure.subscription.networkService.bgpSettings.ipConfigurationBgpPeeringAddress +sidebar_label: azure.subscription.networkService.bgpSettings.ipConfigurationBgpPeeringAddress +displayed_sidebar: MQL +description: Azure BGP settings IP configuration +--- + +# azure.subscription.networkService.bgpSettings.ipConfigurationBgpPeeringAddress + +**Supported platform** + +- azure + +**Description** + +Azure BGP settings IP configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ---------------- | ------------------------------------------------------------ | +| id | string | BGP Settings IP Configuration ID | +| customBgpIpAddresses | []string | BGP Settings IP Configuration custom BGP IP addresses | +| ipConfigurationId | string | BGP Settings IP Configuration ID | +| defaultBgpIpAddresses | []string | BGP Settings IP Configuration default BGP IP addresses | +| tunnelIpAddresses | []string | BGP Settings IP Configuration tunnel public BGP IP addresses | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.bgpsettings.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.bgpsettings.md new file mode 100644 index 000000000..b006fca7c --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.bgpsettings.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.bgpSettings +id: azure.subscription.networkService.bgpSettings +sidebar_label: azure.subscription.networkService.bgpSettings +displayed_sidebar: MQL +description: Azure network BGP settings +--- + +# azure.subscription.networkService.bgpSettings + +**Supported platform** + +- azure + +**Description** + +Azure network BGP settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | +| id | string | BGP Settings ID | +| asn | int | BGP Settings speaker ASN | +| bgpPeeringAddress | string | The BGP peering address and BGP identifier of this BGP speaker | +| peerWeight | int | The weight added to routes learned from this BGP speaker | +| bgpPeeringAddressesConfig | [][azure.subscription.networkService.bgpSettings.ipConfigurationBgpPeeringAddress](azure.subscription.networkservice.bgpsettings.ipconfigurationbgppeeringaddress.md) | The BGP peering addresses with IP configuration | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.applicationrule.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.applicationrule.md new file mode 100644 index 000000000..be82ab083 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.applicationrule.md @@ -0,0 +1,30 @@ +--- +title: azure.subscription.networkService.firewall.applicationRule +id: azure.subscription.networkService.firewall.applicationRule +sidebar_label: azure.subscription.networkService.firewall.applicationRule +displayed_sidebar: MQL +description: Azure network firewall application rule +--- + +# azure.subscription.networkService.firewall.applicationRule + +**Supported platform** + +- azure + +**Description** + +Azure network firewall application rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------------------ | +| id | string | Firewall application rule ID | +| name | string | Firewall application rule name | +| etag | string | Firewall application rule etag | +| properties | dict | Firewall application rule properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.ipconfig.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.ipconfig.md new file mode 100644 index 000000000..a29c4820a --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.ipconfig.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.networkService.firewall.ipConfig +id: azure.subscription.networkService.firewall.ipConfig +sidebar_label: azure.subscription.networkService.firewall.ipConfig +displayed_sidebar: MQL +description: Azure network firewall IP configuration +--- + +# azure.subscription.networkService.firewall.ipConfig + +**Supported platform** + +- azure + +**Description** + +Azure network firewall IP configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| id | string | Firewall IP configuration ID | +| name | string | Firewall IP configuration name | +| etag | string | Firewall IP configuration etag | +| privateIpAddress | string | Firewall IP configuration private IP address | +| properties | dict | Firewall IP configuration properties | +| publicIpAddress | [azure.subscription.networkService.ipAddress](azure.subscription.networkservice.ipaddress.md) | Public IP address associated with this IP configuration | +| subnet | [azure.subscription.networkService.subnet](azure.subscription.networkservice.subnet.md) | Subnet associated with this IP configuration | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.md new file mode 100644 index 000000000..43fdac321 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.md @@ -0,0 +1,39 @@ +--- +title: azure.subscription.networkService.firewall +id: azure.subscription.networkService.firewall +sidebar_label: azure.subscription.networkService.firewall +displayed_sidebar: MQL +description: Azure network firewall +--- + +# azure.subscription.networkService.firewall + +**Supported platform** + +- azure + +**Description** + +Azure network firewall + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| id | string | Firewall ID | +| name | string | Firewall name | +| location | string | Firewall location | +| tags | map[string]string | Firewall tags | +| type | string | Firewall type | +| etag | string | Firewall etag | +| properties | dict | Firewall properties | +| provisioningState | string | Firewall provisioning state | +| skuName | string | Firewall SKU name | +| skuTier | string | Firewall SKU tier | +| threatIntelMode | string | Firewall threat intel mode | +| policy | [azure.subscription.networkService.firewallPolicy](azure.subscription.networkservice.firewallpolicy.md) | Policy associated with this firewall | +| ipConfigurations | [][azure.subscription.networkService.firewall.ipConfig](azure.subscription.networkservice.firewall.ipconfig.md) | List of IP configurations for the firewall | +| managementIpConfiguration | [azure.subscription.networkService.firewall.ipConfig](azure.subscription.networkservice.firewall.ipconfig.md) | The IP configuration used for management traffic | +| networkRules | [][azure.subscription.networkService.firewall.networkRule](azure.subscription.networkservice.firewall.networkrule.md) | List of network rules for the firewall | +| natRules | [][azure.subscription.networkService.firewall.natRule](azure.subscription.networkservice.firewall.natrule.md) | List of NAT rules for the firewall | +| applicationRules | [][azure.subscription.networkService.firewall.applicationRule](azure.subscription.networkservice.firewall.applicationrule.md) | List of application rules for the firewall | diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.natrule.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.natrule.md new file mode 100644 index 000000000..ca2902e5e --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.natrule.md @@ -0,0 +1,30 @@ +--- +title: azure.subscription.networkService.firewall.natRule +id: azure.subscription.networkService.firewall.natRule +sidebar_label: azure.subscription.networkService.firewall.natRule +displayed_sidebar: MQL +description: Azure network firewall NAT rule +--- + +# azure.subscription.networkService.firewall.natRule + +**Supported platform** + +- azure + +**Description** + +Azure network firewall NAT rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ---------------------------- | +| id | string | Firewall NAT rule ID | +| name | string | Firewall NAT rule name | +| etag | string | Firewall NAT rule etag | +| properties | dict | Firewall NAT rule properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.networkrule.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.networkrule.md new file mode 100644 index 000000000..a3ac11cc9 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewall.networkrule.md @@ -0,0 +1,30 @@ +--- +title: azure.subscription.networkService.firewall.networkRule +id: azure.subscription.networkService.firewall.networkRule +sidebar_label: azure.subscription.networkService.firewall.networkRule +displayed_sidebar: MQL +description: Azure network firewall network rule +--- + +# azure.subscription.networkService.firewall.networkRule + +**Supported platform** + +- azure + +**Description** + +Azure network firewall network rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | -------------------------------- | +| id | string | Firewall network rule ID | +| name | string | Firewall network rule name | +| etag | string | Firewall network rule etag | +| properties | dict | Firewall network rule properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewallpolicy.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewallpolicy.md new file mode 100644 index 000000000..e13bb1134 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.firewallpolicy.md @@ -0,0 +1,37 @@ +--- +title: azure.subscription.networkService.firewallPolicy +id: azure.subscription.networkService.firewallPolicy +sidebar_label: azure.subscription.networkService.firewallPolicy +displayed_sidebar: MQL +description: Azure network firewall policy +--- + +# azure.subscription.networkService.firewallPolicy + +**Supported platform** + +- azure + +**Description** + +Azure network firewall policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | +| id | string | Firewall policy ID | +| name | string | Firewall policy name | +| location | string | Firewall policy location | +| tags | map[string]string | Firewall policy tags | +| type | string | Firewall policy type | +| etag | string | Firewall policy etag | +| properties | dict | Firewall policy properties | +| provisioningState | string | Firewall policy provisioning state | +| basePolicy | [azure.subscription.networkService.firewallPolicy](azure.subscription.networkservice.firewallpolicy.md) | The parent firewall policy from which rules are inherited | +| childPolicies | [][azure.subscription.networkService.firewallPolicy](azure.subscription.networkservice.firewallpolicy.md) | List of child policies this policy is associated with | +| firewalls | [][azure.subscription.networkService.firewall](azure.subscription.networkservice.firewall.md) | List of firewalls the policy is associated with | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.frontendipconfig.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.frontendipconfig.md new file mode 100644 index 000000000..c013a1114 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.frontendipconfig.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.networkService.frontendIpConfig +id: azure.subscription.networkService.frontendIpConfig +sidebar_label: azure.subscription.networkService.frontendIpConfig +displayed_sidebar: MQL +description: Azure network frontend IP configuration +--- + +# azure.subscription.networkService.frontendIpConfig + +**Supported platform** + +- azure + +**Description** + +Azure network frontend IP configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ---------------- | ------------------------------------ | +| id | string | Frontend IP Configuration ID | +| name | string | Frontend IP Configuration name | +| type | string | Frontend IP Configuration type | +| etag | string | Frontend IP Configuration etag | +| properties | dict | Frontend IP Configuration properties | +| zones | []string | Frontend IP Configuration zones | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.inboundnatpool.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.inboundnatpool.md new file mode 100644 index 000000000..21a63e05c --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.inboundnatpool.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.inboundNatPool +id: azure.subscription.networkService.inboundNatPool +sidebar_label: azure.subscription.networkService.inboundNatPool +displayed_sidebar: MQL +description: Azure network inbound NAT pool +--- + +# azure.subscription.networkService.inboundNatPool + +**Supported platform** + +- azure + +**Description** + +Azure network inbound NAT pool + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | --------------------------- | +| id | string | Inbound NAT Pool ID | +| name | string | Inbound NAT Pool name | +| type | string | Inbound NAT Pool type | +| etag | string | Inbound NAT Pool etag | +| properties | dict | Inbound NAT Pool properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.inboundnatrule.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.inboundnatrule.md new file mode 100644 index 000000000..41e2fb517 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.inboundnatrule.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.inboundNatRule +id: azure.subscription.networkService.inboundNatRule +sidebar_label: azure.subscription.networkService.inboundNatRule +displayed_sidebar: MQL +description: Azure network inbound NAT rule +--- + +# azure.subscription.networkService.inboundNatRule + +**Supported platform** + +- azure + +**Description** + +Azure network inbound NAT rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | --------------------------- | +| id | string | Inbound NAT Rule ID | +| name | string | Inbound NAT Rule name | +| type | string | Inbound NAT Rule type | +| etag | string | Inbound NAT Rule etag | +| properties | dict | Inbound NAT Rule properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.interface.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.interface.md new file mode 100644 index 000000000..af5b72c33 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.interface.md @@ -0,0 +1,34 @@ +--- +title: azure.subscription.networkService.interface +id: azure.subscription.networkService.interface +sidebar_label: azure.subscription.networkService.interface +displayed_sidebar: MQL +description: Azure network interface +--- + +# azure.subscription.networkService.interface + +**Supported platform** + +- azure + +**Description** + +Azure network interface + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------------------------------------------- | ---------------------------- | +| id | string | Network interface ID | +| name | string | Network interface name | +| location | string | Network interface name | +| tags | map[string]string | Network interface tags | +| type | string | Network interface type | +| etag | string | Network interface etag | +| properties | dict | Network interface properties | +| vm | [azure.subscription.computeService.vm](azure.subscription.computeservice.vm.md) | Network interface compute vm | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.ipaddress.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.ipaddress.md new file mode 100644 index 000000000..bfc1f9959 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.ipaddress.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.networkService.ipAddress +id: azure.subscription.networkService.ipAddress +sidebar_label: azure.subscription.networkService.ipAddress +displayed_sidebar: MQL +description: Azure network IP address +--- + +# azure.subscription.networkService.ipAddress + +**Supported platform** + +- azure + +**Description** + +Azure network IP address + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------- | ------------------- | +| id | string | IP address ID | +| name | string | IP address name | +| location | string | IP address location | +| tags | map[string]string | IP address tags | +| ipAddress | string | IP address | +| type | string | IP address type | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.loadbalancer.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.loadbalancer.md new file mode 100644 index 000000000..8193368c7 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.loadbalancer.md @@ -0,0 +1,41 @@ +--- +title: azure.subscription.networkService.loadBalancer +id: azure.subscription.networkService.loadBalancer +sidebar_label: azure.subscription.networkService.loadBalancer +displayed_sidebar: MQL +description: Azure Load Balancer +--- + +# azure.subscription.networkService.loadBalancer + +**Supported platform** + +- azure + +**Description** + +Azure Load Balancer + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| id | string | Load Balancer ID | +| name | string | Load Balancer name | +| location | string | Load Balancer location | +| tags | map[string]string | Load Balancer tags | +| type | string | Load Balancer type | +| properties | dict | Load Balancer properties | +| etag | string | Load Balancer etag | +| sku | string | Load Balancer SKU | +| probes | [][azure.subscription.networkService.probe](azure.subscription.networkservice.probe.md) | List of Load Balancer probes | +| backendPools | [][azure.subscription.networkService.backendAddressPool](azure.subscription.networkservice.backendaddresspool.md) | List of Load Balancer backend address pools | +| frontendIpConfigs | [][azure.subscription.networkService.frontendIpConfig](azure.subscription.networkservice.frontendipconfig.md) | List of Load Balancer frontend IP configurations | +| inboundNatPools | [][azure.subscription.networkService.inboundNatPool](azure.subscription.networkservice.inboundnatpool.md) | List of Load Balancer inbound NAT pools | +| inboundNatRules | [][azure.subscription.networkService.inboundNatRule](azure.subscription.networkservice.inboundnatrule.md) | List of Load Balancer inbound NAT rules | +| outboundRules | [][azure.subscription.networkService.outboundRule](azure.subscription.networkservice.outboundrule.md) | List of Load Balancer outbound rules | +| loadBalancerRules | [][azure.subscription.networkService.loadBalancerRule](azure.subscription.networkservice.loadbalancerrule.md) | List of Load Balancer rules | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.loadbalancerrule.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.loadbalancerrule.md new file mode 100644 index 000000000..cf6d0435b --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.loadbalancerrule.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.loadBalancerRule +id: azure.subscription.networkService.loadBalancerRule +sidebar_label: azure.subscription.networkService.loadBalancerRule +displayed_sidebar: MQL +description: Azure Load Balancer rule +--- + +# azure.subscription.networkService.loadBalancerRule + +**Supported platform** + +- azure + +**Description** + +Azure Load Balancer rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ----------------------------- | +| id | string | Load Balancer rule ID | +| name | string | Load Balancer rule name | +| type | string | Load Balancer rule type | +| etag | string | Load Balancer rule etag | +| properties | dict | Load Balancer rule properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.md new file mode 100644 index 000000000..33f7796a5 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.md @@ -0,0 +1,41 @@ +--- +title: azure.subscription.networkService +id: azure.subscription.networkService +sidebar_label: azure.subscription.networkService +displayed_sidebar: MQL +description: Azure network +--- + +# azure.subscription.networkService + +**Supported platform** + +- azure + +**Description** + +Azure network + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | +| subscriptionId | string | Subscription identifier | +| interfaces | [][azure.subscription.networkService.interface](azure.subscription.networkservice.interface.md) | List of network interfaces | +| securityGroups | [][azure.subscription.networkService.securityGroup](azure.subscription.networkservice.securitygroup.md) | List of network security groups | +| watchers | [][azure.subscription.networkService.watcher](azure.subscription.networkservice.watcher.md) | List of network watchers | +| publicIpAddresses | [][azure.subscription.networkService.ipAddress](azure.subscription.networkservice.ipaddress.md) | List of public IP addresses | +| bastionHosts | [][azure.subscription.networkService.bastionHost](azure.subscription.networkservice.bastionhost.md) | List of Bastion hosts | +| loadBalancers | [][azure.subscription.networkService.loadBalancer](azure.subscription.networkservice.loadbalancer.md) | List of load balancers | +| natGateways | [][azure.subscription.networkService.natGateway](azure.subscription.networkservice.natgateway.md) | List of NAT gateways | +| virtualNetworks | [][azure.subscription.networkService.virtualNetwork](azure.subscription.networkservice.virtualnetwork.md) | List of virtual networks | +| virtualNetworkGateways | [][azure.subscription.networkService.virtualNetworkGateway](azure.subscription.networkservice.virtualnetworkgateway.md) | List of virtual network gateways | +| firewalls | [][azure.subscription.networkService.firewall](azure.subscription.networkservice.firewall.md) | List of network firewalls | +| firewallPolicies | [][azure.subscription.networkService.firewallPolicy](azure.subscription.networkservice.firewallpolicy.md) | List of firewall policies | +| applicationSecurityGroups | [][azure.subscription.networkService.appSecurityGroup](azure.subscription.networkservice.appsecuritygroup.md) | List of application security groups | +| applicationGateways | [][azure.subscription.networkService.applicationGateway](azure.subscription.networkservice.applicationgateway.md) | List of application gateways | +| applicationFirewallPolicies | [][azure.subscription.networkService.applicationFirewallPolicy](azure.subscription.networkservice.applicationfirewallpolicy.md) | List of application firewall policies | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.natgateway.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.natgateway.md new file mode 100644 index 000000000..05a99a0b7 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.natgateway.md @@ -0,0 +1,36 @@ +--- +title: azure.subscription.networkService.natGateway +id: azure.subscription.networkService.natGateway +sidebar_label: azure.subscription.networkService.natGateway +displayed_sidebar: MQL +description: Azure network NAT gateway +--- + +# azure.subscription.networkService.natGateway + +**Supported platform** + +- azure + +**Description** + +Azure network NAT gateway + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | +| id | string | NAT Gateway ID | +| name | string | NAT Gateway name | +| location | string | NAT Gateway location | +| tags | map[string]string | NAT Gateway tags | +| type | string | NAT Gateway type | +| etag | string | NAT Gateway etag | +| properties | dict | NAT Gateway properties | +| zones | []string | NAT Gateway availability zones | +| publicIpAddresses | [][azure.subscription.networkService.ipAddress](azure.subscription.networkservice.ipaddress.md) | List of public IP addresses the NAT Gateway is associated with | +| subnets | [][azure.subscription.networkService.subnet](azure.subscription.networkservice.subnet.md) | List of subnets the NAT Gateway is associated with | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.outboundrule.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.outboundrule.md new file mode 100644 index 000000000..77dda5822 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.outboundrule.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.outboundRule +id: azure.subscription.networkService.outboundRule +sidebar_label: azure.subscription.networkService.outboundRule +displayed_sidebar: MQL +description: Azure network outbound rule +--- + +# azure.subscription.networkService.outboundRule + +**Supported platform** + +- azure + +**Description** + +Azure network outbound rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------ | +| id | string | Outbound rule ID | +| name | string | Outbound rule name | +| type | string | Outbound rule type | +| etag | string | Outbound rule etag | +| properties | dict | Outbound rule properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.probe.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.probe.md new file mode 100644 index 000000000..19e56cdd0 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.probe.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.probe +id: azure.subscription.networkService.probe +sidebar_label: azure.subscription.networkService.probe +displayed_sidebar: MQL +description: Azure network probe +--- + +# azure.subscription.networkService.probe + +**Supported platform** + +- azure + +**Description** + +Azure network probe + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ---------------- | +| id | string | Probe ID | +| name | string | Probe name | +| type | string | Probe type | +| etag | string | Probe etag | +| properties | dict | Probe properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.securitygroup.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.securitygroup.md new file mode 100644 index 000000000..65f327b3c --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.securitygroup.md @@ -0,0 +1,36 @@ +--- +title: azure.subscription.networkService.securityGroup +id: azure.subscription.networkService.securityGroup +sidebar_label: azure.subscription.networkService.securityGroup +displayed_sidebar: MQL +description: Azure network security group +--- + +# azure.subscription.networkService.securityGroup + +**Supported platform** + +- azure + +**Description** + +Azure network security group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------- | +| id | string | Security group ID | +| name | string | Security group name | +| location | string | Security group location | +| tags | map[string]string | Security group tags | +| type | string | Security group type | +| etag | string | Security group etag | +| properties | dict | Security group properties | +| interfaces | [][azure.subscription.networkService.interface](azure.subscription.networkservice.interface.md) | Security group interfaces | +| securityRules | [][azure.subscription.networkService.securityrule](azure.subscription.networkservice.securityrule.md) | Security group rules | +| defaultSecurityRules | [][azure.subscription.networkService.securityrule](azure.subscription.networkservice.securityrule.md) | Security group default security rules | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.securityrule.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.securityrule.md new file mode 100644 index 000000000..584d10d9b --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.securityrule.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.networkService.securityrule +id: azure.subscription.networkService.securityrule +sidebar_label: azure.subscription.networkService.securityrule +displayed_sidebar: MQL +description: Azure network security rule +--- + +# azure.subscription.networkService.securityrule + +**Supported platform** + +- azure + +**Description** + +Azure network security rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | -------------- | --------------------------------------------- | +| id | string | Security rule ID | +| name | string | Security rule name | +| etag | string | Security rule etag | +| properties | dict | Security rule properties | +| destinationPortRange | []dict | Security rule destination port range | +| direction | string | Security rule direction (outbound or inbound) | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.subnet.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.subnet.md new file mode 100644 index 000000000..8b7a66d60 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.subnet.md @@ -0,0 +1,34 @@ +--- +title: azure.subscription.networkService.subnet +id: azure.subscription.networkService.subnet +sidebar_label: azure.subscription.networkService.subnet +displayed_sidebar: MQL +description: Azure network subnet +--- + +# azure.subscription.networkService.subnet + +**Supported platform** + +- azure + +**Description** + +Azure network subnet + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | +| id | string | Subnet ID | +| name | string | Subnet name | +| type | string | Subnet type | +| etag | string | Subnet etag | +| addressPrefix | string | Subnet address prefix | +| properties | dict | Subnet properties | +| natGateway | [azure.subscription.networkService.natGateway](azure.subscription.networkservice.natgateway.md) | The NAT gateway this subnet is associated with, if any | +| ipConfigurations | [][azure.subscription.networkService.virtualNetworkGateway.ipConfig](azure.subscription.networkservice.virtualnetworkgateway.ipconfig.md) | List of IP configurations for the subnet | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetwork.dhcpoptions.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetwork.dhcpoptions.md new file mode 100644 index 000000000..956243387 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetwork.dhcpoptions.md @@ -0,0 +1,24 @@ +--- +title: azure.subscription.networkService.virtualNetwork.dhcpOptions +id: azure.subscription.networkService.virtualNetwork.dhcpOptions +sidebar_label: azure.subscription.networkService.virtualNetwork.dhcpOptions +displayed_sidebar: MQL +description: Azure Virtual Network DHCP options +--- + +# azure.subscription.networkService.virtualNetwork.dhcpOptions + +**Supported platform** + +- azure + +**Description** + +Azure Virtual Network DHCP options + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ---------------- | -------------------------------------------- | +| id | string | DHCP options ID | +| dnsServers | []string | The DNS servers, used by the virtual network | diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetwork.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetwork.md new file mode 100644 index 000000000..8056bcbda --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetwork.md @@ -0,0 +1,37 @@ +--- +title: azure.subscription.networkService.virtualNetwork +id: azure.subscription.networkService.virtualNetwork +sidebar_label: azure.subscription.networkService.virtualNetwork +displayed_sidebar: MQL +description: Azure Virtual network (VNet) +--- + +# azure.subscription.networkService.virtualNetwork + +**Supported platform** + +- azure + +**Description** + +Azure Virtual network (VNet) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| id | string | Virtual Network ID | +| name | string | Virtual Network name | +| location | string | Virtual Network location | +| tags | map[string]string | Virtual Network tags | +| type | string | Virtual Network type | +| etag | string | Virtual Network etag | +| properties | dict | Virtual Network properties | +| subnets | [][azure.subscription.networkService.subnet](azure.subscription.networkservice.subnet.md) | List of subnets within the virtual network | +| dhcpOptions | [azure.subscription.networkService.virtualNetwork.dhcpOptions](azure.subscription.networkservice.virtualnetwork.dhcpoptions.md) | Virtual Network DHCP options | +| enableDdosProtection | bool | Indicates if DDoS protection is enabled for all the protected resources in the virtual network. | +| enableVmProtection | bool | Indicates if VM protection is enabled for all the subnets in the virtual network | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.connection.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.connection.md new file mode 100644 index 000000000..c973d110d --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.connection.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.networkService.virtualNetworkGateway.connection +id: azure.subscription.networkService.virtualNetworkGateway.connection +sidebar_label: azure.subscription.networkService.virtualNetworkGateway.connection +displayed_sidebar: MQL +description: Azure Virtual Network (VNet) gateway connection +--- + +# azure.subscription.networkService.virtualNetworkGateway.connection + +**Supported platform** + +- azure + +**Description** + +Azure Virtual Network (VNet) gateway connection + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ---------------------------------- | +| id | string | VNet gateway connection ID | +| name | string | VNet gateway Connection name | +| type | string | VNet gateway Connection type | +| etag | string | VNet gateway Connection etag | +| properties | dict | VNet gateway Connection properties | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.ipconfig.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.ipconfig.md new file mode 100644 index 000000000..b1383a457 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.ipconfig.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.networkService.virtualNetworkGateway.ipConfig +id: azure.subscription.networkService.virtualNetworkGateway.ipConfig +sidebar_label: azure.subscription.networkService.virtualNetworkGateway.ipConfig +displayed_sidebar: MQL +description: Azure Virtual Network (VNet) gateway IP configuration +--- + +# azure.subscription.networkService.virtualNetworkGateway.ipConfig + +**Supported platform** + +- azure + +**Description** + +Azure Virtual Network (VNet) gateway IP configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | +| id | string | VNet gateway IP Configuration ID | +| name | string | VNet gateway IP Configuration name | +| etag | string | VNet gateway IP Configuration etag | +| privateIpAddress | string | VNet gateway IP Configuration private IP address | +| properties | dict | VNet gateway IP Configuration properties | +| publicIpAddress | [azure.subscription.networkService.ipAddress](azure.subscription.networkservice.ipaddress.md) | The public IP address, associated with this IP configuration | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.md new file mode 100644 index 000000000..9531641f9 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.virtualnetworkgateway.md @@ -0,0 +1,52 @@ +--- +title: azure.subscription.networkService.virtualNetworkGateway +id: azure.subscription.networkService.virtualNetworkGateway +sidebar_label: azure.subscription.networkService.virtualNetworkGateway +displayed_sidebar: MQL +description: Azure virtual network (VNet) gateway +--- + +# azure.subscription.networkService.virtualNetworkGateway + +**Supported platform** + +- azure + +**Description** + +Azure virtual network (VNet) gateway + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| id | string | VNet gateway ID | +| name | string | VNet gateway name | +| location | string | VNet gateway location | +| tags | map[string]string | VNet gateway tags | +| type | string | VNet gateway resource type | +| etag | string | VNet gateway etag | +| properties | dict | VNet gateway properties | +| active | bool | Whether the virtual network gateway is active | +| enableBgp | bool | Whether BGP is enabled for this virtual network gateway | +| enableBgpRouteTranslationForNat | bool | Whether BGP route translation is enabled for this VNet gateway | +| enableDNSForwarding | bool | Whether DNS forwarding is enabled for this VNet gateway | +| enablePrivateIPAddress | bool | Whether private IP must be enabled for connections | +| disableIPSecReplayProtection | bool | Whether IP sec replay protection is disabled for this VNet gateway | +| provisioningState | string | VNet gateway provisioning state | +| inboundDNSForwardingEndpoint | string | The IP address allocated by the gateway to which DNS requests can be sent | +| skuName | string | VNet gateway SKU name | +| skuCapacity | int | VNet gateway SKU capacity | +| addressPrefixes | []string | A list of address blocks reserved for this virtual network in CIDR notation | +| gatewayType | string | VNet gateway type | +| vpnGatewayGeneration | string | VNet gateway generation | +| vpnType | string | VNet gateway VPN type | +| ipConfigurations | [][azure.subscription.networkService.virtualNetworkGateway.ipConfig](azure.subscription.networkservice.virtualnetworkgateway.ipconfig.md) | VNet gateway IP configurations | +| bgpSettings | [azure.subscription.networkService.bgpSettings](azure.subscription.networkservice.bgpsettings.md) | VNet gateway BGP settings | +| natRules | []azure.subscription.networkService.virtualNetworkGateway.natRule | VNet gateway NAT rules | +| connections | [][azure.subscription.networkService.virtualNetworkGateway.connection](azure.subscription.networkservice.virtualnetworkgateway.connection.md) | Applicable connections for the gateway | +| vpnClientConfiguration | dict | VPN client configuration (only set if P2S is configured for the gateway) | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.watcher.flowlog.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.watcher.flowlog.md new file mode 100644 index 000000000..2849d259c --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.watcher.flowlog.md @@ -0,0 +1,41 @@ +--- +title: azure.subscription.networkService.watcher.flowlog +id: azure.subscription.networkService.watcher.flowlog +sidebar_label: azure.subscription.networkService.watcher.flowlog +displayed_sidebar: MQL +description: Azure Network Watcher flow log +--- + +# azure.subscription.networkService.watcher.flowlog + +**Supported platform** + +- azure + +**Description** + +Azure Network Watcher flow log + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------- | --------------------------------------------------- | +| id | string | Network watcher flow log ID | +| name | string | Network watcher flow log name | +| location | string | Network watcher flow log location | +| tags | map[string]string | Network watcher flow log tags | +| type | string | Network watcher flow log type | +| etag | string | Network watcher flow log etag | +| provisioningState | string | Network watcher flow log provisioning state | +| enabled | bool | whether the network watcher flow log is enabled | +| storageAccountId | string | Network watcher flow log storage account identifier | +| targetResourceId | string | Network watcher flow log target resource identifier | +| targetResourceGuid | string | Network watcher flow log target resource guid | +| version | int | Network watcher flow log version | +| format | string | Network watcher flow log format | +| retentionPolicy | dict | Network watcher flow log retention policy | +| analytics | dict | Network watcher flow log analytics | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.networkservice.watcher.md b/docs/mql/resources/azure-pack/azure.subscription.networkservice.watcher.md new file mode 100644 index 000000000..de12ad09c --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.networkservice.watcher.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.networkService.watcher +id: azure.subscription.networkService.watcher +sidebar_label: azure.subscription.networkService.watcher +displayed_sidebar: MQL +description: Azure Network Watcher +--- + +# azure.subscription.networkService.watcher + +**Supported platform** + +- azure + +**Description** + +Azure Network Watcher + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | +| id | string | Network watcher ID | +| name | string | Network watcher name | +| location | string | Network watcher location | +| tags | map[string]string | Network watcher tags | +| type | string | Network watcher type | +| etag | string | Network watcher etag | +| properties | dict | Network watcher properties | +| flowLogs | [][azure.subscription.networkService.watcher.flowlog](azure.subscription.networkservice.watcher.flowlog.md) | Network watcher flow logs | +| provisioningState | string | Network watcher provisioning state | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/virtual-network/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.database.md b/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.database.md new file mode 100644 index 000000000..95b294056 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.database.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.postgreSqlService.database +id: azure.subscription.postgreSqlService.database +sidebar_label: azure.subscription.postgreSqlService.database +displayed_sidebar: MQL +description: Azure Database for PostgreSQL database +--- + +# azure.subscription.postgreSqlService.database + +**Supported platform** + +- azure + +**Description** + +Azure Database for PostgreSQL database + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ----------------------------- | +| id | string | PostgreSQL database ID | +| name | string | PostgreSQL database name | +| type | string | PostgreSQL database type | +| charset | string | PostgreSQL database charset | +| collation | string | PostgreSQL database collation | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/postgresql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.md b/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.md new file mode 100644 index 000000000..eadc9e01f --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.md @@ -0,0 +1,24 @@ +--- +title: azure.subscription.postgreSqlService +id: azure.subscription.postgreSqlService +sidebar_label: azure.subscription.postgreSqlService +displayed_sidebar: MQL +description: Azure Database for PostgreSQL +--- + +# azure.subscription.postgreSqlService + +**Supported platform** + +- azure + +**Description** + +Azure Database for PostgreSQL + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------------------------------------------------------------------------- | -------------------------- | +| subscriptionId | string | Subscription identifier | +| servers | [][azure.subscription.postgreSqlService.server](azure.subscription.postgresqlservice.server.md) | List of PostgreSQL servers | diff --git a/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.server.md b/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.server.md new file mode 100644 index 000000000..0015152d3 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.postgresqlservice.server.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.postgreSqlService.server +id: azure.subscription.postgreSqlService.server +sidebar_label: azure.subscription.postgreSqlService.server +displayed_sidebar: MQL +description: Azure Database for PostgreSQL server +--- + +# azure.subscription.postgreSqlService.server + +**Supported platform** + +- azure + +**Description** + +Azure Database for PostgreSQL server + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------- | +| id | string | PostgreSQL server ID | +| name | string | PostgreSQL server name | +| location | string | PostgreSQL server location | +| tags | map[string]string | PostgreSQL server tags | +| type | string | PostgreSQL server type | +| properties | dict | PostgreSQL server properties | +| configuration | [][azure.subscription.sqlService.configuration](azure.subscription.sqlservice.configuration.md) | PostgreSQL server configuration | +| databases | [][azure.subscription.postgreSqlService.database](azure.subscription.postgresqlservice.database.md) | PostgreSQL server databases | +| firewallRules | [][azure.subscription.sqlService.firewallrule](azure.subscription.sqlservice.firewallrule.md) | PostgreSQL server firewall rules | + +**References** + +- [Virtual Network documentation](https://learn.microsoft.com/en-us/azure/postgresql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.resource.md b/docs/mql/resources/azure-pack/azure.subscription.resource.md new file mode 100644 index 000000000..eccea449e --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.resource.md @@ -0,0 +1,39 @@ +--- +title: azure.subscription.resource +id: azure.subscription.resource +sidebar_label: azure.subscription.resource +displayed_sidebar: MQL +description: Azure resource +--- + +# azure.subscription.resource + +**Supported platform** + +- azure + +**Description** + +Azure resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------- | --------------------------------------------- | +| id | string | Resource ID | +| name | string | Resource name | +| kind | string | Resource kind | +| location | string | Resource location | +| tags | map[string]string | Resource tags | +| type | string | Resource type | +| managedBy | string | ID of the resource that manages this resource | +| sku | dict | Resource SKU | +| plan | dict | Resource plan | +| identity | dict | Resource identity | +| provisioningState | string | Resource provisioning state | +| createdTime | time | When the resource was created | +| changedTime | time | When the resource was last changed | + +**References** + +- [Azure Resource Manager documentation](https://learn.microsoft.com/en-us/azure/azure-resource-manager/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.resourcegroup.md b/docs/mql/resources/azure-pack/azure.subscription.resourcegroup.md new file mode 100644 index 000000000..c9c6cc581 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.resourcegroup.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.resourcegroup +id: azure.subscription.resourcegroup +sidebar_label: azure.subscription.resourcegroup +displayed_sidebar: MQL +description: Azure resource group +--- + +# azure.subscription.resourcegroup + +**Supported platform** + +- azure + +**Description** + +Azure resource group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------- | --------------------------------------------------- | +| id | string | Resource group ID | +| name | string | Resource group name | +| location | string | Resource group location | +| tags | map[string]string | Resource group tags | +| type | string | Resource group type | +| managedBy | string | ID of the resource that manages this resource group | +| provisioningState | string | Resource group provisioning state | + +**References** + +- [Azure Resource Manager documentation](https://learn.microsoft.com/en-us/azure/azure-resource-manager/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.configuration.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.configuration.md new file mode 100644 index 000000000..1edab78c8 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.configuration.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.sqlService.configuration +id: azure.subscription.sqlService.configuration +sidebar_label: azure.subscription.sqlService.configuration +displayed_sidebar: MQL +description: Azure SQL configuration +--- + +# azure.subscription.sqlService.configuration + +**Supported platform** + +- azure + +**Description** + +Azure SQL configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------ | -------------------------------- | +| id | string | SQL configuration ID | +| name | string | SQL configuration name | +| type | string | SQL configuration type | +| value | string | SQL configuration value | +| description | string | SQL configuration description | +| defaultValue | string | SQL configuration default value | +| dataType | string | SQL configuration data type | +| allowedValues | string | SQL configuration allowed values | +| source | string | SQL configuration source | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.database.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.database.md new file mode 100644 index 000000000..b3a4634a2 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.database.md @@ -0,0 +1,55 @@ +--- +title: azure.subscription.sqlService.database +id: azure.subscription.sqlService.database +sidebar_label: azure.subscription.sqlService.database +displayed_sidebar: MQL +description: Azure SQL server database +--- + +# azure.subscription.sqlService.database + +**Supported platform** + +- azure + +**Description** + +Azure SQL server database + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| id | string | SQL database ID | +| name | string | SQL database name | +| type | string | SQL database type | +| collation | string | SQL database collation | +| creationDate | time | SQL database create date | +| databaseId | string | Database ID | +| earliestRestoreDate | time | SQL database earliest restore date | +| createMode | string | SQL database create mode | +| sourceDatabaseId | string | SQL database source database ID | +| sourceDatabaseDeletionDate | time | SQL database deletion date | +| restorePointInTime | time | SQL database restore point in time | +| recoveryServicesRecoveryPointResourceId | string | SQL database recovery services recovery point ID | +| edition | string | SQL database edition | +| maxSizeBytes | int | SQL database maximum byte size | +| requestedServiceObjectiveName | string | SQL database requested objective name | +| serviceLevelObjective | string | SQL database service level objective | +| status | string | SQL database status | +| elasticPoolName | string | SQL database elastic pool name | +| defaultSecondaryLocation | string | SQL database default secondary location | +| failoverGroupId | string | SQL database failover group ID | +| readScale | string | SQL database read scale | +| sampleName | string | SQL database sample name | +| zoneRedundant | bool | Whether SQL server is zone redundant | +| transparentDataEncryption | dict | SQL database transparent data encryption | +| advisor | []dict | SQL database advisor | +| threatDetectionPolicy | dict | SQL database threat detection policy | +| connectionPolicy | dict | SQL database connection policy | +| auditingPolicy | dict | SQL database auditing policy | +| usage | [][azure.subscription.sqlService.databaseusage](azure.subscription.sqlservice.databaseusage.md) | SQL database usage | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.databaseusage.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.databaseusage.md new file mode 100644 index 000000000..8be957ead --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.databaseusage.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.sqlService.databaseusage +id: azure.subscription.sqlService.databaseusage +sidebar_label: azure.subscription.sqlService.databaseusage +displayed_sidebar: MQL +description: Azure SQL database usage +--- + +# azure.subscription.sqlService.databaseusage + +**Supported platform** + +- azure + +**Description** + +Azure SQL database usage + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ---------------------------- | +| id | string | Database usage ID | +| name | string | Database usage name | +| resourceName | string | Database usage resource name | +| displayName | string | Database usage display name | +| currentValue | float | Database usage current value | +| limit | float | Database usage limit | +| unit | string | Database usage unit | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.firewallrule.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.firewallrule.md new file mode 100644 index 000000000..95687f0d2 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.firewallrule.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.sqlService.firewallrule +id: azure.subscription.sqlService.firewallrule +sidebar_label: azure.subscription.sqlService.firewallrule +displayed_sidebar: MQL +description: Azure SQL firewall rule +--- + +# azure.subscription.sqlService.firewallrule + +**Supported platform** + +- azure + +**Description** + +Azure SQL firewall rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | ---------------------------------- | +| id | string | SQL firewall rule ID | +| name | string | SQL firewall rule name | +| type | string | SQL firewall rule type | +| startIpAddress | string | SQL firewall rule start IP address | +| endIpAddress | string | SQL firewall rule end IP address | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.md new file mode 100644 index 000000000..8c99296cc --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.sqlService +id: azure.subscription.sqlService +sidebar_label: azure.subscription.sqlService +displayed_sidebar: MQL +description: Azure SQL +--- + +# azure.subscription.sqlService + +**Supported platform** + +- azure + +**Description** + +Azure SQL + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ----------------------------------------------------------------------------------------- | ----------------------- | +| subscriptionId | string | Subscription identifier | +| servers | [][azure.subscription.sqlService.server](azure.subscription.sqlservice.server.md) | List of SQL servers | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.administrator.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.administrator.md new file mode 100644 index 000000000..a8fea1dcb --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.administrator.md @@ -0,0 +1,33 @@ +--- +title: azure.subscription.sqlService.server.administrator +id: azure.subscription.sqlService.server.administrator +sidebar_label: azure.subscription.sqlService.server.administrator +displayed_sidebar: MQL +description: Azure SQL server administrator +--- + +# azure.subscription.sqlService.server.administrator + +**Supported platform** + +- azure + +**Description** + +Azure SQL server administrator + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------ | --------------------------------- | +| id | string | SQL administrator ID | +| name | string | SQL administrator name | +| type | string | SQL administrator type | +| administratorType | string | SQL administrator type | +| login | string | SQL administrator login | +| sid | string | SQL administrator subscription ID | +| tenantId | string | SQL administrator tenant ID | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.md new file mode 100644 index 000000000..f02058b66 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.md @@ -0,0 +1,42 @@ +--- +title: azure.subscription.sqlService.server +id: azure.subscription.sqlService.server +sidebar_label: azure.subscription.sqlService.server +displayed_sidebar: MQL +description: Azure SQL server +--- + +# azure.subscription.sqlService.server + +**Supported platform** + +- azure + +**Description** + +Azure SQL server + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| id | string | SQL server ID | +| name | string | SQL server name | +| location | string | SQL server location | +| tags | map[string]string | SQL server tags | +| type | string | SQL server type | +| properties | dict | SQL server properties | +| databases | [][azure.subscription.sqlService.database](azure.subscription.sqlservice.database.md) | SQL server databases | +| firewallRules | [][azure.subscription.sqlService.firewallrule](azure.subscription.sqlservice.firewallrule.md) | SQL server firewall rules | +| azureAdAdministrators | [][azure.subscription.sqlService.server.administrator](azure.subscription.sqlservice.server.administrator.md) | SQL server AD administrators | +| connectionPolicy | dict | SQL server connection policy | +| auditingPolicy | dict | SQL server auditing policy | +| securityAlertPolicy | dict | SQL server security alert policy | +| encryptionProtector | dict | SQL server encryption protector | +| threatDetectionPolicy | dict | SQL server threat detection policy | +| vulnerabilityAssessmentSettings | [azure.subscription.sqlService.server.vulnerabilityassessmentsettings](azure.subscription.sqlservice.server.vulnerabilityassessmentsettings.md) | SQL server vulnerability assessment settings | +| virtualNetworkRules | [][azure.subscription.sqlService.virtualNetworkRule](azure.subscription.sqlservice.virtualnetworkrule.md) | | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.vulnerabilityassessmentsettings.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.vulnerabilityassessmentsettings.md new file mode 100644 index 000000000..a5133ef9a --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.server.vulnerabilityassessmentsettings.md @@ -0,0 +1,35 @@ +--- +title: azure.subscription.sqlService.server.vulnerabilityassessmentsettings +id: azure.subscription.sqlService.server.vulnerabilityassessmentsettings +sidebar_label: azure.subscription.sqlService.server.vulnerabilityassessmentsettings +displayed_sidebar: MQL +description: Azure SQL server vulnerability assessment settings +--- + +# azure.subscription.sqlService.server.vulnerabilityassessmentsettings + +**Supported platform** + +- azure + +**Description** + +Azure SQL server vulnerability assessment settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------- | +| id | string | ID of the vulnerability assessment | +| name | string | Name of the vulnerability assessment | +| type | string | Type of the vulnerability assessment | +| storageContainerPath | string | Blob storage container path to hold the scan results | +| storageAccountAccessKey | string | Identifier key of the storage account for vulnerability assessment scan results | +| storageContainerSasKey | string | Shared access signature key that has write access to the blob container specified in 'storageContainerPath' | +| recurringScanEnabled | bool | Whether recurring scan is enabled | +| recurringScanEmails | []string | Array of email addresses to which the scan notification is sent | +| mailSubscriptionAdmins | bool | Whether the schedule scan notification is also sent to the subscription administrators | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.sqlservice.virtualnetworkrule.md b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.virtualnetworkrule.md new file mode 100644 index 000000000..131afcdf6 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.sqlservice.virtualnetworkrule.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.sqlService.virtualNetworkRule +id: azure.subscription.sqlService.virtualNetworkRule +sidebar_label: azure.subscription.sqlService.virtualNetworkRule +displayed_sidebar: MQL +description: Azure SQL virtual network rule +--- + +# azure.subscription.sqlService.virtualNetworkRule + +**Supported platform** + +- azure + +**Description** + +Azure SQL virtual network rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ------ | ------------------------------- | +| id | string | Virtual network rule ID | +| name | string | Virtual network rule name | +| type | string | Virtual network rule type | +| properties | dict | Virtual network rule properties | +| virtualNetworkSubnetId | string | Virtual network rule Subnet ID | + +**References** + +- [Azure SQL documentation](https://learn.microsoft.com/en-us/azure/azure-sql/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.container.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.container.md new file mode 100644 index 000000000..19cf8c45d --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.container.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.storageService.account.container +id: azure.subscription.storageService.account.container +sidebar_label: azure.subscription.storageService.account.container +displayed_sidebar: MQL +description: Azure Storage container +--- + +# azure.subscription.storageService.account.container + +**Supported platform** + +- azure + +**Description** + +Azure Storage container + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ---------------------------- | +| id | string | Storage container ID | +| name | string | Storage container name | +| type | string | Storage container type | +| etag | string | Storage container etag | +| properties | dict | Storage container properties | + +**References** + +- [Azure Storage documentation](https://learn.microsoft.com/en-us/azure/storage/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.dataprotection.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.dataprotection.md new file mode 100644 index 000000000..97be2c0ee --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.dataprotection.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.storageService.account.dataProtection +id: azure.subscription.storageService.account.dataProtection +sidebar_label: azure.subscription.storageService.account.dataProtection +displayed_sidebar: MQL +description: Azure Storage account data protection +--- + +# azure.subscription.storageService.account.dataProtection + +**Supported platform** + +- azure + +**Description** + +Azure Storage account data protection + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------------- | ------ | ----------------------------------------------- | +| storageAccountId | string | ID of the storage account | +| blobSoftDeletionEnabled | bool | Whether soft deletion of blobs is enabled | +| blobRetentionDays | int | Retention period in days for deleted blobs | +| containerSoftDeletionEnabled | bool | Whether soft deletion of containers is enabled | +| containerRetentionDays | int | Retention period in days for deleted containers | + +**References** + +- [Azure Storage documentation](https://learn.microsoft.com/en-us/azure/storage/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.md new file mode 100644 index 000000000..6d2c0370b --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.md @@ -0,0 +1,40 @@ +--- +title: azure.subscription.storageService.account +id: azure.subscription.storageService.account +sidebar_label: azure.subscription.storageService.account +displayed_sidebar: MQL +description: Azure Storage account +--- + +# azure.subscription.storageService.account + +**Supported platform** + +- azure + +**Description** + +Azure Storage account + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | +| id | string | Storage account ID | +| name | string | Storage account name | +| location | string | Storage account location | +| tags | map[string]string | Storage account tags | +| type | string | Storage account type | +| properties | dict | Storage account properties | +| identity | dict | Storage account identity | +| sku | dict | Storage account SKU | +| kind | string | Storage account kind | +| containers | [][azure.subscription.storageService.account.container](azure.subscription.storageservice.account.container.md) | Storage account containers | +| queueProperties | [azure.subscription.storageService.account.service.properties](azure.subscription.storageservice.account.service.properties.md) | Storage account queue properties | +| tableProperties | [azure.subscription.storageService.account.service.properties](azure.subscription.storageservice.account.service.properties.md) | Storage account table properties | +| blobProperties | [azure.subscription.storageService.account.service.properties](azure.subscription.storageservice.account.service.properties.md) | Storage account blob properties | +| dataProtection | [azure.subscription.storageService.account.dataProtection](azure.subscription.storageservice.account.dataprotection.md) | Storage account data protection | + +**References** + +- [Azure Storage documentation](https://learn.microsoft.com/en-us/azure/storage/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.logging.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.logging.md new file mode 100644 index 000000000..e960d564e --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.logging.md @@ -0,0 +1,32 @@ +--- +title: azure.subscription.storageService.account.service.properties.logging +id: azure.subscription.storageService.account.service.properties.logging +sidebar_label: azure.subscription.storageService.account.service.properties.logging +displayed_sidebar: MQL +description: Azure Storage account service properties logging +--- + +# azure.subscription.storageService.account.service.properties.logging + +**Supported platform** + +- azure + +**Description** + +Azure Storage account service properties logging + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | +| id | string | ID of the logging configuration | +| delete | bool | Whether delete requests are logged | +| read | bool | Whether read requests are logged | +| write | bool | Whether write requests are logged | +| version | string | Logging version | +| retentionPolicy | [azure.subscription.storageService.account.service.properties.retentionPolicy](azure.subscription.storageservice.account.service.properties.retentionpolicy.md) | Retention policy for the logging metrics | + +**References** + +- [Azure Storage documentation](https://learn.microsoft.com/en-us/azure/storage/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.md new file mode 100644 index 000000000..6a934749b --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.md @@ -0,0 +1,26 @@ +--- +title: azure.subscription.storageService.account.service.properties +id: azure.subscription.storageService.account.service.properties +sidebar_label: azure.subscription.storageService.account.service.properties +displayed_sidebar: MQL +description: Azure Storage account service properties +--- + +# azure.subscription.storageService.account.service.properties + +**Supported platform** + +- azure + +**Description** + +Azure Storage account service properties + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | +| id | string | ID of the service | +| hourMetrics | [azure.subscription.storageService.account.service.properties.metrics](azure.subscription.storageservice.account.service.properties.metrics.md) | Hourly metrics properties | +| minuteMetrics | [azure.subscription.storageService.account.service.properties.metrics](azure.subscription.storageservice.account.service.properties.metrics.md) | Minute metrics properties | +| logging | [azure.subscription.storageService.account.service.properties.logging](azure.subscription.storageservice.account.service.properties.logging.md) | Logging properties | diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.metrics.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.metrics.md new file mode 100644 index 000000000..ef08fff16 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.metrics.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.storageService.account.service.properties.metrics +id: azure.subscription.storageService.account.service.properties.metrics +sidebar_label: azure.subscription.storageService.account.service.properties.metrics +displayed_sidebar: MQL +description: Azure Storage account service properties metrics +--- + +# azure.subscription.storageService.account.service.properties.metrics + +**Supported platform** + +- azure + +**Description** + +Azure Storage account service properties metrics + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | +| id | string | ID of the metrics | +| includeAPIs | bool | Whether metrics generate summary statistics for called API operations | +| retentionPolicy | [azure.subscription.storageService.account.service.properties.retentionPolicy](azure.subscription.storageservice.account.service.properties.retentionpolicy.md) | Retention policy for the metrics | +| enabled | bool | Whether the metrics are enabled | +| version | string | Version of the metrics | + +**References** + +- [Azure Storage documentation](https://learn.microsoft.com/en-us/azure/storage/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.retentionpolicy.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.retentionpolicy.md new file mode 100644 index 000000000..8f19ecc4f --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.account.service.properties.retentionpolicy.md @@ -0,0 +1,29 @@ +--- +title: azure.subscription.storageService.account.service.properties.retentionPolicy +id: azure.subscription.storageService.account.service.properties.retentionPolicy +sidebar_label: azure.subscription.storageService.account.service.properties.retentionPolicy +displayed_sidebar: MQL +description: Azure Storage account service properties retention policy +--- + +# azure.subscription.storageService.account.service.properties.retentionPolicy + +**Supported platform** + +- azure + +**Description** + +Azure Storage account service properties retention policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------ | ----------------------------------------------------------- | +| id | string | ID of the retention policy | +| retentionDays | int | Number of days that metrics or logging data is retained | +| enabled | bool | Whether a retention policy is enabled for the Azure Storage | + +**References** + +- [Azure Storage documentation](https://learn.microsoft.com/en-us/azure/storage/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.storageservice.md b/docs/mql/resources/azure-pack/azure.subscription.storageservice.md new file mode 100644 index 000000000..53526d34b --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.storageservice.md @@ -0,0 +1,28 @@ +--- +title: azure.subscription.storageService +id: azure.subscription.storageService +sidebar_label: azure.subscription.storageService +displayed_sidebar: MQL +description: Azure Storage +--- + +# azure.subscription.storageService + +**Supported platform** + +- azure + +**Description** + +Azure Storage + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | --------------------------------------------------------------------------------------------------- | ------------------------ | +| subscriptionId | string | Subscription identifier | +| accounts | [][azure.subscription.storageService.account](azure.subscription.storageservice.account.md) | List of storage accounts | + +**References** + +- [Azure Storage documentation](https://learn.microsoft.com/en-us/azure/storage/) diff --git a/docs/mql/resources/azure-pack/azure.subscription.webservice.appsite.md b/docs/mql/resources/azure-pack/azure.subscription.webservice.appsite.md new file mode 100644 index 000000000..834090842 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.webservice.appsite.md @@ -0,0 +1,40 @@ +--- +title: azure.subscription.webService.appsite +id: azure.subscription.webService.appsite +sidebar_label: azure.subscription.webService.appsite +displayed_sidebar: MQL +description: Azure Web app site +--- + +# azure.subscription.webService.appsite + +**Supported platform** + +- azure + +**Description** + +Azure Web app site + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | --------------------------------------------------------------------------------------------------------- | -------------------------------- | +| id | string | App site ID | +| name | string | App site name | +| kind | string | App site kind | +| location | string | App site location | +| type | string | App site type | +| tags | map[string]string | App site tags | +| properties | dict | App site properties | +| identity | dict | App site identity | +| configuration | [azure.subscription.webService.appsiteconfig](azure.subscription.webservice.appsiteconfig.md) | App site configuration | +| authenticationSettings | [azure.subscription.webService.appsiteauthsettings](azure.subscription.webservice.appsiteauthsettings.md) | App site authentication settings | +| metadata | dict | App site metadata | +| applicationSettings | dict | App site application settings | +| connectionSettings | dict | App site connection settings | +| stack | dict | App site stack | + +**References** + +- [Azure Web documentation](https://learn.microsoft.com/en-us/azure/?product=web) diff --git a/docs/mql/resources/azure-pack/azure.subscription.webservice.appsiteauthsettings.md b/docs/mql/resources/azure-pack/azure.subscription.webservice.appsiteauthsettings.md new file mode 100644 index 000000000..9cede40db --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.webservice.appsiteauthsettings.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.webService.appsiteauthsettings +id: azure.subscription.webService.appsiteauthsettings +sidebar_label: azure.subscription.webService.appsiteauthsettings +displayed_sidebar: MQL +description: Azure AppSite authentication settings +--- + +# azure.subscription.webService.appsiteauthsettings + +**Supported platform** + +- azure + +**Description** + +Azure AppSite authentication settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------ | +| id | string | Auth settings ID | +| name | string | Auth settings name | +| kind | string | Auth settings kind | +| type | string | Auth settings type | +| properties | dict | Auth settings properties | + +**References** + +- [Azure Web documentation](https://learn.microsoft.com/en-us/azure/?product=web) diff --git a/docs/mql/resources/azure-pack/azure.subscription.webservice.appsiteconfig.md b/docs/mql/resources/azure-pack/azure.subscription.webservice.appsiteconfig.md new file mode 100644 index 000000000..35ad81355 --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.webservice.appsiteconfig.md @@ -0,0 +1,31 @@ +--- +title: azure.subscription.webService.appsiteconfig +id: azure.subscription.webService.appsiteconfig +sidebar_label: azure.subscription.webService.appsiteconfig +displayed_sidebar: MQL +description: Azure AppSite config +--- + +# azure.subscription.webService.appsiteconfig + +**Supported platform** + +- azure + +**Description** + +Azure AppSite config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------- | +| id | string | Appsite config ID | +| name | string | Appsite config name | +| kind | string | Appsite config kind | +| type | string | Appsite config type | +| properties | dict | Appsite config properties | + +**References** + +- [Azure Web documentation](https://learn.microsoft.com/en-us/azure/?product=web) diff --git a/docs/mql/resources/azure-pack/azure.subscription.webservice.md b/docs/mql/resources/azure-pack/azure.subscription.webservice.md new file mode 100644 index 000000000..d838618bb --- /dev/null +++ b/docs/mql/resources/azure-pack/azure.subscription.webservice.md @@ -0,0 +1,29 @@ +--- +title: azure.subscription.webService +id: azure.subscription.webService +sidebar_label: azure.subscription.webService +displayed_sidebar: MQL +description: Azure Web +--- + +# azure.subscription.webService + +**Supported platform** + +- azure + +**Description** + +Azure Web + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------------------------------------------------------------------------------------------- | ----------------------- | +| subscriptionId | string | Subscription identifier | +| apps | [][azure.subscription.webService.appsite](azure.subscription.webservice.appsite.md) | List of web apps | +| availableRuntimes | []dict | Available runtimes | + +**References** + +- [Azure Web documentation](https://learn.microsoft.com/en-us/azure/?product=web) diff --git a/docs/mql/resources/core-pack/README.md b/docs/mql/resources/core-pack/README.md new file mode 100644 index 000000000..1e32c23dc --- /dev/null +++ b/docs/mql/resources/core-pack/README.md @@ -0,0 +1,22 @@ +--- +title: Core Resource Pack - MQL Resources +id: core.pack +sidebar_label: Core Resource Pack +displayed_sidebar: MQL +description: The Core pack provides basic MQL resources that let you query and assess the security. +--- + +# Mondoo Core Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------- | -------------------------------------------------------- | +| [asset](asset.md) | General asset information | +| [asset.eol](asset.eol.md) | Information about the assets platform end-of-life. | +| [cpe](cpe.md) | Common Platform Enumeration (CPE) identifiers | +| [mondoo](mondoo.md) | Contextual information about MQL runtime and environment | +| [parse](parse.md) | Provides common parsers (json, ini, certs, etc) | +| [regex](regex.md) | Built-in regular expression functions | +| [time](time.md) | Date and time functions | +| [uuid](uuid.md) | UUIDs based on RFC 4122 and DCE 1.1 | diff --git a/docs/mql/resources/core-pack/asset.eol.md b/docs/mql/resources/core-pack/asset.eol.md new file mode 100644 index 000000000..b04b32510 --- /dev/null +++ b/docs/mql/resources/core-pack/asset.eol.md @@ -0,0 +1,21 @@ +--- +title: asset.eol +id: asset.eol +sidebar_label: asset.eol +displayed_sidebar: MQL +description: Information about the assets platform end-of-life. +--- + +# asset.eol + +**Description** + +Information about the assets platform end-of-life. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------- | ----------------- | +| docsUrl | string | Documentation URL | +| productUrl | string | Product URL | +| date | [time](time.md) | End-of-Life date | diff --git a/docs/mql/resources/core-pack/asset.md b/docs/mql/resources/core-pack/asset.md new file mode 100644 index 000000000..66b3018d0 --- /dev/null +++ b/docs/mql/resources/core-pack/asset.md @@ -0,0 +1,30 @@ +--- +title: asset +id: asset +sidebar_label: asset +displayed_sidebar: MQL +description: General asset information +--- + +# asset + +**Description** + +General asset information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------- | +| name | string | Human readable name of the asset | +| ids | []string | All identifiers for this asset | +| platform | string | Platform for this asset (redhat, windows, k8s-pod) | +| kind | string | Kind of platform, for example:, api, baremetal, vm, vm-image, container, container-image, network, ... | +| runtime | string | Runtime is the specific kind of the platform. Examples include:, docker-container, podman-container, aws-ec2-instance, ... | +| version | string | Version of the platform | +| arch | string | Architecture this OS is running on | +| title | string | Human-readable title of the platform (e.g., "Red Hat 8, Container") | +| family | []string | List of platform families that this platform belongs to | +| fqdn | string | Fully qualified domain name (optional) | +| build | string | Build version of the platform (optional) | +| labels | map[string]string | Optional platform information | diff --git a/docs/mql/resources/core-pack/cpe.md b/docs/mql/resources/core-pack/cpe.md new file mode 100644 index 000000000..96d43b906 --- /dev/null +++ b/docs/mql/resources/core-pack/cpe.md @@ -0,0 +1,34 @@ +--- +title: cpe +id: cpe +sidebar_label: cpe +displayed_sidebar: MQL +description: Common Platform Enumeration (CPE) identifiers +--- + +# cpe + +**Description** + +Common Platform Enumeration (CPE) identifiers + +**Init** + +cpe(uri string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | --------------------------- | +| uri | string | URI binding of the CPE | +| part | string | Part of the CPE | +| vendor | string | Vendor of the CPE | +| product | string | Product of the CPE | +| version | string | Version of the CPE | +| update | string | Update of the CPE | +| edition | string | Edition of the CPE | +| language | string | Language of the CPE | +| swEdition | string | Software edition of the CPE | +| targetSw | string | Target software of the CPE | +| targetHw | string | Target hardware of the CPE | +| other | string | Other of the CPE | diff --git a/docs/mql/resources/core-pack/mondoo.md b/docs/mql/resources/core-pack/mondoo.md new file mode 100644 index 000000000..60758b361 --- /dev/null +++ b/docs/mql/resources/core-pack/mondoo.md @@ -0,0 +1,23 @@ +--- +title: mondoo +id: mondoo +sidebar_label: mondoo +displayed_sidebar: MQL +description: Contextual information about MQL runtime and environment +--- + +# mondoo + +**Description** + +Contextual information about MQL runtime and environment + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ---------------- | --------------------------------------------------- | +| version | string | Version of the client running on the asset | +| build | string | Build of the client (e.g., production, development) | +| arch | string | Architecture of this client (e.g., linux-amd64) | +| jobEnvironment | dict | Agent execution environment | +| capabilities | []string | Connection capabilities | diff --git a/docs/mql/resources/core-pack/parse.md b/docs/mql/resources/core-pack/parse.md new file mode 100644 index 000000000..05e0c09ff --- /dev/null +++ b/docs/mql/resources/core-pack/parse.md @@ -0,0 +1,13 @@ +--- +title: parse +id: parse +sidebar_label: parse +displayed_sidebar: MQL +description: Provides common parsers (json, ini, certs, etc) +--- + +# parse + +**Description** + +Provides common parsers (json, ini, certs, etc) diff --git a/docs/mql/resources/core-pack/regex.md b/docs/mql/resources/core-pack/regex.md new file mode 100644 index 000000000..808f8bb35 --- /dev/null +++ b/docs/mql/resources/core-pack/regex.md @@ -0,0 +1,27 @@ +--- +title: regex +id: regex +sidebar_label: regex +displayed_sidebar: MQL +description: Built-in regular expression functions +--- + +# regex + +**Description** + +Built-in regular expression functions + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | ---------------------------------- | +| ipv4 | [regex](regex.md) | Matches IPv4 addresses | +| ipv6 | [regex](regex.md) | Matches IPv6 addresses | +| url | [regex](regex.md) | Matches URL addresses (HTTP/HTTPS) | +| email | [regex](regex.md) | Matches email addresses | +| mac | [regex](regex.md) | Matches MAC addresses | +| uuid | [regex](regex.md) | Matches hyphen-deliminated UUIDs | +| emoji | [regex](regex.md) | Matches emojis | +| semver | [regex](regex.md) | Matches semantic version numbers | +| creditCard | [regex](regex.md) | Matches credit card numbers | diff --git a/docs/mql/resources/core-pack/time.md b/docs/mql/resources/core-pack/time.md new file mode 100644 index 000000000..a534e15be --- /dev/null +++ b/docs/mql/resources/core-pack/time.md @@ -0,0 +1,25 @@ +--- +title: time +id: time +sidebar_label: time +displayed_sidebar: MQL +description: Date and time functions +--- + +# time + +**Description** + +Date and time functions + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | --------------- | ------------------------------------ | +| now | [time](time.md) | The current time on the local system | +| second | [time](time.md) | One second, used for durations | +| minute | [time](time.md) | One minute, used for durations | +| hour | [time](time.md) | One hour, used for durations | +| day | [time](time.md) | One day, used for durations | +| today | [time](time.md) | The current day starting at midnight | +| tomorrow | [time](time.md) | The next day starting at midnight | diff --git a/docs/mql/resources/core-pack/uuid.md b/docs/mql/resources/core-pack/uuid.md new file mode 100644 index 000000000..feb8b94a7 --- /dev/null +++ b/docs/mql/resources/core-pack/uuid.md @@ -0,0 +1,26 @@ +--- +title: uuid +id: uuid +sidebar_label: uuid +displayed_sidebar: MQL +description: UUIDs based on RFC 4122 and DCE 1.1 +--- + +# uuid + +**Description** + +UUIDs based on RFC 4122 and DCE 1.1 + +**Init** + +uuid(value string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | -------------------------------------------------------------------- | +| value | string | Canonical string representation xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | +| urn | string | URN returns the RFC 2141 URN form of uuid | +| version | int | Version of UUID | +| variant | string | Variant encoded in UUID | diff --git a/docs/mql/resources/equinix-pack/README.md b/docs/mql/resources/equinix-pack/README.md new file mode 100644 index 000000000..1760d7d8d --- /dev/null +++ b/docs/mql/resources/equinix-pack/README.md @@ -0,0 +1,19 @@ +--- +title: Equinix Resource Pack - MQL Resources +id: equinix.pack +sidebar_label: Equinix Resource Pack +displayed_sidebar: MQL +description: The Equinix resource pack lets you use MQL to query and assess the security of your Equinix Metal services. +--- + +# Mondoo Equinix Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ----------------------------------------------------------- | -------------------------- | +| [equinix.metal.device](equinix.metal.device.md) | Equinix Metal device | +| [equinix.metal.organization](equinix.metal.organization.md) | Equinix Metal organization | +| [equinix.metal.project](equinix.metal.project.md) | Equinix Metal project | +| [equinix.metal.sshkey](equinix.metal.sshkey.md) | Equinix Metal SSH key | +| [equinix.metal.user](equinix.metal.user.md) | Equinix Metal user | diff --git a/docs/mql/resources/equinix-pack/equinix.metal.device.md b/docs/mql/resources/equinix-pack/equinix.metal.device.md new file mode 100644 index 000000000..477133c2e --- /dev/null +++ b/docs/mql/resources/equinix-pack/equinix.metal.device.md @@ -0,0 +1,42 @@ +--- +title: equinix.metal.device +id: equinix.metal.device +sidebar_label: equinix.metal.device +displayed_sidebar: MQL +description: Equinix Metal device +--- + +# equinix.metal.device + +**Supported platform** + +- equinix + +**Maturity** + +experimental + +**Description** + +Equinix Metal device + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ------------------------------------- | +| id | string | Device ID | +| shortID | string | Device's short ID | +| url | string | Device URL | +| hostname | string | Device hostname | +| description | string | Description of the device | +| state | string | Current state of the device | +| createdAt | time | When the device was created | +| updatedAt | time | When the device was last updated | +| locked | bool | Whether the device is locked | +| billingCycle | string | Billing cycle used for the device | +| spotInstance | bool | Whether the device is a Spot instance | +| os | dict | Operating system | + +**References** + +- [Equinix Metal docs](https://deploy.equinix.com/developers/docs/metal/) diff --git a/docs/mql/resources/equinix-pack/equinix.metal.organization.md b/docs/mql/resources/equinix-pack/equinix.metal.organization.md new file mode 100644 index 000000000..ef9f42456 --- /dev/null +++ b/docs/mql/resources/equinix-pack/equinix.metal.organization.md @@ -0,0 +1,44 @@ +--- +title: equinix.metal.organization +id: equinix.metal.organization +sidebar_label: equinix.metal.organization +displayed_sidebar: MQL +description: Equinix Metal organization +--- + +# equinix.metal.organization + +**Supported platform** + +- equinix + +**Maturity** + +experimental + +**Description** + +Equinix Metal organization + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------------------- | ---------------------------------------- | +| id | string | Organization ID | +| name | string | Organization name | +| description | string | Organization description | +| website | string | Organization website URL | +| twitter | string | Organization X (formerly Twitter) handle | +| createdAt | time | When the organization was created | +| updatedAt | time | When the organization was last updated | +| address | dict | Address information for the organization | +| taxId | string | Organization's tax ID | +| mainPhone | string | Organization's main phone number | +| billingPhone | string | Organization's billing phone number | +| creditAmount | float | Organization's credit amount | +| url | string | URL | +| users | [][equinix.metal.user](equinix.metal.user.md) | Users in the organization | + +**References** + +- [Organizations](https://deploy.equinix.com/developers/docs/metal/accounts/organizations/) diff --git a/docs/mql/resources/equinix-pack/equinix.metal.project.md b/docs/mql/resources/equinix-pack/equinix.metal.project.md new file mode 100644 index 000000000..f161d41fb --- /dev/null +++ b/docs/mql/resources/equinix-pack/equinix.metal.project.md @@ -0,0 +1,38 @@ +--- +title: equinix.metal.project +id: equinix.metal.project +sidebar_label: equinix.metal.project +displayed_sidebar: MQL +description: Equinix Metal project +--- + +# equinix.metal.project + +**Supported platform** + +- equinix + +**Maturity** + +experimental + +**Description** + +Equinix Metal project + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------------------------- | ----------------------------------- | +| id | string | Project ID | +| name | string | Project name | +| organization | [equinix.metal.organization](equinix.metal.organization.md) | Organization the project belongs to | +| createdAt | time | When the project was created | +| updatedAt | time | When the project was last updated | +| url | string | URL | +| sshKeys | [][equinix.metal.sshkey](equinix.metal.sshkey.md) | SSH keys | +| devices | [][equinix.metal.device](equinix.metal.device.md) | Devices | + +**References** + +- [Creating a Project](https://deploy.equinix.com/developers/docs/metal/projects/creating-a-project/) diff --git a/docs/mql/resources/equinix-pack/equinix.metal.sshkey.md b/docs/mql/resources/equinix-pack/equinix.metal.sshkey.md new file mode 100644 index 000000000..7bf5ba9bf --- /dev/null +++ b/docs/mql/resources/equinix-pack/equinix.metal.sshkey.md @@ -0,0 +1,37 @@ +--- +title: equinix.metal.sshkey +id: equinix.metal.sshkey +sidebar_label: equinix.metal.sshkey +displayed_sidebar: MQL +description: Equinix Metal SSH key +--- + +# equinix.metal.sshkey + +**Supported platform** + +- equinix + +**Maturity** + +experimental + +**Description** + +Equinix Metal SSH key + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ----------------------------- | +| id | string | ID of the SSH key | +| label | string | label of the SSH key | +| key | string | Key | +| fingerPrint | string | Finger print | +| createdAt | time | When the key was created | +| updatedAt | time | When the key was last updated | +| url | string | URL | + +**References** + +- [Project SSH Keys](https://deploy.equinix.com/developers/docs/metal/projects/project-ssh-keys/) diff --git a/docs/mql/resources/equinix-pack/equinix.metal.user.md b/docs/mql/resources/equinix-pack/equinix.metal.user.md new file mode 100644 index 000000000..e28e743a7 --- /dev/null +++ b/docs/mql/resources/equinix-pack/equinix.metal.user.md @@ -0,0 +1,45 @@ +--- +title: equinix.metal.user +id: equinix.metal.user +sidebar_label: equinix.metal.user +displayed_sidebar: MQL +description: Equinix Metal user +--- + +# equinix.metal.user + +**Supported platform** + +- equinix + +**Maturity** + +experimental + +**Description** + +Equinix Metal user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------ | ---------------------------------- | +| id | string | User ID | +| firstName | string | User's first name | +| lastName | string | User's last name | +| fullName | string | User's full name | +| email | string | User's email address | +| twoFactorAuth | string | User's two-factor authentication | +| avatarUrl | string | User's avatar | +| twitter | string | User's X (formerly Twitter) handle | +| facebook | string | User's facebook account | +| linkedin | string | User's LinkedIn account | +| createdAt | time | When the user was created | +| updatedAt | time | When the user was last updated | +| timezone | string | User's time zone | +| phoneNumber | string | User's phone number | +| url | string | URL | + +**References** + +- [User Accounts](https://deploy.equinix.com/developers/docs/metal/accounts/users/) diff --git a/docs/mql/resources/gcp-pack/README.md b/docs/mql/resources/gcp-pack/README.md new file mode 100644 index 000000000..04bbc6b2e --- /dev/null +++ b/docs/mql/resources/gcp-pack/README.md @@ -0,0 +1,136 @@ +--- +title: Google Cloud Platform (GCP) Resource Pack - MQL Resources +id: google.cloud.platform.gcp.pack +sidebar_label: Google Cloud Platform (GCP) Resource Pack +displayed_sidebar: MQL +description: The Google Cloud Platform (GCP) resource pack lets you use MQL to query and assess the security of your GCP cloud services. +--- + +# Mondoo Google Cloud Platform (GCP) Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| [gcp.accessApprovalSettings](gcp.accessapprovalsettings.md) | GCP access approval settings | +| [gcp.essentialContact](gcp.essentialcontact.md) | GCP contact | +| [gcp.folder](gcp.folder.md) | GCP folder | +| [gcp.folders](gcp.folders.md) | GCP folders | +| [gcp.organization](gcp.organization.md) | GCP cloud organization | +| [gcp.project](gcp.project.md) | Google Cloud Platform project | +| [gcp.project.apiKey](gcp.project.apikey.md) | GCP project API key | +| [gcp.project.apiKey.restrictions](gcp.project.apikey.restrictions.md) | GCP project API key restrictions | +| [gcp.project.bigqueryService](gcp.project.bigqueryservice.md) | GCP BigQuery resources | +| [gcp.project.bigqueryService.dataset](gcp.project.bigqueryservice.dataset.md) | GCP BigQuery dataset | +| [gcp.project.bigqueryService.dataset.accessEntry](gcp.project.bigqueryservice.dataset.accessentry.md) | GCP BigQuery dataset access entry | +| [gcp.project.bigqueryService.model](gcp.project.bigqueryservice.model.md) | GCP BigQuery ML model | +| [gcp.project.bigqueryService.routine](gcp.project.bigqueryservice.routine.md) | GCP BigQuery routine | +| [gcp.project.bigqueryService.table](gcp.project.bigqueryservice.table.md) | GCP BigQuery table | +| [gcp.project.cloudFunction](gcp.project.cloudfunction.md) | GCP cloud function | +| [gcp.project.cloudRunService](gcp.project.cloudrunservice.md) | GCP Cloud Run resources | +| [gcp.project.cloudRunService.condition](gcp.project.cloudrunservice.condition.md) | GCP Cloud Run condition | +| [gcp.project.cloudRunService.container](gcp.project.cloudrunservice.container.md) | GCP Cloud Run service revision template container | +| [gcp.project.cloudRunService.container.probe](gcp.project.cloudrunservice.container.probe.md) | GCP Cloud Run service revision template container probe | +| [gcp.project.cloudRunService.job](gcp.project.cloudrunservice.job.md) | GCP Cloud Run job | +| [gcp.project.cloudRunService.job.executionTemplate](gcp.project.cloudrunservice.job.executiontemplate.md) | GCP Cloud Run job execution template | +| [gcp.project.cloudRunService.job.executionTemplate.taskTemplate](gcp.project.cloudrunservice.job.executiontemplate.tasktemplate.md) | GCP Cloud Run job execution template task template | +| [gcp.project.cloudRunService.operation](gcp.project.cloudrunservice.operation.md) | GCP Cloud Run operation | +| [gcp.project.cloudRunService.service](gcp.project.cloudrunservice.service.md) | GCP Cloud Run service | +| [gcp.project.cloudRunService.service.revisionTemplate](gcp.project.cloudrunservice.service.revisiontemplate.md) | GCP Cloud Run service revision template | +| [gcp.project.computeService](gcp.project.computeservice.md) | GCP Compute Engine | +| [gcp.project.computeService.address](gcp.project.computeservice.address.md) | GCP Compute address | +| [gcp.project.computeService.attachedDisk](gcp.project.computeservice.attacheddisk.md) | GCP Compute attached disk | +| [gcp.project.computeService.backendService](gcp.project.computeservice.backendservice.md) | GCP Compute backend service | +| [gcp.project.computeService.backendService.backend](gcp.project.computeservice.backendservice.backend.md) | GCP Compute backend service backend | +| [gcp.project.computeService.backendService.cdnPolicy](gcp.project.computeservice.backendservice.cdnpolicy.md) | GCP Compute backend service CDN policy | +| [gcp.project.computeService.disk](gcp.project.computeservice.disk.md) | GCP Compute persistent disk | +| [gcp.project.computeService.firewall](gcp.project.computeservice.firewall.md) | GCP Compute firewall | +| [gcp.project.computeService.forwardingRule](gcp.project.computeservice.forwardingrule.md) | GCP Compute forwarding rules | +| [gcp.project.computeService.image](gcp.project.computeservice.image.md) | GCP Compute | +| [gcp.project.computeService.instance](gcp.project.computeservice.instance.md) | GCP Compute instances | +| [gcp.project.computeService.machineType](gcp.project.computeservice.machinetype.md) | GCP machine type | +| [gcp.project.computeService.network](gcp.project.computeservice.network.md) | GCP Compute VPC network resource | +| [gcp.project.computeService.region](gcp.project.computeservice.region.md) | GCP Compute region | +| [gcp.project.computeService.router](gcp.project.computeservice.router.md) | GCP Compute cloud router | +| [gcp.project.computeService.serviceaccount](gcp.project.computeservice.serviceaccount.md) | GCP Compute service account | +| [gcp.project.computeService.snapshot](gcp.project.computeservice.snapshot.md) | GCP Compute persistent disk snapshot | +| [gcp.project.computeService.subnetwork](gcp.project.computeservice.subnetwork.md) | GCP Compute VPC network partitioning | +| [gcp.project.computeService.subnetwork.logConfig](gcp.project.computeservice.subnetwork.logconfig.md) | GCP Compute VPC network partitioning log configuration | +| [gcp.project.computeService.zone](gcp.project.computeservice.zone.md) | GCP Compute zone | +| [gcp.project.dataprocService](gcp.project.dataprocservice.md) | GCP Dataproc resources | +| [gcp.project.dataprocService.cluster](gcp.project.dataprocservice.cluster.md) | GCP Dataproc cluster | +| [gcp.project.dataprocService.cluster.config](gcp.project.dataprocservice.cluster.config.md) | GCP Dataproc cluster config | +| [gcp.project.dataprocService.cluster.config.gceCluster](gcp.project.dataprocservice.cluster.config.gcecluster.md) | GCP Dataproc cluster endpoint config | +| [gcp.project.dataprocService.cluster.config.gceCluster.reservationAffinity](gcp.project.dataprocservice.cluster.config.gcecluster.reservationaffinity.md) | GCP Dataproc cluster GCE cluster reservation affinity config | +| [gcp.project.dataprocService.cluster.config.gceCluster.shieldedInstanceConfig](gcp.project.dataprocservice.cluster.config.gcecluster.shieldedinstanceconfig.md) | GCP Dataproc cluster GCE cluster shielded instance config | +| [gcp.project.dataprocService.cluster.config.gkeCluster](gcp.project.dataprocservice.cluster.config.gkecluster.md) | GCP Dataproc cluster GKE cluster config | +| [gcp.project.dataprocService.cluster.config.instance](gcp.project.dataprocservice.cluster.config.instance.md) | GCP Dataproc cluster instance config | +| [gcp.project.dataprocService.cluster.config.instance.diskConfig](gcp.project.dataprocservice.cluster.config.instance.diskconfig.md) | GCP Dataproc cluster instance disk config | +| [gcp.project.dataprocService.cluster.config.lifecycle](gcp.project.dataprocservice.cluster.config.lifecycle.md) | GCP Dataproc cluster lifecycle config | +| [gcp.project.dataprocService.cluster.status](gcp.project.dataprocservice.cluster.status.md) | GCP Dataproc cluster status | +| [gcp.project.dataprocService.cluster.virtualClusterConfig](gcp.project.dataprocservice.cluster.virtualclusterconfig.md) | GCP Dataproc cluster virtual cluster config | +| [gcp.project.dnsService](gcp.project.dnsservice.md) | GCP Cloud DNS | +| [gcp.project.dnsService.managedzone](gcp.project.dnsservice.managedzone.md) | Cloud DNS managed zone (a resource that represents a DNS zone hosted by the Cloud DNS service) | +| [gcp.project.dnsService.policy](gcp.project.dnsservice.policy.md) | Cloud DNS rules applied to one or more Virtual Private Cloud resources | +| [gcp.project.dnsService.recordset](gcp.project.dnsservice.recordset.md) | Cloud DNS record set | +| [gcp.project.gkeService](gcp.project.gkeservice.md) | GCP GKE | +| [gcp.project.gkeService.cluster](gcp.project.gkeservice.cluster.md) | GCP GKE cluster | +| [gcp.project.gkeService.cluster.addonsConfig](gcp.project.gkeservice.cluster.addonsconfig.md) | GKE cluster addons config | +| [gcp.project.gkeService.cluster.ipAllocationPolicy](gcp.project.gkeservice.cluster.ipallocationpolicy.md) | GKE cluster IP allocation policy | +| [gcp.project.gkeService.cluster.networkConfig](gcp.project.gkeservice.cluster.networkconfig.md) | GKE cluster network config | +| [gcp.project.gkeService.cluster.nodepool](gcp.project.gkeservice.cluster.nodepool.md) | GKE cluster node pool | +| [gcp.project.gkeService.cluster.nodepool.config](gcp.project.gkeservice.cluster.nodepool.config.md) | GCP GKE node pool configuration | +| [gcp.project.gkeService.cluster.nodepool.config.accelerator](gcp.project.gkeservice.cluster.nodepool.config.accelerator.md) | GCP GKE node pool hardware accelerators configuration | +| [gcp.project.gkeService.cluster.nodepool.config.accelerator.gpuSharingConfig](gcp.project.gkeservice.cluster.nodepool.config.accelerator.gpusharingconfig.md) | GPU sharing configuration | +| [gcp.project.gkeService.cluster.nodepool.config.advancedMachineFeatures](gcp.project.gkeservice.cluster.nodepool.config.advancedmachinefeatures.md) | GCP GKE node pool advanced machine features configuration | +| [gcp.project.gkeService.cluster.nodepool.config.confidentialNodes](gcp.project.gkeservice.cluster.nodepool.config.confidentialnodes.md) | GCP GKE node pool confidential nodes configuration | +| [gcp.project.gkeService.cluster.nodepool.config.gcfsConfig](gcp.project.gkeservice.cluster.nodepool.config.gcfsconfig.md) | GCP GKE node pool GCFS configuration | +| [gcp.project.gkeService.cluster.nodepool.config.gvnicConfig](gcp.project.gkeservice.cluster.nodepool.config.gvnicconfig.md) | GCP GKE node pool gVNIC configuration | +| [gcp.project.gkeService.cluster.nodepool.config.kubeletConfig](gcp.project.gkeservice.cluster.nodepool.config.kubeletconfig.md) | GCP GKE Node Pool kubelet configuration | +| [gcp.project.gkeService.cluster.nodepool.config.linuxNodeConfig](gcp.project.gkeservice.cluster.nodepool.config.linuxnodeconfig.md) | GCP GKE node pool parameters that can be configured on Linux nodes | +| [gcp.project.gkeService.cluster.nodepool.config.nodeTaint](gcp.project.gkeservice.cluster.nodepool.config.nodetaint.md) | GCP GKE Kubernetes node taint | +| [gcp.project.gkeService.cluster.nodepool.config.sandboxConfig](gcp.project.gkeservice.cluster.nodepool.config.sandboxconfig.md) | GCP GKE node pool sandbox configuration | +| [gcp.project.gkeService.cluster.nodepool.config.shieldedInstanceConfig](gcp.project.gkeservice.cluster.nodepool.config.shieldedinstanceconfig.md) | GCP GKE node pool shielded instance configuration | +| [gcp.project.gkeService.cluster.nodepool.networkConfig](gcp.project.gkeservice.cluster.nodepool.networkconfig.md) | GCP GKE node pool-Level network configuration | +| [gcp.project.gkeService.cluster.nodepool.networkConfig.performanceConfig](gcp.project.gkeservice.cluster.nodepool.networkconfig.performanceconfig.md) | GCP GKE node pool network performance configuration | +| [gcp.project.iamService](gcp.project.iamservice.md) | GCP IAM resources | +| [gcp.project.iamService.serviceAccount](gcp.project.iamservice.serviceaccount.md) | GCP service account | +| [gcp.project.iamService.serviceAccount.key](gcp.project.iamservice.serviceaccount.key.md) | GCP service account keys | +| [gcp.project.kmsService](gcp.project.kmsservice.md) | GCP KMS resources | +| [gcp.project.kmsService.keyring](gcp.project.kmsservice.keyring.md) | GCP KMS keyring | +| [gcp.project.kmsService.keyring.cryptokey](gcp.project.kmsservice.keyring.cryptokey.md) | GCP KMS crypto key | +| [gcp.project.kmsService.keyring.cryptokey.version](gcp.project.kmsservice.keyring.cryptokey.version.md) | GCP KMS crypto key version | +| [gcp.project.kmsService.keyring.cryptokey.version.attestation](gcp.project.kmsservice.keyring.cryptokey.version.attestation.md) | GCP KMS crypto key version attestation | +| [gcp.project.kmsService.keyring.cryptokey.version.attestation.certificatechains](gcp.project.kmsservice.keyring.cryptokey.version.attestation.certificatechains.md) | GCP KMS crypto key version attestation certificate chains | +| [gcp.project.kmsService.keyring.cryptokey.version.externalProtectionLevelOptions](gcp.project.kmsservice.keyring.cryptokey.version.externalprotectionleveloptions.md) | GCP KMS crypto key version external protection level options | +| [gcp.project.loggingservice](gcp.project.loggingservice.md) | GCP Logging resources | +| [gcp.project.loggingservice.bucket](gcp.project.loggingservice.bucket.md) | GCP Logging bucket | +| [gcp.project.loggingservice.bucket.indexConfig](gcp.project.loggingservice.bucket.indexconfig.md) | GCP Logging bucket index config | +| [gcp.project.loggingservice.metric](gcp.project.loggingservice.metric.md) | GCP Logging metric | +| [gcp.project.loggingservice.sink](gcp.project.loggingservice.sink.md) | GCP Logging sink | +| [gcp.project.monitoringService](gcp.project.monitoringservice.md) | GCP monitoring resources | +| [gcp.project.monitoringService.alertPolicy](gcp.project.monitoringservice.alertpolicy.md) | GCP monitoring alert policy | +| [gcp.project.pubsubService](gcp.project.pubsubservice.md) | GCP Pub/Sub resources | +| [gcp.project.pubsubService.snapshot](gcp.project.pubsubservice.snapshot.md) | GCP Pub/Sub snapshot | +| [gcp.project.pubsubService.subscription](gcp.project.pubsubservice.subscription.md) | GCP Pub/Sub subscription | +| [gcp.project.pubsubService.subscription.config](gcp.project.pubsubservice.subscription.config.md) | GCP Pub/Sub subscription configuration | +| [gcp.project.pubsubService.subscription.config.pushconfig](gcp.project.pubsubservice.subscription.config.pushconfig.md) | GCP Pub/Sub configuration for subscriptions that operate in push mode | +| [gcp.project.pubsubService.topic](gcp.project.pubsubservice.topic.md) | GCP Pub/Sub topic | +| [gcp.project.pubsubService.topic.config](gcp.project.pubsubservice.topic.config.md) | GCP Pub/Sub topic configuration | +| [gcp.project.pubsubService.topic.config.messagestoragepolicy](gcp.project.pubsubservice.topic.config.messagestoragepolicy.md) | GCP Pub/Sub topic message storage policy | +| [gcp.project.sqlService](gcp.project.sqlservice.md) | GCP Cloud SQL resources | +| [gcp.project.sqlService.instance](gcp.project.sqlservice.instance.md) | GCP Cloud SQL instance | +| [gcp.project.sqlService.instance.database](gcp.project.sqlservice.instance.database.md) | GCP Cloud SQL instance database | +| [gcp.project.sqlService.instance.ipMapping](gcp.project.sqlservice.instance.ipmapping.md) | GCP Cloud SQL instance IP mapping | +| [gcp.project.sqlService.instance.settings](gcp.project.sqlservice.instance.settings.md) | GCP Cloud SQL instance settings | +| [gcp.project.sqlService.instance.settings.backupconfiguration](gcp.project.sqlservice.instance.settings.backupconfiguration.md) | GCP Cloud SQL instance settings backup configuration | +| [gcp.project.sqlService.instance.settings.denyMaintenancePeriod](gcp.project.sqlservice.instance.settings.denymaintenanceperiod.md) | GCP Cloud SQL instance settings deny maintenance period | +| [gcp.project.sqlService.instance.settings.ipConfiguration](gcp.project.sqlservice.instance.settings.ipconfiguration.md) | GCP Cloud SQL instance settings IP configuration | +| [gcp.project.sqlService.instance.settings.maintenanceWindow](gcp.project.sqlservice.instance.settings.maintenancewindow.md) | GCP Cloud SQL instance settings maintenance window | +| [gcp.project.sqlService.instance.settings.passwordValidationPolicy](gcp.project.sqlservice.instance.settings.passwordvalidationpolicy.md) | GCP Cloud SQL instance settings password validation policy | +| [gcp.project.storageService](gcp.project.storageservice.md) | GCP Cloud Storage | +| [gcp.project.storageService.bucket](gcp.project.storageservice.bucket.md) | GCP Cloud Storage bucket | +| [gcp.projects](gcp.projects.md) | GCP projects | +| [gcp.recommendation](gcp.recommendation.md) | GCP recommendation and suggested action | +| [gcp.resourcemanager.binding](gcp.resourcemanager.binding.md) | GCP Resource Manager binding | +| [gcp.service](gcp.service.md) | GCP service | diff --git a/docs/mql/resources/gcp-pack/gcp.accessapprovalsettings.md b/docs/mql/resources/gcp-pack/gcp.accessapprovalsettings.md new file mode 100644 index 000000000..b7e04e030 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.accessapprovalsettings.md @@ -0,0 +1,33 @@ +--- +title: gcp.accessApprovalSettings +id: gcp.accessApprovalSettings +sidebar_label: gcp.accessApprovalSettings +displayed_sidebar: MQL +description: GCP access approval settings +--- + +# gcp.accessApprovalSettings + +**Supported platform** + +- gcp + +**Description** + +GCP access approval settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| resourcePath | string | Resource path | +| notificationEmails | []string | List of email addresses to which notifications relating to approval requests should be sent | +| enrolledServices | []dict | List of Google Cloud services for which the given resource has access approval enrolled | +| enrolledAncestor | bool | Whether at least one service is enrolled for access approval in one or more ancestors of the project or folder (unset for organizations since organizations do not have ancestors) | +| activeKeyVersion | string | Asymmetric crypto key version to use for signing approval requests | +| ancestorHasActiveKeyVersion | bool | Whether an ancestor of this project or folder has set active key version (unset for organizations since organizations do not have ancestors) | +| invalidKeyVersion | bool | Whether there is some configuration issue with the active key version configured at this level of the resource hierarchy | + +**References** + +- [Access Approval documentation](https://cloud.google.com/assured-workloads/access-approval/docs) diff --git a/docs/mql/resources/gcp-pack/gcp.essentialcontact.md b/docs/mql/resources/gcp-pack/gcp.essentialcontact.md new file mode 100644 index 000000000..42f3473c7 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.essentialcontact.md @@ -0,0 +1,32 @@ +--- +title: gcp.essentialContact +id: gcp.essentialContact +sidebar_label: gcp.essentialContact +displayed_sidebar: MQL +description: GCP contact +--- + +# gcp.essentialContact + +**Supported platform** + +- gcp + +**Description** + +GCP contact + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ---------------- | --------------------------------------------------------------------------- | +| resourcePath | string | Full resource path | +| email | string | Email address to send notifications to | +| languageTag | string | Preferred language for notifications, as a ISO 639-1 language code | +| notificationCategories | []string | Categories of notifications that the contact will receive communication for | +| validated | time | Last time the validation state was updated | +| validationState | string | Validity of the contact | + +**References** + +- [Managing contacts for notifications](https://cloud.google.com/resource-manager/docs/managing-notification-contacts) diff --git a/docs/mql/resources/gcp-pack/gcp.folder.md b/docs/mql/resources/gcp-pack/gcp.folder.md new file mode 100644 index 000000000..ff6be877a --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.folder.md @@ -0,0 +1,34 @@ +--- +title: gcp.folder +id: gcp.folder +sidebar_label: gcp.folder +displayed_sidebar: MQL +description: GCP folder +--- + +# gcp.folder + +**Supported platform** + +- gcp + +**Description** + +GCP folder + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------------------------------- | ------------------ | +| id | string | Folder ID | +| name | string | Folder name | +| created | time | Creation timestamp | +| updated | time | Update timestamp | +| parentId | string | Parent ID | +| state | string | Folder state | +| folders | [gcp.folders](gcp.folders.md) | List of folders | +| projects | [gcp.projects](gcp.projects.md) | List of projects | + +**References** + +- [Creating and managing Folders](https://cloud.google.com/resource-manager/docs/creating-managing-folders) diff --git a/docs/mql/resources/gcp-pack/gcp.folders.md b/docs/mql/resources/gcp-pack/gcp.folders.md new file mode 100644 index 000000000..e7350b84c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.folders.md @@ -0,0 +1,33 @@ +--- +title: gcp.folders +id: gcp.folders +sidebar_label: gcp.folders +displayed_sidebar: MQL +description: GCP folders +--- + +# gcp.folders + +**Supported platform** + +- gcp + +**Description** + +GCP folders + +**List** + +[]gcp.folder + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------------------------------------- | ------------------------------------------------- | +| parentId | string | Parent ID | +| children | [][gcp.folder](gcp.folder.md) | List of the children folders only (non-recursive) | +| list | [][gcp.folder](gcp.folder.md) | | + +**References** + +- [Creating and managing Folders](https://cloud.google.com/resource-manager/docs/creating-managing-folders) diff --git a/docs/mql/resources/gcp-pack/gcp.organization.md b/docs/mql/resources/gcp-pack/gcp.organization.md new file mode 100644 index 000000000..62d03dece --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.organization.md @@ -0,0 +1,34 @@ +--- +title: gcp.organization +id: gcp.organization +sidebar_label: gcp.organization +displayed_sidebar: MQL +description: GCP cloud organization +--- + +# gcp.organization + +**Supported platform** + +- gcp + +**Description** + +GCP cloud organization + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ----------------------------------------------------------------------- | -------------------------------- | +| id | string | Organization ID | +| name | string | Organization name | +| state | string | Organization state | +| lifecycleState | string | Deprecated. Use `state` instead. | +| iamPolicy | [][gcp.resourcemanager.binding](gcp.resourcemanager.binding.md) | Organization IAM policy | +| accessApprovalSettings | [gcp.accessApprovalSettings](gcp.accessapprovalsettings.md) | Access approval settings | +| folders | [gcp.folders](gcp.folders.md) | List of folders | +| projects | [gcp.projects](gcp.projects.md) | List of projects | + +**References** + +- [Resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy) diff --git a/docs/mql/resources/gcp-pack/gcp.project.apikey.md b/docs/mql/resources/gcp-pack/gcp.project.apikey.md new file mode 100644 index 000000000..9eadd773f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.apikey.md @@ -0,0 +1,36 @@ +--- +title: gcp.project.apiKey +id: gcp.project.apiKey +sidebar_label: gcp.project.apiKey +displayed_sidebar: MQL +description: GCP project API key +--- + +# gcp.project.apiKey + +**Supported platform** + +- gcp + +**Description** + +GCP project API key + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------------------------------- | ------------------------------------------- | +| id | string | The ID of the key | +| projectId | string | Project ID | +| name | string | Human-readable display name of this key | +| resourcePath | string | Full resource path | +| annotations | map[string]string | Annotations | +| created | time | Creation timestamp | +| deleted | time | Deletion timestamp | +| keyString | string | Encrypted and signed value held by this key | +| restrictions | [gcp.project.apiKey.restrictions](gcp.project.apikey.restrictions.md) | API key restrictions | +| updated | time | Update timestamp | + +**References** + +- [API Keys Overview](https://cloud.google.com/api-keys/docs/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.apikey.restrictions.md b/docs/mql/resources/gcp-pack/gcp.project.apikey.restrictions.md new file mode 100644 index 000000000..24a7e0f40 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.apikey.restrictions.md @@ -0,0 +1,32 @@ +--- +title: gcp.project.apiKey.restrictions +id: gcp.project.apiKey.restrictions +sidebar_label: gcp.project.apiKey.restrictions +displayed_sidebar: MQL +description: GCP project API key restrictions +--- + +# gcp.project.apiKey.restrictions + +**Supported platform** + +- gcp + +**Description** + +GCP project API key restrictions + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | -------------- | -------------------------------------------------------------------------------- | +| parentResourcePath | string | Parent resource path | +| androidKeyRestrictions | dict | The Android apps that are allowed to use the key | +| apiTargets | []dict | A restriction for a specific service and optionally one or more specific methods | +| browserKeyRestrictions | dict | The HTTP referrers that are allowed to use the key | +| iosKeyRestrictions | dict | The iOS apps that are allowed to use the key | +| serverKeyRestrictions | dict | The IP addresses that are allowed to use the key | + +**References** + +- [Adding restrictions to API keys](https://cloud.google.com/api-keys/docs/add-restrictions-api-keys) diff --git a/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.dataset.accessentry.md b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.dataset.accessentry.md new file mode 100644 index 000000000..da8b3f177 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.dataset.accessentry.md @@ -0,0 +1,34 @@ +--- +title: gcp.project.bigqueryService.dataset.accessEntry +id: gcp.project.bigqueryService.dataset.accessEntry +sidebar_label: gcp.project.bigqueryService.dataset.accessEntry +displayed_sidebar: MQL +description: GCP BigQuery dataset access entry +--- + +# gcp.project.bigqueryService.dataset.accessEntry + +**Supported platform** + +- gcp + +**Description** + +GCP BigQuery dataset access entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ----------------------------------------------------- | +| id | string | Internal ID | +| datasetId | string | Dataset ID | +| role | string | Role of the entity | +| entityType | string | Type of the entity | +| entity | string | Entity (individual or group) granted access | +| viewRef | dict | View granted access (entityType must be ViewEntity) | +| routineRef | dict | Routine granted access (only UDF currently supported) | +| datasetRef | dict | Resources within a dataset granted access | + +**References** + +- [Control access to resources](https://cloud.google.com/bigquery/docs/control-access-to-resources-iam) diff --git a/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.dataset.md b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.dataset.md new file mode 100644 index 000000000..c0402a9e1 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.dataset.md @@ -0,0 +1,40 @@ +--- +title: gcp.project.bigqueryService.dataset +id: gcp.project.bigqueryService.dataset +sidebar_label: gcp.project.bigqueryService.dataset +displayed_sidebar: MQL +description: GCP BigQuery dataset +--- + +# gcp.project.bigqueryService.dataset + +**Supported platform** + +- gcp + +**Description** + +GCP BigQuery dataset + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | +| id | string | Dataset ID | +| projectId | string | Project ID | +| name | string | User-friendly name for this dataset | +| description | string | User-friendly description of this dataset | +| location | string | Geo location of the dataset | +| labels | map[string]string | User-provided labels | +| created | time | Creation timestamp | +| modified | time | Modified timestamp | +| tags | map[string]string | Tags associated with this dataset | +| kmsName | string | Cloud KMS encryption key that will be used to protect BigQuery table | +| access | [][gcp.project.bigqueryService.dataset.accessEntry](gcp.project.bigqueryservice.dataset.accessentry.md) | Access permissions | +| tables | [][gcp.project.bigqueryService.table](gcp.project.bigqueryservice.table.md) | Returns tables in the Dataset | +| models | [][gcp.project.bigqueryService.model](gcp.project.bigqueryservice.model.md) | Returns models in the Dataset | +| routines | [][gcp.project.bigqueryService.routine](gcp.project.bigqueryservice.routine.md) | Returns routines in the Dataset | + +**References** + +- [Introduction to datasets](https://cloud.google.com/bigquery/docs/datasets-intro) diff --git a/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.md b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.md new file mode 100644 index 000000000..374298572 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.bigqueryService +id: gcp.project.bigqueryService +sidebar_label: gcp.project.bigqueryService +displayed_sidebar: MQL +description: GCP BigQuery resources +--- + +# gcp.project.bigqueryService + +**Supported platform** + +- gcp + +**Description** + +GCP BigQuery resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------------------------------------------------------------------------------- | ------------------------- | +| projectId | string | Project ID | +| datasets | [][gcp.project.bigqueryService.dataset](gcp.project.bigqueryservice.dataset.md) | List of BigQuery datasets | + +**References** + +- [BigQuery documentation](https://cloud.google.com/bigquery/docs) diff --git a/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.model.md b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.model.md new file mode 100644 index 000000000..908a6bc7e --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.model.md @@ -0,0 +1,38 @@ +--- +title: gcp.project.bigqueryService.model +id: gcp.project.bigqueryService.model +sidebar_label: gcp.project.bigqueryService.model +displayed_sidebar: MQL +description: GCP BigQuery ML model +--- + +# gcp.project.bigqueryService.model + +**Supported platform** + +- gcp + +**Description** + +GCP BigQuery ML model + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ----------------- | --------------------------------------------------------------- | +| id | string | Model ID | +| datasetId | string | Dataset ID | +| projectId | string | Project ID | +| name | string | User-friendly name of the model | +| location | string | Geographic location | +| description | string | User-friendly description of the model | +| labels | map[string]string | User-provided labels | +| created | time | Creation timestamp | +| modified | time | Modified timestamp | +| type | string | Type of the mode | +| expirationTime | time | Expiration time of the model | +| kmsName | string | Cloud KMS encryption key that is used to protect BigQuery model | + +**References** + +- [Introduction to BigQuery ML](https://cloud.google.com/bigquery/docs/bqml-introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.routine.md b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.routine.md new file mode 100644 index 000000000..57994014a --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.routine.md @@ -0,0 +1,34 @@ +--- +title: gcp.project.bigqueryService.routine +id: gcp.project.bigqueryService.routine +sidebar_label: gcp.project.bigqueryService.routine +displayed_sidebar: MQL +description: GCP BigQuery routine +--- + +# gcp.project.bigqueryService.routine + +**Supported platform** + +- gcp + +**Description** + +GCP BigQuery routine + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | -------------------------------------------------- | +| id | string | Routine ID | +| datasetId | string | Dataset ID | +| projectId | string | Project ID | +| language | string | Language of the routine, such as SQL or JAVASCRIPT | +| description | string | User-friendly description of the routine | +| created | time | Creation timestamp | +| modified | time | Modified timestamp | +| type | string | Type of routine | + +**References** + +- [Manage routines](https://cloud.google.com/bigquery/docs/routines) diff --git a/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.table.md b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.table.md new file mode 100644 index 000000000..bcabd7bc7 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.bigqueryservice.table.md @@ -0,0 +1,51 @@ +--- +title: gcp.project.bigqueryService.table +id: gcp.project.bigqueryService.table +sidebar_label: gcp.project.bigqueryService.table +displayed_sidebar: MQL +description: GCP BigQuery table +--- + +# gcp.project.bigqueryService.table + +**Supported platform** + +- gcp + +**Description** + +GCP BigQuery table + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ----------------- | ---------------------------------------------------------------------------------------- | +| id | string | Table ID | +| projectId | string | Project ID | +| datasetId | string | Dataset ID | +| name | string | The user-friendly name for the table | +| location | string | Location of the table | +| description | string | User-friendly description of the table | +| labels | map[string]string | User-provided labels | +| useLegacySQL | bool | Indicates if Legacy SQL is used for the view query | +| requirePartitionFilter | bool | Indicates if queries that reference this table must specify a partition filter | +| created | time | Creation timestamp | +| modified | time | Modified timestamp | +| numBytes | int | Size of the table in bytes | +| numLongTermBytes | int | Number of bytes in the table considered "long-term storage" for reduced billing purposes | +| numRows | int | Number of rows of data in this table | +| type | string | Table Type | +| expirationTime | time | Time when this table expires | +| kmsName | string | Cloud KMS encryption key that is used to protect BigQuery table | +| snapshotTime | time | Indicates when the base table was snapshot | +| viewQuery | string | Query to use for a logical view | +| clusteringFields | dict | Data clustering configuration | +| externalDataConfig | dict | Information about table stored outside of BigQuery. | +| materializedView | dict | Information for materialized views | +| rangePartitioning | dict | Integer-range-based partitioning on a table | +| timePartitioning | dict | Time-based date partitioning on a table | +| schema | []dict | Table schema | + +**References** + +- [Introduction to tables](https://cloud.google.com/bigquery/docs/tables-intro) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudfunction.md b/docs/mql/resources/gcp-pack/gcp.project.cloudfunction.md new file mode 100644 index 000000000..5d9841824 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudfunction.md @@ -0,0 +1,59 @@ +--- +title: gcp.project.cloudFunction +id: gcp.project.cloudFunction +sidebar_label: gcp.project.cloudFunction +displayed_sidebar: MQL +description: GCP cloud function +--- + +# gcp.project.cloudFunction + +**Supported platform** + +- gcp + +**Description** + +GCP cloud function + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ----------------- | ----------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| name | string | Cloud function name | +| description | string | Cloud function description | +| sourceArchiveUrl | string | Location of the archive with the function's source code | +| sourceRepository | dict | Repository reference for the function's source code | +| sourceUploadUrl | string | Location of the upload with the function's source code | +| httpsTrigger | dict | HTTPS endpoint of source that can be triggered via URL | +| eventTrigger | dict | Source that fires events in response to a condition in another service | +| status | string | Status of the function deployment | +| entryPoint | string | Name of the function (as defined in source code) that is executed | +| runtime | string | Runtime in which to run the function | +| timeout | time | Function execution timeout | +| availableMemoryMb | int | Amount of memory in MB available for a function | +| serviceAccountEmail | string | Email of the function's service account | +| updated | time | Update timestamp | +| versionId | int | Version identifier of the cloud function | +| labels | map[string]string | Labels associated with this cloud function | +| envVars | map[string]string | Environment variables that are available during function execution | +| buildEnvVars | map[string]string | Build environment variables that are available during build time | +| network | string | VPC network that this cloud function can connect to | +| maxInstances | int | Maximum number of function instances that may coexist at a given time | +| minInstances | int | Lower bound for the number of function instances that may coexist at a given time | +| vpcConnector | string | VPC network connector that this cloud function can connect to | +| egressSettings | string | Egress settings for the connector controlling what traffic is diverted | +| ingressSettings | string | Ingress settings for the function controlling what traffic can reach | +| kmsKeyName | string | Resource name of a KMS crypto key used to encrypt/decrypt function resources | +| buildWorkerPool | string | Name of the Cloud Build custom WorkerPool that should be used to build the function | +| buildId | string | Cloud Build ID of the latest successful deployment of the function | +| buildName | string | Cloud Build name of the function deployment | +| secretEnvVars | map[string]dict | Secret environment variables | +| secretVolumes | []dict | Secret volumes | +| dockerRepository | string | User-managed repository created in Artifact Registry | +| dockerRegistry | string | Docker registry to use for this deployment | + +**References** + +- [Cloud Functions](https://cloud.google.com/functions) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.condition.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.condition.md new file mode 100644 index 000000000..ddaca8796 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.condition.md @@ -0,0 +1,32 @@ +--- +title: gcp.project.cloudRunService.condition +id: gcp.project.cloudRunService.condition +sidebar_label: gcp.project.cloudRunService.condition +displayed_sidebar: MQL +description: GCP Cloud Run condition +--- + +# gcp.project.cloudRunService.condition + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run condition + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------ | ------------------------------------------------------------------ | +| id | string | Internal ID | +| type | string | Status of the reconciliation process | +| state | string | Condition state | +| message | string | Human-readable message indicating details about the current status | +| lastTransitionTime | time | Last time the condition transitioned from one status to another | +| severity | string | How to interpret failures of this condition | + +**References** + +- [Condition](https://cloud.google.com/run/docs/reference/rest/v1/Condition) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.container.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.container.md new file mode 100644 index 000000000..5646e993f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.container.md @@ -0,0 +1,38 @@ +--- +title: gcp.project.cloudRunService.container +id: gcp.project.cloudRunService.container +sidebar_label: gcp.project.cloudRunService.container +displayed_sidebar: MQL +description: GCP Cloud Run service revision template container +--- + +# gcp.project.cloudRunService.container + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run service revision template container + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| id | string | Internal ID | +| name | string | Container name | +| image | string | URL of the container image in Google Container Registry or Google Artifact Registry | +| command | []string | Entrypoint array | +| args | []string | Arguments to the entrypoint | +| env | []dict | Environment variables | +| resources | dict | Compute resource requirements by the container | +| ports | []dict | List of ports to expose from the container | +| volumeMounts | []dict | Volumes to mount into the container's file system | +| workingDir | string | Container's working directory | +| livenessProbe | [gcp.project.cloudRunService.container.probe](gcp.project.cloudrunservice.container.probe.md) | Periodic probe of container liveness | +| startupProbe | [gcp.project.cloudRunService.container.probe](gcp.project.cloudrunservice.container.probe.md) | Startup probe of application within the container | + +**References** + +- [Container](https://cloud.google.com/run/docs/reference/rest/v1/Container) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.container.probe.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.container.probe.md new file mode 100644 index 000000000..ce7020689 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.container.probe.md @@ -0,0 +1,33 @@ +--- +title: gcp.project.cloudRunService.container.probe +id: gcp.project.cloudRunService.container.probe +sidebar_label: gcp.project.cloudRunService.container.probe +displayed_sidebar: MQL +description: GCP Cloud Run service revision template container probe +--- + +# gcp.project.cloudRunService.container.probe + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run service revision template container probe + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------ | ------------------------------------------------------------------------------- | +| id | string | Internal ID | +| initialDelaySeconds | int | Number of seconds after the container has started before the probe is initiated | +| timeoutSeconds | int | Number of seconds after which the probe times out | +| periodSeconds | int | Number of seconds indicating how often to perform the probe | +| failureThreshold | int | Minimum consecutive successes for the probe to be considered failed | +| httpGet | dict | HTTP GET probe configuration | +| tcpSocket | dict | TCP socket probe configuration | + +**References** + +- [Container](https://cloud.google.com/run/docs/reference/rest/v1/Container) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.executiontemplate.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.executiontemplate.md new file mode 100644 index 000000000..aab70321c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.executiontemplate.md @@ -0,0 +1,32 @@ +--- +title: gcp.project.cloudRunService.job.executionTemplate +id: gcp.project.cloudRunService.job.executionTemplate +sidebar_label: gcp.project.cloudRunService.job.executionTemplate +displayed_sidebar: MQL +description: GCP Cloud Run job execution template +--- + +# gcp.project.cloudRunService.job.executionTemplate + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run job execution template + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| id | string | Internal ID | +| labels | map[string]string | User-defined labels | +| annotations | map[string]string | Unstructured key-value map that may be set by external tools to store an arbitrary metadata | +| parallelism | int | Specifies the maximum desired number of tasks the execution should run at a given time | +| taskCount | int | Specifies the desired number of tasks the execution should run | +| template | [gcp.project.cloudRunService.job.executionTemplate.taskTemplate](gcp.project.cloudrunservice.job.executiontemplate.tasktemplate.md) | Describes the task that will be create when executing an execution | + +**References** + +- [Create jobs](https://cloud.google.com/run/docs/create-jobs) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.executiontemplate.tasktemplate.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.executiontemplate.tasktemplate.md new file mode 100644 index 000000000..9dde76d3b --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.executiontemplate.tasktemplate.md @@ -0,0 +1,37 @@ +--- +title: gcp.project.cloudRunService.job.executionTemplate.taskTemplate +id: gcp.project.cloudRunService.job.executionTemplate.taskTemplate +sidebar_label: gcp.project.cloudRunService.job.executionTemplate.taskTemplate +displayed_sidebar: MQL +description: GCP Cloud Run job execution template task template +--- + +# gcp.project.cloudRunService.job.executionTemplate.taskTemplate + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run job execution template task template + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| id | string | Internal ID | +| projectId | string | Project ID | +| vpcAccess | dict | VPC access configuration | +| timeout | time | Maximum allowed time for an instance to respond to a request | +| serviceAccountEmail | string | Email address of the IAM service account associated with the revision of the service | +| serviceAccount | [gcp.project.iamService.serviceAccount](gcp.project.iamservice.serviceaccount.md) | IAM service account associated with the revision of the service | +| containers | [][gcp.project.cloudRunService.container](gcp.project.cloudrunservice.container.md) | Containers for this revision | +| volumes | []dict | List of volumes to make available to containers | +| executionEnvironment | string | Sandbox environment to host the revision | +| encryptionKey | string | Reference to a customer-managed encryption key to use to encrypt this container image | +| maxRetries | int | Number of retries allowed per task | + +**References** + +- [Create jobs](https://cloud.google.com/run/docs/create-jobs) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.md new file mode 100644 index 000000000..48c08589d --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.job.md @@ -0,0 +1,48 @@ +--- +title: gcp.project.cloudRunService.job +id: gcp.project.cloudRunService.job +sidebar_label: gcp.project.cloudRunService.job +displayed_sidebar: MQL +description: GCP Cloud Run job +--- + +# gcp.project.cloudRunService.job + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run job + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| id | string | Job identifier | +| projectId | string | Project ID | +| region | string | Region | +| name | string | Job name | +| generation | int | Number that monotonically increases every time the user modifies the desired state | +| labels | map[string]string | User-defined labels | +| annotations | map[string]string | Unstructured key-value map that may be set by external tools to store an arbitrary metadata | +| created | time | Creation timestamp | +| updated | time | Update timestamp | +| deleted | time | Deletion timestamp | +| expired | time | Timestamp after which a deleted service will be permanently deleted | +| creator | string | Email address of the authenticated creator | +| lastModifier | string | Email address of the last authenticated modifier | +| client | string | Arbitrary identifier for the API client | +| clientVersion | string | Arbitrary version identifier for the API client | +| launchStage | string | Launch stage | +| template | [gcp.project.cloudRunService.job.executionTemplate](gcp.project.cloudrunservice.job.executiontemplate.md) | Template used to create executions for this job | +| observedGeneration | int | Generation of this service currently serving traffic | +| terminalCondition | [gcp.project.cloudRunService.condition](gcp.project.cloudrunservice.condition.md) | Conditions of this service, containing its readiness status and detailed error information in case it did not reach a serving state | +| conditions | [][gcp.project.cloudRunService.condition](gcp.project.cloudrunservice.condition.md) | Conditions of all other associated sub-resources | +| executionCount | int | Number of executions created for this job | +| reconciling | bool | Whether the service is currently being acted upon by the system to bring it into the desired state | + +**References** + +- [Cloud Run Jobs](https://cloud.google.com/run/docs/overview/what-is-cloud-run#jobs) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.md new file mode 100644 index 000000000..5c733401e --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.md @@ -0,0 +1,31 @@ +--- +title: gcp.project.cloudRunService +id: gcp.project.cloudRunService +sidebar_label: gcp.project.cloudRunService +displayed_sidebar: MQL +description: GCP Cloud Run resources +--- + +# gcp.project.cloudRunService + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------------------------------------------------------- | ------------------------- | +| projectId | string | Project ID | +| regions | []string | List of available regions | +| operations | [][gcp.project.cloudRunService.operation](gcp.project.cloudrunservice.operation.md) | List of operations | +| services | [][gcp.project.cloudRunService.service](gcp.project.cloudrunservice.service.md) | List of services | +| jobs | [][gcp.project.cloudRunService.job](gcp.project.cloudrunservice.job.md) | List of jobs | + +**References** + +- [What is Cloud Run](https://cloud.google.com/run/docs/overview/what-is-cloud-run) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.operation.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.operation.md new file mode 100644 index 000000000..3088c80fa --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.operation.md @@ -0,0 +1,25 @@ +--- +title: gcp.project.cloudRunService.operation +id: gcp.project.cloudRunService.operation +sidebar_label: gcp.project.cloudRunService.operation +displayed_sidebar: MQL +description: GCP Cloud Run operation +--- + +# gcp.project.cloudRunService.operation + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run operation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ---------------------------------- | +| projectId | string | Project ID | +| name | string | Operation name | +| done | bool | Whether the operation is completed | diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.service.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.service.md new file mode 100644 index 000000000..d16aa918c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.service.md @@ -0,0 +1,52 @@ +--- +title: gcp.project.cloudRunService.service +id: gcp.project.cloudRunService.service +sidebar_label: gcp.project.cloudRunService.service +displayed_sidebar: MQL +description: GCP Cloud Run service +--- + +# gcp.project.cloudRunService.service + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| id | string | Service identifier | +| projectId | string | Project ID | +| region | string | Region | +| name | string | Service name | +| description | string | Service description | +| generation | int | Number that monotonically increases every time the user modifies the desired state | +| labels | map[string]string | User-provided labels | +| annotations | map[string]string | Unstructured key-value map that may be set by external tools to store an arbitrary metadata | +| created | time | Creation timestamp | +| updated | time | Update timestamp | +| deleted | time | Deletion timestamp | +| expired | time | Timestamp after which a deleted service will be permanently deleted | +| creator | string | Email address of the authenticated creator | +| lastModifier | string | Email address of the last authenticated modifier | +| ingress | string | Ingress settings | +| launchStage | string | Launch stage | +| template | [gcp.project.cloudRunService.service.revisionTemplate](gcp.project.cloudrunservice.service.revisiontemplate.md) | Template used to create revisions for the service | +| traffic | []dict | Specifies how to distribute traffic over a collection of revisions belonging to the service | +| observedGeneration | int | Generation of this service currently serving traffic | +| terminalCondition | [gcp.project.cloudRunService.condition](gcp.project.cloudrunservice.condition.md) | Conditions of this service, containing its readiness status and detailed error information in case it did not reach a serving state | +| conditions | [][gcp.project.cloudRunService.condition](gcp.project.cloudrunservice.condition.md) | Conditions of all other associated sub-resources | +| latestReadyRevision | string | Name of the latest revision that is serving traffic | +| latestCreatedRevision | string | Name of the last created revision | +| trafficStatuses | []dict | Detailed status information for corresponding traffic targets | +| uri | string | Main URI in which this service is serving traffic | +| reconciling | bool | Whether the service is currently being acted upon by the system to bring it into the desired state | + +**References** + +- [Cloud Run services](https://cloud.google.com/run/docs/resource-model#services) diff --git a/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.service.revisiontemplate.md b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.service.revisiontemplate.md new file mode 100644 index 000000000..2e60d68e1 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.cloudrunservice.service.revisiontemplate.md @@ -0,0 +1,41 @@ +--- +title: gcp.project.cloudRunService.service.revisionTemplate +id: gcp.project.cloudRunService.service.revisionTemplate +sidebar_label: gcp.project.cloudRunService.service.revisionTemplate +displayed_sidebar: MQL +description: GCP Cloud Run service revision template +--- + +# gcp.project.cloudRunService.service.revisionTemplate + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Run service revision template + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| id | string | Internal ID | +| projectId | string | Project ID | +| name | string | Revision name | +| labels | map[string]string | User-provided labels | +| annotations | map[string]string | Unstructured key-value map that may be set by external tools to store an arbitrary metadata | +| scaling | dict | Scaling settings | +| vpcAccess | dict | VPC access configuration | +| timeout | time | Maximum allowed time for an instance to respond to a request | +| serviceAccountEmail | string | Email address of the IAM service account associated with the revision of the service | +| serviceAccount | [gcp.project.iamService.serviceAccount](gcp.project.iamservice.serviceaccount.md) | IAM service account associated with the revision of the service | +| containers | [][gcp.project.cloudRunService.container](gcp.project.cloudrunservice.container.md) | Containers for this revision | +| volumes | []dict | List of volumes to make available to containers | +| executionEnvironment | string | Sandbox environment to host the revision | +| encryptionKey | string | Reference to a customer-managed encryption key to use to encrypt this container image | +| maxInstanceRequestConcurrency | int | Maximum number of requests that each serving instance can receive | + +**References** + +- [Rollbacks, gradual rollouts, and traffic migration](https://cloud.google.com/run/docs/rollouts-rollbacks-traffic-migration) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.address.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.address.md new file mode 100644 index 000000000..510d52ee4 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.address.md @@ -0,0 +1,44 @@ +--- +title: gcp.project.computeService.address +id: gcp.project.computeService.address +sidebar_label: gcp.project.computeService.address +displayed_sidebar: MQL +description: GCP Compute address +--- + +# gcp.project.computeService.address + +**Supported platform** + +- gcp + +**Description** + +GCP Compute address + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------- | +| id | string | Unique identifier | +| address | string | Static IP address | +| addressType | string | Address type | +| created | time | Creation timestamp | +| description | string | Address description | +| ipVersion | string | IP version | +| ipv6EndpointType | string | Endpoint type | +| name | string | Address name | +| networkUrl | string | URL of the network in which to reserve the address | +| network | [gcp.project.computeService.network](gcp.project.computeservice.network.md) | Network in which to reserve the address | +| networkTier | string | Network tier used for configuring this address | +| prefixLength | int | Prefix length if the resource represents an IP range | +| purpose | string | Address purpose | +| regionUrl | string | Region URL | +| status | string | Address status | +| subnetworkUrl | string | URL of the subnetwork in which to reserve the address | +| subnetwork | [gcp.project.computeService.subnetwork](gcp.project.computeservice.subnetwork.md) | Subnetwork in which to reserve the address | +| resourceUrls | []string | URLs of the resources that are using this address | + +**References** + +- [IP addresses](https://cloud.google.com/compute/docs/ip-addresses) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.attacheddisk.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.attacheddisk.md new file mode 100644 index 000000000..9170e33a5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.attacheddisk.md @@ -0,0 +1,41 @@ +--- +title: gcp.project.computeService.attachedDisk +id: gcp.project.computeService.attachedDisk +sidebar_label: gcp.project.computeService.attachedDisk +displayed_sidebar: MQL +description: GCP Compute attached disk +--- + +# gcp.project.computeService.attachedDisk + +**Supported platform** + +- gcp + +**Description** + +GCP Compute attached disk + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------------------------- | --------------------------------------------------- | +| id | string | Attached Disk ID | +| projectId | string | Project ID | +| architecture | string | Architecture of the attached disk | +| autoDelete | bool | Indicates if disk will be auto-deleted | +| boot | bool | Indicates that this is a boot disk | +| deviceName | string | Unique device name | +| diskSizeGb | int | Size of the disk in GB | +| forceAttach | bool | Indicates whether to force attach the regional disk | +| guestOsFeatures | []string | Features to enable on the guest operating | +| index | int | Index to this disk | +| interface | string | Disk interface | +| licenses | []string | Publicly visible licenses | +| mode | string | Mode in which to the disk is attached | +| source | [gcp.project.computeService.disk](gcp.project.computeservice.disk.md) | Attached Persistent Disk resource | +| type | string | Disk Type | + +**References** + +- [About Persistent Disk](https://cloud.google.com/compute/docs/disks/persistent-disks) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.backend.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.backend.md new file mode 100644 index 000000000..e333a3e8b --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.backend.md @@ -0,0 +1,39 @@ +--- +title: gcp.project.computeService.backendService.backend +id: gcp.project.computeService.backendService.backend +sidebar_label: gcp.project.computeService.backendService.backend +displayed_sidebar: MQL +description: GCP Compute backend service backend +--- + +# gcp.project.computeService.backendService.backend + +**Supported platform** + +- gcp + +**Description** + +GCP Compute backend service backend + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------ | +| id | string | Internal ID | +| balancingMode | string | How to determine whether the backend of a load balancer can handle additional traffic or is fully loaded | +| capacityScaler | float | Multiplier applied to the backend's target capacity of its balancing mode | +| description | string | Backend description | +| failover | bool | Whether this is a failover backend | +| groupUrl | string | Fully-qualified URL of an instance group or network endpoint group determining what types of backends a load balancer supports | +| maxConnections | int | Maximum number of simultaneous connections | +| maxConnectionsPerEndpoint | int | Maximum number of simultaneous connections per endpoint | +| maxConnectionsPerInstance | int | Maximum number of simultaneous connections per instance | +| maxRate | int | Maximum number of HTTP requests per second | +| maxRatePerEndpoint | float | Maximum number for requests per second per endpoint | +| maxRatePerInstance | float | Maximum number for requests per second per instance | +| maxUtilization | float | Target capacity for the utilization balancing mode | + +**References** + +- [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.cdnpolicy.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.cdnpolicy.md new file mode 100644 index 000000000..ec261a918 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.cdnpolicy.md @@ -0,0 +1,39 @@ +--- +title: gcp.project.computeService.backendService.cdnPolicy +id: gcp.project.computeService.backendService.cdnPolicy +sidebar_label: gcp.project.computeService.backendService.cdnPolicy +displayed_sidebar: MQL +description: GCP Compute backend service CDN policy +--- + +# gcp.project.computeService.backendService.cdnPolicy + +**Supported platform** + +- gcp + +**Description** + +GCP Compute backend service CDN policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| id | string | Internal ID | +| bypassCacheOnRequestHeaders | []dict | Bypass the cache when the specified request headers are matched | +| cacheKeyPolicy | dict | Cache key policy | +| cacheMode | string | Cache mode for all responses from this backend | +| clientTtl | int | Client maximum TTL | +| defaultTtl | int | Default TTL for cached content | +| maxTtl | int | Maximum allowed TTL for cached content | +| negativeCaching | bool | Whether negative caching allows per-status code TTLs to be set in order to apply fine-grained caching for common errors or redirects | +| negativeCachingPolicy | []dict | Negative caching policy | +| requestCoalescing | bool | Whether Cloud CDN combines multiple concurrent cache fill requests into a small number of requests to the origin | +| serveWhileStale | int | Serve existing content from the cache when revalidating content with the origin | +| signedUrlCacheMaxAgeSec | int | Maximum number of seconds the response to a signed URL request is considered fresh | +| signedUrlKeyNames | []string | Names of the keys for signing request URLs | + +**References** + +- [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.md new file mode 100644 index 000000000..3ea7a1bdf --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.backendservice.md @@ -0,0 +1,59 @@ +--- +title: gcp.project.computeService.backendService +id: gcp.project.computeService.backendService +sidebar_label: gcp.project.computeService.backendService +displayed_sidebar: MQL +description: GCP Compute backend service +--- + +# gcp.project.computeService.backendService + +**Supported platform** + +- gcp + +**Description** + +GCP Compute backend service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| id | string | Unique identifier | +| affinityCookieTtlSec | int | Lifetime of cookies in seconds | +| backends | [][gcp.project.computeService.backendService.backend](gcp.project.computeservice.backendservice.backend.md) | List of backends that serve this backend service | +| cdnPolicy | [gcp.project.computeService.backendService.cdnPolicy](gcp.project.computeservice.backendservice.cdnpolicy.md) | Cloud CDN configuration | +| circuitBreakers | dict | Circuit breakers | +| compressionMode | string | Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header | +| connectionDraining | dict | Connection draining configuration | +| connectionTrackingPolicy | dict | Connection tracking configuration | +| consistentHash | dict | Consistent hash-based load balancing used to provide soft session affinity based on HTTP headers, cookies or other properties | +| created | time | Creation timestamp | +| customRequestHeaders | []string | Headers that the load balancer adds to proxied requests | +| customResponseHeaders | []string | Headers that the load balancer adds to proxied responses | +| description | string | Backend service description | +| edgeSecurityPolicy | string | Resource URL for the edge security policy associated with this backend service | +| enableCDN | bool | Whether to enable Cloud CDN | +| failoverPolicy | dict | Failover policy | +| healthChecks | []string | List of URLs to the health checks | +| iap | dict | Identity-aware proxy configuration | +| loadBalancingScheme | string | Load balancer type | +| localityLbPolicies | []dict | List of locality load balancing policies to be used in order of preference | +| localityLbPolicy | string | Load balancing algorithm used within the scope of the locality | +| logConfig | dict | Log configuration | +| maxStreamDuration | time | Default maximum duration (timeout) for streams to this service | +| name | string | Backend service name | +| networkUrl | string | URL to the network to which this backend service belongs | +| portName | string | Named port on a backend instance group representing the port for communication to the backend VMs in that group | +| protocol | string | Protocol used for communication | +| regionUrl | string | Region URL | +| securityPolicyUrl | string | Security policy URL | +| securitySettings | dict | Security settings | +| serviceBindingUrls | []string | Service binding URLs | +| sessionAffinity | string | Session affinity type | +| timeoutSec | int | Backend service timeout in settings | + +**References** + +- [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.disk.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.disk.md new file mode 100644 index 000000000..a3ed59631 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.disk.md @@ -0,0 +1,43 @@ +--- +title: gcp.project.computeService.disk +id: gcp.project.computeService.disk +sidebar_label: gcp.project.computeService.disk +displayed_sidebar: MQL +description: GCP Compute persistent disk +--- + +# gcp.project.computeService.disk + +**Supported platform** + +- gcp + +**Description** + +GCP Compute persistent disk + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | --------------------------------------------------------------------- | ------------------------------------------ | +| id | string | Unique identifier for the resource | +| name | string | User-friendly name for this disk | +| architecture | string | The architecture of the disk | +| description | string | Optional description | +| guestOsFeatures | []string | Features to enable on the guest operating | +| labels | map[string]string | Labels to apply to this disk | +| lastAttachTimestamp | time | Last attach timestamp | +| lastDetachTimestamp | time | Last detach timestamp | +| licenses | []string | Publicly visible licenses | +| locationHint | string | An opaque location hint | +| physicalBlockSizeBytes | int | Physical block size of the persistent disk | +| provisionedIops | int | How many IOPS to provision for the disk | +| sizeGb | int | Size, in GB, of the persistent disk | +| status | string | The status of disk creation | +| zone | [gcp.project.computeService.zone](gcp.project.computeservice.zone.md) | Disk zone | +| created | time | Creation timestamp | +| diskEncryptionKey | dict | Disk encryption key | + +**References** + +- [Storage options](https://cloud.google.com/compute/docs/disks) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.firewall.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.firewall.md new file mode 100644 index 000000000..29ff6d32c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.firewall.md @@ -0,0 +1,41 @@ +--- +title: gcp.project.computeService.firewall +id: gcp.project.computeService.firewall +sidebar_label: gcp.project.computeService.firewall +displayed_sidebar: MQL +description: GCP Compute firewall +--- + +# gcp.project.computeService.firewall + +**Supported platform** + +- gcp + +**Description** + +GCP Compute firewall + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ---------------- | ----------------------------------------------------------------------- | +| id | string | Unique identifier | +| projectId | string | Project ID | +| name | string | User-provided name | +| description | string | An optional description of this resource | +| priority | int | Priority for this rule | +| direction | string | Direction of traffic | +| disabled | bool | Whether the firewall rule is disabled | +| sourceRanges | []string | Source ranges | +| sourceServiceAccounts | []string | Source service accounts | +| sourceTags | []string | Source tags | +| destinationRanges | []string | Range of destination IP addresses for which the rule applies to traffic | +| targetServiceAccounts | []string | List of service accounts | +| created | time | Creation timestamp | +| allowed | []dict | List of ALLOW rules specified by this firewall | +| denied | []dict | List of DENY rules specified by this firewall | + +**References** + +- [VPC firewall rules](https://cloud.google.com/firewall/docs/firewalls) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.forwardingrule.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.forwardingrule.md new file mode 100644 index 000000000..f5d24b717 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.forwardingrule.md @@ -0,0 +1,53 @@ +--- +title: gcp.project.computeService.forwardingRule +id: gcp.project.computeService.forwardingRule +sidebar_label: gcp.project.computeService.forwardingRule +displayed_sidebar: MQL +description: GCP Compute forwarding rules +--- + +# gcp.project.computeService.forwardingRule + +**Supported platform** + +- gcp + +**Description** + +GCP Compute forwarding rules + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| id | string | Unique identifier | +| ipAddress | string | IP address for which this forwarding rule accepts traffic | +| ipProtocol | string | IP protocol to which this rule applies | +| allPorts | bool | Whether to use all ports for forwarding traffic | +| allowGlobalAccess | bool | Whether to allow access to the load balancer from all regions | +| backendService | string | Backend service to which the forwarding rule sends traffic | +| created | time | Creation timestamp | +| description | string | Optional resource description | +| ipVersion | string | IP version that this forwarding rule uses | +| isMirroringCollector | bool | Whether this load balancer can be used as a collector for packet mirroring | +| labels | map[string]string | User-defined labels | +| loadBalancingScheme | string | Forwarding rule type | +| metadataFilters | []dict | Opaque filter criteria used by the load balancer to restrict routing configuration to a limited set of xDS-compliant clients | +| name | string | Forwarding rule name | +| networkUrl | string | URL of the network used for internal load balancing | +| network | [gcp.project.computeService.network](gcp.project.computeservice.network.md) | Network used for internal load balancing | +| networkTier | string | Network tier used for configuring this load balancer | +| noAutomateDnsZone | bool | Whether the forwarding rule should try to auto-generate a DNS zone | +| portRange | string | Port range to forward | +| ports | []string | Ports to forward | +| regionUrl | string | Region URL | +| serviceDirectoryRegistrations | []dict | Service Directory resources with which to register this forwarding rule | +| serviceLabel | string | Optional prefix to the service name for this forwarding rule | +| serviceName | string | Internal fully qualified service name for this forwarding rule | +| subnetworkUrl | string | URL of the subnetwork to which the load balanced IP belongs | +| subnetwork | [gcp.project.computeService.subnetwork](gcp.project.computeservice.subnetwork.md) | Subnetwork to which the load balanced IP belongs | +| targetUrl | string | URL of the target resource to receive the matched traffic | + +**References** + +- [Forwarding rules overview](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.image.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.image.md new file mode 100644 index 000000000..6dcb7977c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.image.md @@ -0,0 +1,38 @@ +--- +title: gcp.project.computeService.image +id: gcp.project.computeService.image +sidebar_label: gcp.project.computeService.image +displayed_sidebar: MQL +description: GCP Compute +--- + +# gcp.project.computeService.image + +**Supported platform** + +- gcp + +**Description** + +GCP Compute + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------- | -------------------------------------------------------------------------- | +| id | string | Unique identifier | +| projectId | string | Project ID | +| name | string | Name of the resource | +| description | string | Optional description | +| architecture | string | Architecture of the snapshot | +| archiveSizeBytes | int | Size of the image tar.gz archive stored in Google Cloud Storage (in bytes) | +| diskSizeGb | int | Size of the image when restored onto a persistent disk (in GB) | +| family | string | The name of the image family to which this image belongs | +| licenses | []string | Public visible licenses | +| labels | map[string]string | Snapshot Labels | +| created | time | Creation timestamp | +| status | string | The status of the image | + +**References** + +- [OS images](https://cloud.google.com/compute/docs/images) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.instance.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.instance.md new file mode 100644 index 000000000..0a5f2ab2d --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.instance.md @@ -0,0 +1,65 @@ +--- +title: gcp.project.computeService.instance +id: gcp.project.computeService.instance +sidebar_label: gcp.project.computeService.instance +displayed_sidebar: MQL +description: GCP Compute instances +--- + +# gcp.project.computeService.instance + +**Supported platform** + +- gcp + +**Description** + +GCP Compute instances + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| id | string | Unique identifier for the instance | +| projectId | string | Project ID | +| name | string | User-friendly name for this instance | +| description | string | User-friendly name for this instance | +| confidentialInstanceConfig | dict | Confidential instance configuration | +| canIpForward | bool | Whether the instance is allowed to send and receive packets with non-matching destination or source IPs | +| cpuPlatform | string | CPU platform used by this instance | +| created | time | Creation timestamp | +| deletionProtection | bool | Whether the instance is protected against deletion | +| enableDisplay | bool | Whether the instance has display enabled | +| guestAccelerators | []dict | Attached list of accelerator cards | +| fingerprint | string | Instance fingerprint | +| hostname | string | Hostname of the instance | +| keyRevocationActionType | string | KeyRevocationActionType of the instance | +| labels | map[string]string | User-provided labels | +| lastStartTimestamp | time | Last start timestamp | +| lastStopTimestamp | time | Last stop timestamp | +| lastSuspendedTimestamp | time | Last suspended timestamp | +| metadata | map[string]string | Instance metadata | +| minCpuPlatform | string | Minimum CPU platform for the VM instance | +| networkInterfaces | []dict | Network configurations for the instance | +| privateIpv6GoogleAccess | string | private IPv6 google access type for the VM | +| reservationAffinity | dict | Reservations from which this instance can consume | +| resourcePolicies | []string | Resource policies applied to this instance | +| physicalHostResourceStatus | string | Resource status for physical host | +| scheduling | dict | Scheduling options | +| enableIntegrityMonitoring | bool | Whether Shielded Instance integrity monitoring is enabled | +| enableSecureBoot | bool | Whether Shielded Instance secure boot is enabled | +| enableVtpm | bool | Whether Shielded Instance vTPM is enabled | +| startRestricted | bool | Whether VM has been restricted from starting because Compute Engine has detected suspicious activity | +| status | string | Instance status | +| statusMessage | string | Human-readable explanation of the status | +| sourceMachineImage | string | Source machine image | +| tags | []string | Tags associated with this instance | +| totalEgressBandwidthTier | string | Network performance configuration | +| serviceAccounts | [][gcp.project.computeService.serviceaccount](gcp.project.computeservice.serviceaccount.md) | Service accounts authorized for this instance | +| disks | [][gcp.project.computeService.attachedDisk](gcp.project.computeservice.attacheddisk.md) | Disks associated with the instance | +| machineType | [gcp.project.computeService.machineType](gcp.project.computeservice.machinetype.md) | Machine type | +| zone | [gcp.project.computeService.zone](gcp.project.computeservice.zone.md) | Instance zone | + +**References** + +- [Virtual machine instances](https://cloud.google.com/compute/docs/instances) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.machinetype.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.machinetype.md new file mode 100644 index 000000000..84bf18d2e --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.machinetype.md @@ -0,0 +1,37 @@ +--- +title: gcp.project.computeService.machineType +id: gcp.project.computeService.machineType +sidebar_label: gcp.project.computeService.machineType +displayed_sidebar: MQL +description: GCP machine type +--- + +# gcp.project.computeService.machineType + +**Supported platform** + +- gcp + +**Description** + +GCP machine type + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------- | +| id | string | Unique identifier | +| projectId | string | Project ID | +| name | string | Name of the resource | +| description | string | Resource Description | +| guestCpus | int | Number of virtual CPUs that are available to the instance | +| isSharedCpu | bool | Whether the machine has a shared CPU | +| maximumPersistentDisks | int | Maximum persistent disks allowed | +| maximumPersistentDisksSizeGb | int | Maximum total persistent disks size (GB) allowed | +| memoryMb | int | Physical memory available to the instance (MB) | +| created | time | Creation timestamp | +| zone | [gcp.project.computeService.zone](gcp.project.computeservice.zone.md) | The zone where the machine type resides | + +**References** + +- [Machine families resource and comparison guide](https://cloud.google.com/compute/docs/machine-resource) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.md new file mode 100644 index 000000000..0f6fcdaf2 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.md @@ -0,0 +1,41 @@ +--- +title: gcp.project.computeService +id: gcp.project.computeService +sidebar_label: gcp.project.computeService +displayed_sidebar: MQL +description: GCP Compute Engine +--- + +# gcp.project.computeService + +**Supported platform** + +- gcp + +**Description** + +GCP Compute Engine + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| projectId | string | Project ID | +| instances | [][gcp.project.computeService.instance](gcp.project.computeservice.instance.md) | Google Compute Engine instances in a project | +| snapshots | [][gcp.project.computeService.snapshot](gcp.project.computeservice.snapshot.md) | Google Compute Engine snapshots in a project | +| disks | [][gcp.project.computeService.disk](gcp.project.computeservice.disk.md) | Google Compute Engine disks in a project | +| images | [][gcp.project.computeService.image](gcp.project.computeservice.image.md) | Google Compute Engine images in a project | +| firewalls | [][gcp.project.computeService.firewall](gcp.project.computeservice.firewall.md) | Google Compute Engine firewalls in a project | +| networks | [][gcp.project.computeService.network](gcp.project.computeservice.network.md) | Google Compute Engine VPC network in a project | +| subnetworks | [][gcp.project.computeService.subnetwork](gcp.project.computeservice.subnetwork.md) | Logical partition of a VPC network | +| routers | [][gcp.project.computeService.router](gcp.project.computeservice.router.md) | Cloud Routers in a project | +| machineTypes | [][gcp.project.computeService.machineType](gcp.project.computeservice.machinetype.md) | Google Compute Engine machine types in a project | +| regions | [][gcp.project.computeService.region](gcp.project.computeservice.region.md) | Project regions | +| zones | [][gcp.project.computeService.zone](gcp.project.computeservice.zone.md) | Project zones | +| backendServices | [][gcp.project.computeService.backendService](gcp.project.computeservice.backendservice.md) | List of backend services | +| addresses | [][gcp.project.computeService.address](gcp.project.computeservice.address.md) | List of IP addresses | +| forwardingRules | [][gcp.project.computeService.forwardingRule](gcp.project.computeservice.forwardingrule.md) | List of forwarding rules | + +**References** + +- [Compute Engine documentation](https://cloud.google.com/compute/docs) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.network.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.network.md new file mode 100644 index 000000000..17487e66f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.network.md @@ -0,0 +1,41 @@ +--- +title: gcp.project.computeService.network +id: gcp.project.computeService.network +sidebar_label: gcp.project.computeService.network +displayed_sidebar: MQL +description: GCP Compute VPC network resource +--- + +# gcp.project.computeService.network + +**Supported platform** + +- gcp + +**Description** + +GCP Compute VPC network resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------- | +| id | string | Unique identifier | +| projectId | string | Project ID | +| name | string | Name of the resource | +| description | string | An optional description of this resource | +| autoCreateSubnetworks | bool | If not set, indicates a legacy network | +| enableUlaInternalIpv6 | bool | Indicates if ULA internal IPv6 is enabled on this network | +| gatewayIPv4 | string | Gateway address for default routing | +| mtu | int | Maximum transmission unit size in bytes | +| networkFirewallPolicyEnforcementOrder | string | Network firewall policy enforcement order | +| created | time | Creation timestamp | +| peerings | []dict | Network peerings for the resource | +| routingMode | string | The network-wide routing mode to use | +| mode | string | Network mode: legacy, custom or auto | +| subnetworkUrls | []string | List of URLs for the subnetwork in the network | +| subnetworks | [][gcp.project.computeService.subnetwork](gcp.project.computeservice.subnetwork.md) | Subnetworks in the network | + +**References** + +- [Create and manage VPC networks](https://cloud.google.com/vpc/docs/create-modify-vpc-networks) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.region.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.region.md new file mode 100644 index 000000000..f6d1e8f34 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.region.md @@ -0,0 +1,33 @@ +--- +title: gcp.project.computeService.region +id: gcp.project.computeService.region +sidebar_label: gcp.project.computeService.region +displayed_sidebar: MQL +description: GCP Compute region +--- + +# gcp.project.computeService.region + +**Supported platform** + +- gcp + +**Description** + +GCP Compute region + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ---------------- | ------------------------------ | +| id | string | Unique identifier | +| name | string | Name of the resource | +| description | string | Resource description | +| status | string | Status of the region | +| created | time | Creation timestamp | +| quotas | map[string]float | Quotas assigned to this region | +| deprecated | dict | Deprecation status | + +**References** + +- [Regions and zones](https://cloud.google.com/compute/docs/regions-zones) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.router.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.router.md new file mode 100644 index 000000000..19829b729 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.router.md @@ -0,0 +1,34 @@ +--- +title: gcp.project.computeService.router +id: gcp.project.computeService.router +sidebar_label: gcp.project.computeService.router +displayed_sidebar: MQL +description: GCP Compute cloud router +--- + +# gcp.project.computeService.router + +**Supported platform** + +- gcp + +**Description** + +GCP Compute cloud router + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | -------------- | --------------------------------------------------------------------- | +| id | string | Unique identifier | +| name | string | Name of the resource | +| description | string | An optional description of this resource | +| bgp | dict | BGP information | +| bgpPeers | []dict | BGP routing stack configuration to establish BGP peering | +| encryptedInterconnectRouter | bool | Whether a router is dedicated for use with encrypted VLAN attachments | +| nats | []dict | NAT services created in this router | +| created | time | Creation timestamp | + +**References** + +- [Cloud Router overview](https://cloud.google.com/network-connectivity/docs/router/concepts/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.serviceaccount.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.serviceaccount.md new file mode 100644 index 000000000..03e0540e7 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.serviceaccount.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.computeService.serviceaccount +id: gcp.project.computeService.serviceaccount +sidebar_label: gcp.project.computeService.serviceaccount +displayed_sidebar: MQL +description: GCP Compute service account +--- + +# gcp.project.computeService.serviceaccount + +**Supported platform** + +- gcp + +**Description** + +GCP Compute service account + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ---------------- | ----------------------------- | +| email | string | Service account email address | +| scopes | []string | Service account scopes | + +**References** + +- [Service accounts](https://cloud.google.com/compute/docs/access/service-accounts) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.snapshot.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.snapshot.md new file mode 100644 index 000000000..aece4aa1f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.snapshot.md @@ -0,0 +1,42 @@ +--- +title: gcp.project.computeService.snapshot +id: gcp.project.computeService.snapshot +sidebar_label: gcp.project.computeService.snapshot +displayed_sidebar: MQL +description: GCP Compute persistent disk snapshot +--- + +# gcp.project.computeService.snapshot + +**Supported platform** + +- gcp + +**Description** + +GCP Compute persistent disk snapshot + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------- | --------------------------------------------------------------------------------- | +| id | string | Unique identifier | +| name | string | Name of the resource | +| description | string | Optional description | +| architecture | string | Architecture of the snapshot | +| autoCreated | bool | Indicates if snapshot was automatically created | +| chainName | string | Snapshot chain | +| creationSizeBytes | int | Size in bytes of the snapshot at creation time | +| diskSizeGb | int | Size of the source disk, specified in GB | +| downloadBytes | int | Number of bytes downloaded to restore a snapshot to a disk | +| storageBytes | int | Size of the storage used by the snapshot | +| storageBytesStatus | string | An indicator whether storageBytes is in a stable state or in storage reallocation | +| snapshotType | string | Indicates the type of the snapshot | +| licenses | []string | Public visible licenses | +| labels | map[string]string | Snapshot Labels | +| created | time | Creation timestamp | +| status | string | The status of the snapshot | + +**References** + +- [About archive and standard disk snapshots](https://cloud.google.com/compute/docs/disks/snapshots) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.subnetwork.logconfig.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.subnetwork.logconfig.md new file mode 100644 index 000000000..7d08a0e45 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.subnetwork.logconfig.md @@ -0,0 +1,33 @@ +--- +title: gcp.project.computeService.subnetwork.logConfig +id: gcp.project.computeService.subnetwork.logConfig +sidebar_label: gcp.project.computeService.subnetwork.logConfig +displayed_sidebar: MQL +description: GCP Compute VPC network partitioning log configuration +--- + +# gcp.project.computeService.subnetwork.logConfig + +**Supported platform** + +- gcp + +**Description** + +GCP Compute VPC network partitioning log configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| id | string | Internal ID | +| aggregationInterval | string | Toggles the aggregation interval for collecting flow logs | +| enable | bool | Whether to enable flow logging for this subnetwork | +| filterExpression | string | Which VPC flow logs are exported to Cloud Logging | +| flowSampling | float | Sampling rate of VPC flow logs within the subnetwork (1.0 means all collected logs are reported and 0.0 means no logs are reported.) | +| metadata | string | Whether all, none, or a subset of metadata are added to the reported VPC flow logs | +| metadataFields | []string | Metadata fields to be added to the reported VPC flow logs | + +**References** + +- [Create and manage VPC networks](https://cloud.google.com/vpc/docs/create-modify-vpc-networks) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.subnetwork.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.subnetwork.md new file mode 100644 index 000000000..73c75908d --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.subnetwork.md @@ -0,0 +1,48 @@ +--- +title: gcp.project.computeService.subnetwork +id: gcp.project.computeService.subnetwork +sidebar_label: gcp.project.computeService.subnetwork +displayed_sidebar: MQL +description: GCP Compute VPC network partitioning +--- + +# gcp.project.computeService.subnetwork + +**Supported platform** + +- gcp + +**Description** + +GCP Compute VPC network partitioning + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| id | string | Unique identifier | +| projectId | string | Project ID | +| name | string | Name of the resource | +| description | string | An optional description of this resource | +| enableFlowLogs | bool | Whether flow logging is enabled for the subnetwork | +| externalIpv6Prefix | string | External IPv6 address range | +| fingerprint | string | Fingerprint of this resource | +| gatewayAddress | string | Gateway address for default routes | +| internalIpv6Prefix | string | Internal IPv6 address range | +| ipCidrRange | string | Range of internal addresses | +| ipv6AccessType | string | Access type of IPv6 address | +| ipv6CidrRange | string | Range of internal IPv6 addresses | +| logConfig | [gcp.project.computeService.subnetwork.logConfig](gcp.project.computeservice.subnetwork.logconfig.md) | VPC flow logging configuration | +| privateIpGoogleAccess | bool | Whether VMs in this subnet can access Google services without assigned external IP addresses | +| privateIpv6GoogleAccess | string | VMs in this subnet that can access Google services without assigned external IPv6 addresses | +| purpose | string | Purpose of the resource | +| region | [gcp.project.computeService.region](gcp.project.computeservice.region.md) | Region | +| regionUrl | string | Region URL | +| role | string | Role of subnetwork | +| stackType | string | Stack type for the subnet | +| state | string | State of the subnetwork | +| created | time | Creation timestamp | + +**References** + +- [Create and manage VPC networks](https://cloud.google.com/vpc/docs/create-modify-vpc-networks) diff --git a/docs/mql/resources/gcp-pack/gcp.project.computeservice.zone.md b/docs/mql/resources/gcp-pack/gcp.project.computeservice.zone.md new file mode 100644 index 000000000..81a36c634 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.computeservice.zone.md @@ -0,0 +1,31 @@ +--- +title: gcp.project.computeService.zone +id: gcp.project.computeService.zone +sidebar_label: gcp.project.computeService.zone +displayed_sidebar: MQL +description: GCP Compute zone +--- + +# gcp.project.computeService.zone + +**Supported platform** + +- gcp + +**Description** + +GCP Compute zone + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | -------------------- | +| id | string | Unique identifier | +| name | string | Name of the resource | +| description | string | Resource description | +| status | string | Status of the zone | +| created | time | Creation timestamp | + +**References** + +- [Regions and zones](https://cloud.google.com/compute/docs/regions-zones) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.md new file mode 100644 index 000000000..4abf90bc7 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.md @@ -0,0 +1,42 @@ +--- +title: gcp.project.dataprocService.cluster.config.gceCluster +id: gcp.project.dataprocService.cluster.config.gceCluster +sidebar_label: gcp.project.dataprocService.cluster.config.gceCluster +displayed_sidebar: MQL +description: GCP Dataproc cluster endpoint config +--- + +# gcp.project.dataprocService.cluster.config.gceCluster + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster endpoint config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| id | string | Internal ID | +| projectId | string | Project ID | +| confidentialInstance | dict | Confidential instance configuration | +| internalIpOnly | bool | Whether the cluster has only internal IP addresses | +| metadata | map[string]string | Compute Engine metadata entries | +| networkUri | string | Compute Engine network to be used for machine communications | +| nodeGroupAffinity | dict | Node group affinity for sole-tenant clusters | +| privateIpv6GoogleAccess | string | Type of IPv6 access for the cluster | +| reservationAffinity | [gcp.project.dataprocService.cluster.config.gceCluster.reservationAffinity](gcp.project.dataprocservice.cluster.config.gcecluster.reservationaffinity.md) | Reservation affinity for consuming zonal reservations | +| serviceAccountEmail | string | Email of the service account used by the Dataproc cluster VM instances | +| serviceAccount | [gcp.project.iamService.serviceAccount](gcp.project.iamservice.serviceaccount.md) | Service account used by the Dataproc cluster VM instances | +| serviceAccountScopes | []string | URIs of service account scopes to be included in Compute Engine instances | +| shieldedInstanceConfig | [gcp.project.dataprocService.cluster.config.gceCluster.shieldedInstanceConfig](gcp.project.dataprocservice.cluster.config.gcecluster.shieldedinstanceconfig.md) | Shielded instance config for clusters using Compute Engine Shielded VMs | +| subnetworkUri | string | Compute Engine subnetwork to use for machine communications | +| tags | []string | Compute Engine tags | +| zoneUri | string | Zone where the Compute Engine cluster is located | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.reservationaffinity.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.reservationaffinity.md new file mode 100644 index 000000000..f96bfdb1c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.reservationaffinity.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.dataprocService.cluster.config.gceCluster.reservationAffinity +id: gcp.project.dataprocService.cluster.config.gceCluster.reservationAffinity +sidebar_label: gcp.project.dataprocService.cluster.config.gceCluster.reservationAffinity +displayed_sidebar: MQL +description: GCP Dataproc cluster GCE cluster reservation affinity config +--- + +# gcp.project.dataprocService.cluster.config.gceCluster.reservationAffinity + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster GCE cluster reservation affinity config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ---------------- | ----------------------------------------------------------- | +| id | string | Internal ID | +| consumeReservationType | string | Type of reservation to consume | +| key | string | Corresponds to the label key of the reservation resource | +| values | []string | Corresponds to the label values of the reservation resource | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.shieldedinstanceconfig.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.shieldedinstanceconfig.md new file mode 100644 index 000000000..3f2d394cd --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gcecluster.shieldedinstanceconfig.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.dataprocService.cluster.config.gceCluster.shieldedInstanceConfig +id: gcp.project.dataprocService.cluster.config.gceCluster.shieldedInstanceConfig +sidebar_label: gcp.project.dataprocService.cluster.config.gceCluster.shieldedInstanceConfig +displayed_sidebar: MQL +description: GCP Dataproc cluster GCE cluster shielded instance config +--- + +# gcp.project.dataprocService.cluster.config.gceCluster.shieldedInstanceConfig + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster GCE cluster shielded instance config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ------ | ------------------------------------------------------- | +| id | string | Internal ID | +| enableIntegrityMonitoring | bool | Whether the instances have integrity monitoring enabled | +| enableSecureBoot | bool | Whether the instances have Secure Boot enabled | +| enableVtpm | bool | Whether the instances have the vTPM enabled | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gkecluster.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gkecluster.md new file mode 100644 index 000000000..e29885d20 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.gkecluster.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.dataprocService.cluster.config.gkeCluster +id: gcp.project.dataprocService.cluster.config.gkeCluster +sidebar_label: gcp.project.dataprocService.cluster.config.gkeCluster +displayed_sidebar: MQL +description: GCP Dataproc cluster GKE cluster config +--- + +# gcp.project.dataprocService.cluster.config.gkeCluster + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster GKE cluster config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | -------------- | -------------------------------------------- | +| id | string | Internal ID | +| gkeClusterTarget | string | Target GKE cluster | +| nodePoolTarget | []dict | GKE node pools where workloads are scheduled | + +**References** + +- [GKE cluster architecture](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.instance.diskconfig.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.instance.diskconfig.md new file mode 100644 index 000000000..3689d3db8 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.instance.diskconfig.md @@ -0,0 +1,27 @@ +--- +title: gcp.project.dataprocService.cluster.config.instance.diskConfig +id: gcp.project.dataprocService.cluster.config.instance.diskConfig +sidebar_label: gcp.project.dataprocService.cluster.config.instance.diskConfig +displayed_sidebar: MQL +description: GCP Dataproc cluster instance disk config +--- + +# gcp.project.dataprocService.cluster.config.instance.diskConfig + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster instance disk config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------ | ---------------------------- | +| id | string | Internal ID | +| bootDiskSizeGb | int | Size in GB of the boot disk | +| bootDiskType | string | Type of the boot disk | +| localSsdInterface | string | Interface type of local SSDs | +| numLocalSsds | int | Number of attached SSDs | diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.instance.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.instance.md new file mode 100644 index 000000000..dcdc76dd5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.instance.md @@ -0,0 +1,38 @@ +--- +title: gcp.project.dataprocService.cluster.config.instance +id: gcp.project.dataprocService.cluster.config.instance +sidebar_label: gcp.project.dataprocService.cluster.config.instance +displayed_sidebar: MQL +description: GCP Dataproc cluster instance config +--- + +# gcp.project.dataprocService.cluster.config.instance + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster instance config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | +| id | string | Internal ID | +| accelerators | []dict | Compute Engine accelerators | +| diskConfig | [gcp.project.dataprocService.cluster.config.instance.diskConfig](gcp.project.dataprocservice.cluster.config.instance.diskconfig.md) | Disk options | +| imageUri | string | Compute Engine imager resource used for cluster instances | +| instanceNames | []string | List of instance names | +| instanceReferences | []dict | List of references to Compute Engine instances | +| isPreemptible | bool | Whether the instance group contains preemptible instances | +| machineTypeUri | string | Compute Engine machine type used for cluster instances | +| managedGroupConfig | dict | Config for Compute Engine Instance Group Manager that manages this group | +| minCpuPlatform | string | Minimum CPU platform for the instance group | +| numInstances | int | Number of VM instances in the instance group | +| preemptibility | string | The preemptibility of the instance group | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.lifecycle.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.lifecycle.md new file mode 100644 index 000000000..d77d0b959 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.lifecycle.md @@ -0,0 +1,31 @@ +--- +title: gcp.project.dataprocService.cluster.config.lifecycle +id: gcp.project.dataprocService.cluster.config.lifecycle +sidebar_label: gcp.project.dataprocService.cluster.config.lifecycle +displayed_sidebar: MQL +description: GCP Dataproc cluster lifecycle config +--- + +# gcp.project.dataprocService.cluster.config.lifecycle + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster lifecycle config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | ----------------------------------------------- | +| id | string | Internal ID | +| autoDeleteTime | string | Time when the cluster will be auto-deleted | +| autoDeleteTtl | string | Lifetime duration of the cluster | +| idleDeleteTtl | string | Duration to keep the cluster alive while idling | +| idleStartTime | string | Time when the cluster will be auto-resumed | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.md new file mode 100644 index 000000000..f6e47acb5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.config.md @@ -0,0 +1,43 @@ +--- +title: gcp.project.dataprocService.cluster.config +id: gcp.project.dataprocService.cluster.config +sidebar_label: gcp.project.dataprocService.cluster.config +displayed_sidebar: MQL +description: GCP Dataproc cluster config +--- + +# gcp.project.dataprocService.cluster.config + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | +| parentResourcePath | string | Parent resource path | +| autoscaling | dict | Autoscaling configuration for the policy associated with the cluster | +| configBucket | string | Cloud Storage bucket used to stage job dependencies, config files, and job driver console output | +| metrics | dict | Dataproc metrics configuration | +| encryption | dict | Encryption configuration | +| endpoint | dict | Port/endpoint configuration | +| gceCluster | [gcp.project.dataprocService.cluster.config.gceCluster](gcp.project.dataprocservice.cluster.config.gcecluster.md) | Shared Compute Engine configuration | +| gkeCluster | [gcp.project.dataprocService.cluster.config.gkeCluster](gcp.project.dataprocservice.cluster.config.gkecluster.md) | Kubernetes Engine config for Dataproc clusters deployed to Kubernetes | +| initializationActions | []dict | Commands to execute on each node after config is completed | +| lifecycle | [gcp.project.dataprocService.cluster.config.lifecycle](gcp.project.dataprocservice.cluster.config.lifecycle.md) | Lifecycle configuration | +| master | [gcp.project.dataprocService.cluster.config.instance](gcp.project.dataprocservice.cluster.config.instance.md) | Compute Engine config for the cluster's master instance | +| metastore | dict | Metastore configuration | +| secondaryWorker | [gcp.project.dataprocService.cluster.config.instance](gcp.project.dataprocservice.cluster.config.instance.md) | Compute Engine configuration for the cluster's secondary worker instances | +| security | dict | Security configuration | +| software | dict | Cluster software configuration | +| tempBucket | string | Cloud Storage bucket used to store ephemeral cluster and jobs data | +| worker | [gcp.project.dataprocService.cluster.config.instance](gcp.project.dataprocservice.cluster.config.instance.md) | Compute Engine configuration for the cluster's worker instances | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.md new file mode 100644 index 000000000..935c03f12 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.md @@ -0,0 +1,35 @@ +--- +title: gcp.project.dataprocService.cluster +id: gcp.project.dataprocService.cluster +sidebar_label: gcp.project.dataprocService.cluster +displayed_sidebar: MQL +description: GCP Dataproc cluster +--- + +# gcp.project.dataprocService.cluster + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| name | string | Cluster name | +| uuid | string | Cluster UUID | +| config | [gcp.project.dataprocService.cluster.config](gcp.project.dataprocservice.cluster.config.md) | Cluster configuration | +| labels | map[string]string | Labels associated with the cluster | +| metrics | dict | Contains cluster daemon metrics such as HDF and YARN stats | +| status | [gcp.project.dataprocService.cluster.status](gcp.project.dataprocservice.cluster.status.md) | Cluster status | +| statusHistory | [][gcp.project.dataprocService.cluster.status](gcp.project.dataprocservice.cluster.status.md) | Previous cluster status | +| virtualClusterConfig | [gcp.project.dataprocService.cluster.virtualClusterConfig](gcp.project.dataprocservice.cluster.virtualclusterconfig.md) | Virtual cluster config used when creating a Dataproc cluster that does not directly control the underlying compute resources | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.status.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.status.md new file mode 100644 index 000000000..f99525945 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.status.md @@ -0,0 +1,31 @@ +--- +title: gcp.project.dataprocService.cluster.status +id: gcp.project.dataprocService.cluster.status +sidebar_label: gcp.project.dataprocService.cluster.status +displayed_sidebar: MQL +description: GCP Dataproc cluster status +--- + +# gcp.project.dataprocService.cluster.status + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster status + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ----------------------------------------------------------------------- | +| id | string | Internal ID | +| detail | string | Details of the cluster's state | +| state | string | Cluster's state | +| started | time | Started timestamp | +| substate | string | Additional state information that includes status reported by the agent | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.virtualclusterconfig.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.virtualclusterconfig.md new file mode 100644 index 000000000..b8faf3962 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.cluster.virtualclusterconfig.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.dataprocService.cluster.virtualClusterConfig +id: gcp.project.dataprocService.cluster.virtualClusterConfig +sidebar_label: gcp.project.dataprocService.cluster.virtualClusterConfig +displayed_sidebar: MQL +description: GCP Dataproc cluster virtual cluster config +--- + +# gcp.project.dataprocService.cluster.virtualClusterConfig + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc cluster virtual cluster config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------ | ------------------------------------------------------------------------------------------------ | +| parentResourcePath | string | Parent resource path | +| auxiliaryServices | dict | Auxiliary services configuration | +| kubernetesCluster | dict | Kubernetes cluster configuration | +| stagingBucket | string | Cloud Storage bucket used to stage job dependencies, config files, and job driver console output | + +**References** + +- [Create a cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.md b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.md new file mode 100644 index 000000000..9fc05f146 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dataprocservice.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.dataprocService +id: gcp.project.dataprocService +sidebar_label: gcp.project.dataprocService +displayed_sidebar: MQL +description: GCP Dataproc resources +--- + +# gcp.project.dataprocService + +**Supported platform** + +- gcp + +**Description** + +GCP Dataproc resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------- | +| projectId | string | Project ID | +| enabled | bool | Whether the DataProc service is enabled in the project or not | +| regions | []string | List of available regions | +| clusters | [][gcp.project.dataprocService.cluster](gcp.project.dataprocservice.cluster.md) | List of Dataproc clusters in the current project | + +**References** + +- [Dataproc documentation](https://cloud.google.com/dataproc/docs#docs) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dnsservice.managedzone.md b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.managedzone.md new file mode 100644 index 000000000..cff4d64c0 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.managedzone.md @@ -0,0 +1,37 @@ +--- +title: gcp.project.dnsService.managedzone +id: gcp.project.dnsService.managedzone +sidebar_label: gcp.project.dnsService.managedzone +displayed_sidebar: MQL +description: Cloud DNS managed zone (a resource that represents a DNS zone hosted by the Cloud DNS service) +--- + +# gcp.project.dnsService.managedzone + +**Supported platform** + +- gcp + +**Description** + +Cloud DNS managed zone (a resource that represents a DNS zone hosted by the Cloud DNS service) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------------------------- | -------------------------------------------------------------- | +| id | string | Managed zone ID | +| projectId | string | Project ID | +| name | string | User-friendly name of the resource | +| description | string | User-friendly description of the resource | +| dnssecConfig | dict | DNSSEC configuration | +| dnsName | string | DNS name of this managed zone | +| nameServerSet | string | Optionally specifies the name server set for this managed zone | +| nameServers | []string | Delegated to these virtual name servers | +| visibility | string | Zone's visibility | +| created | time | Creation timestamp | +| recordSets | [][gcp.project.dnsService.recordset](gcp.project.dnsservice.recordset.md) | Cloud DNS record set in the zone | + +**References** + +- [DNS zones overview](https://cloud.google.com/dns/docs/zones) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dnsservice.md b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.md new file mode 100644 index 000000000..8a227b4e8 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.dnsService +id: gcp.project.dnsService +sidebar_label: gcp.project.dnsService +displayed_sidebar: MQL +description: GCP Cloud DNS +--- + +# gcp.project.dnsService + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud DNS + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------------------------------------------------------------------------------------- | --------------------------------- | +| projectId | string | Project ID | +| managedZones | [][gcp.project.dnsService.managedzone](gcp.project.dnsservice.managedzone.md) | Cloud DNS managed zone in project | +| policies | [][gcp.project.dnsService.policy](gcp.project.dnsservice.policy.md) | Cloud DNS rules in project | + +**References** + +- [Cloud DNS overview](https://cloud.google.com/dns/docs/overview/) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dnsservice.policy.md b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.policy.md new file mode 100644 index 000000000..b57f1cf03 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.policy.md @@ -0,0 +1,34 @@ +--- +title: gcp.project.dnsService.policy +id: gcp.project.dnsService.policy +sidebar_label: gcp.project.dnsService.policy +displayed_sidebar: MQL +description: Cloud DNS rules applied to one or more Virtual Private Cloud resources +--- + +# gcp.project.dnsService.policy + +**Supported platform** + +- gcp + +**Description** + +Cloud DNS rules applied to one or more Virtual Private Cloud resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| id | string | Managed Zone ID | +| name | string | User-friendly name of the resource | +| description | string | User-friendly description of the resource | +| enableInboundForwarding | bool | Whether DNS queries sent by VMs or applications over VPN connections are allowed | +| enableLogging | bool | Whether logging is enabled | +| networkNames | []string | List of network names specifying networks to which this policy is applied | +| networks | [][gcp.project.computeService.network](gcp.project.computeservice.network.md) | List of networks to which this policy is applied | + +**References** + +- [DNS policies overview](https://cloud.google.com/dns/docs/policies-overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.dnsservice.recordset.md b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.recordset.md new file mode 100644 index 000000000..7382d85c7 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.dnsservice.recordset.md @@ -0,0 +1,32 @@ +--- +title: gcp.project.dnsService.recordset +id: gcp.project.dnsService.recordset +sidebar_label: gcp.project.dnsService.recordset +displayed_sidebar: MQL +description: Cloud DNS record set +--- + +# gcp.project.dnsService.recordset + +**Supported platform** + +- gcp + +**Description** + +Cloud DNS record set + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ---------------- | -------------------------------------------------------------------------- | +| projectId | string | Project ID | +| name | string | User-friendly name of the resource | +| rrdatas | []string | Rrdatas: As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) | +| signatureRrdatas | []string | SignatureRrdatas: As defined in RFC 4034 | +| ttl | int | Number of seconds that this resource record set can be cached by resolvers | +| type | string | The identifier of a supported record type | + +**References** + +- [DNS records overview](https://cloud.google.com/dns/docs/records-overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.addonsconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.addonsconfig.md new file mode 100644 index 000000000..4a04054b8 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.addonsconfig.md @@ -0,0 +1,33 @@ +--- +title: gcp.project.gkeService.cluster.addonsConfig +id: gcp.project.gkeService.cluster.addonsConfig +sidebar_label: gcp.project.gkeService.cluster.addonsConfig +displayed_sidebar: MQL +description: GKE cluster addons config +--- + +# gcp.project.gkeService.cluster.addonsConfig + +**Supported platform** + +- gcp + +**Description** + +GKE cluster addons config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------------- | ------ | -------------------------------------------------------------------- | +| id | string | Internal ID | +| httpLoadBalancing | dict | Configuration for the HTTP (L7) load balancing controller addon | +| horizontalPodAutoscaling | dict | Configuration for the horizontal pod autoscaling feature | +| kubernetesDashboard | dict | Configuration for the Kubernetes Dashboard | +| networkPolicyConfig | dict | Configuration for NetworkPolicy | +| cloudRunConfig | dict | Configuration for the Cloud Run addon | +| dnsCacheConfig | dict | Configuration for NodeLocalDNS, a DNS cache running on cluster nodes | +| configConnectorConfig | dict | Configuration for the ConfigConnector addon | +| gcePersistentDiskCsiDriverConfig | dict | Configuration for the Compute Engine Persistent Disk CSI driver | +| gcpFilestoreCsiDriverConfig | dict | Configuration for the GCP Filestore CSI driver | +| gkeBackupAgentConfig | dict | Configuration for the backup for GKE agent addon | diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.ipallocationpolicy.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.ipallocationpolicy.md new file mode 100644 index 000000000..f1ea26abb --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.ipallocationpolicy.md @@ -0,0 +1,39 @@ +--- +title: gcp.project.gkeService.cluster.ipAllocationPolicy +id: gcp.project.gkeService.cluster.ipAllocationPolicy +sidebar_label: gcp.project.gkeService.cluster.ipAllocationPolicy +displayed_sidebar: MQL +description: GKE cluster IP allocation policy +--- + +# gcp.project.gkeService.cluster.ipAllocationPolicy + +**Supported platform** + +- gcp + +**Description** + +GKE cluster IP allocation policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | ------ | ------------------------------------------------------------------ | +| id | string | Internal ID | +| useIpAliases | bool | Whether alias IPs are used for pod IPs in the cluster | +| createSubnetwork | bool | Whether a new subnetwork is created automatically for the cluster | +| subnetworkName | string | Custom subnetwork name to be used if createSubnetwork is true | +| clusterSecondaryRangeName | string | Name of the secondary range to be used for the cluster CIDR block | +| servicesSecondaryRangeName | string | Name of the secondary range to be used for the services CIDR block | +| clusterIpv4CidrBlock | string | IP address range for the cluster pod IPs | +| nodeIpv4CidrBlock | string | IP address range of the instance IPs in this cluster | +| servicesIpv4CidrBlock | string | IP address range of the services IPs in this cluster | +| tpuIpv4CidrBlock | string | IP address range of the Cloud TPUs in this cluster | +| useRoutes | bool | Whether routes will be used for pod IPs in this cluster | +| stackType | string | IP stack type | +| ipv6AccessType | string | IPv6 access type | + +**References** + +- [Plan the required IP address allotment](https://cloud.google.com/kubernetes-engine/docs/best-practices/networking#plan-ip-allotment) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.md new file mode 100644 index 000000000..5372f1b94 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.md @@ -0,0 +1,58 @@ +--- +title: gcp.project.gkeService.cluster +id: gcp.project.gkeService.cluster +sidebar_label: gcp.project.gkeService.cluster +displayed_sidebar: MQL +description: GCP GKE cluster +--- + +# gcp.project.gkeService.cluster + +**Supported platform** + +- gcp + +**Description** + +GCP GKE cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------ | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| id | string | Unique identifier for the cluster | +| name | string | The name of the cluster | +| description | string | Optional description for the cluster | +| loggingService | string | The logging service the cluster should use to write logs | +| monitoringService | string | The monitoring service the cluster should use to write metrics | +| network | string | The name of the Google Compute Engine network to which the cluster is connected | +| clusterIpv4Cidr | string | The IP address range of the container pods in this cluster | +| subnetwork | string | The name of the Google Compute Engine subnetwork to which the cluster is connected | +| nodePools | [][gcp.project.gkeService.cluster.nodepool](gcp.project.gkeservice.cluster.nodepool.md) | The list of node pools for the cluster | +| locations | []string | The list of Google Compute Engine zones in which the cluster's nodes should be located | +| enableKubernetesAlpha | bool | Enable Kubernetes alpha features | +| autopilotEnabled | bool | Whether Autopilot is enabled for the cluster | +| zone | string | Deprecated; use location instead | +| location | string | Name of the Google Compute Engine zone/region in which the cluster exists | +| endpoint | string | The IP address of the cluster's master endpoint | +| initialClusterVersion | string | The initial Kubernetes version for this cluster | +| currentMasterVersion | string | The current software version of the master endpoint | +| status | string | The current status of this cluster | +| resourceLabels | map[string]string | The resource labels for the cluster to use to annotate any related Google Compute Engine resources | +| created | time | Creation time | +| expirationTime | time | The time the cluster will be automatically deleted in | +| addonsConfig | [gcp.project.gkeService.cluster.addonsConfig](gcp.project.gkeservice.cluster.addonsconfig.md) | Configurations for the various addons available to run in the cluster | +| workloadIdentityConfig | dict | Configuration for the use of Kubernetes Service Accounts in GCP IAM policies | +| ipAllocationPolicy | [gcp.project.gkeService.cluster.ipAllocationPolicy](gcp.project.gkeservice.cluster.ipallocationpolicy.md) | Configuration for cluster IP allocation | +| networkConfig | [gcp.project.gkeService.cluster.networkConfig](gcp.project.gkeservice.cluster.networkconfig.md) | Configuration for cluster networking | +| binaryAuthorization | dict | Binary authorization configuration | +| legacyAbac | dict | Legacy ABAC authorization configuration | +| masterAuth | dict | Authentication information for accessing the master endpoint | +| masterAuthorizedNetworksConfig | dict | Master authorized networks configuration | +| privateClusterConfig | dict | Private cluster configuration | +| databaseEncryption | dict | Etcd encryption configuration | + +**References** + +- [About cluster configuration choices](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.networkconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.networkconfig.md new file mode 100644 index 000000000..7a7026e78 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.networkconfig.md @@ -0,0 +1,38 @@ +--- +title: gcp.project.gkeService.cluster.networkConfig +id: gcp.project.gkeService.cluster.networkConfig +sidebar_label: gcp.project.gkeService.cluster.networkConfig +displayed_sidebar: MQL +description: GKE cluster network config +--- + +# gcp.project.gkeService.cluster.networkConfig + +**Supported platform** + +- gcp + +**Description** + +GKE cluster network config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| id | string | Internal ID | +| networkPath | string | Relative path of the network to which the cluster is connected | +| network | [gcp.project.computeService.network](gcp.project.computeservice.network.md) | Network to which the cluster is connected | +| subnetworkPath | string | Relative path of the subnetwork to which the cluster is connected | +| subnetwork | [gcp.project.computeService.subnetwork](gcp.project.computeservice.subnetwork.md) | Subnetwork to which the cluster is connected | +| enableIntraNodeVisibility | bool | Whether intra-node visibility is enabled for this cluster | +| defaultSnatStatus | dict | Whether the cluster disables default in-node sNAT rules | +| enableL4IlbSubsetting | bool | Whether L4ILB subsetting is enabled for this cluster | +| datapathProvider | string | Desired datapath provider for this cluster | +| privateIpv6GoogleAccess | string | Desired state of IPv6 connectivity to Google Services | +| dnsConfig | dict | Cluster DNS configuration | +| serviceExternalIpsConfig | dict | Configuration specifying whether services with externalIPs field are blocked | + +**References** + +- [Best practices for GKE networking](https://cloud.google.com/kubernetes-engine/docs/best-practices/networking) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.accelerator.gpusharingconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.accelerator.gpusharingconfig.md new file mode 100644 index 000000000..47fdfbaf2 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.accelerator.gpusharingconfig.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.accelerator.gpuSharingConfig +id: gcp.project.gkeService.cluster.nodepool.config.accelerator.gpuSharingConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.accelerator.gpuSharingConfig +displayed_sidebar: MQL +description: GPU sharing configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.accelerator.gpuSharingConfig + +**Supported platform** + +- gcp + +**Description** + +GPU sharing configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ------ | ------------------------------------------------- | +| id | string | Internal ID | +| maxSharedClientsPerGpu | int | The max number of containers that can share a GPU | +| strategy | string | The GPU sharing strategy | + +**References** + +- [Run GPUs in GKE Standard node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/gpus) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.accelerator.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.accelerator.md new file mode 100644 index 000000000..e481e3d91 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.accelerator.md @@ -0,0 +1,31 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.accelerator +id: gcp.project.gkeService.cluster.nodepool.config.accelerator +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.accelerator +displayed_sidebar: MQL +description: GCP GKE node pool hardware accelerators configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.accelerator + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool hardware accelerators configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | +| id | string | Internal ID | +| count | int | The number of the accelerator cards exposed to an instance | +| type | string | The accelerator type resource name | +| gpuPartitionSize | string | Size of partitions to create on the GPU | +| gpuSharingConfig | [gcp.project.gkeService.cluster.nodepool.config.accelerator.gpuSharingConfig](gcp.project.gkeservice.cluster.nodepool.config.accelerator.gpusharingconfig.md) | The configuration for GPU sharing | + +**References** + +- [Run GPUs in GKE Standard node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/gpus) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.advancedmachinefeatures.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.advancedmachinefeatures.md new file mode 100644 index 000000000..0f945b2b0 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.advancedmachinefeatures.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.advancedMachineFeatures +id: gcp.project.gkeService.cluster.nodepool.config.advancedMachineFeatures +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.advancedMachineFeatures +displayed_sidebar: MQL +description: GCP GKE node pool advanced machine features configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.advancedMachineFeatures + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool advanced machine features configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| id | string | Internal ID | +| threadsPerCore | int | Number of threads per physical core (if unset, assumes the maximum number of threads supported per core by the underlying processor) | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.confidentialnodes.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.confidentialnodes.md new file mode 100644 index 000000000..df2868bfe --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.confidentialnodes.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.confidentialNodes +id: gcp.project.gkeService.cluster.nodepool.config.confidentialNodes +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.confidentialNodes +displayed_sidebar: MQL +description: GCP GKE node pool confidential nodes configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.confidentialNodes + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool confidential nodes configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | --------------------------------- | +| id | string | Internal ID | +| enabled | bool | Whether to use confidential nodes | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.gcfsconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.gcfsconfig.md new file mode 100644 index 000000000..459b861d2 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.gcfsconfig.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.gcfsConfig +id: gcp.project.gkeService.cluster.nodepool.config.gcfsConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.gcfsConfig +displayed_sidebar: MQL +description: GCP GKE node pool GCFS configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.gcfsConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool GCFS configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | ------------------- | +| id | string | Internal ID | +| enabled | bool | Whether to use GCFS | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.gvnicconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.gvnicconfig.md new file mode 100644 index 000000000..2f7632522 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.gvnicconfig.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.gvnicConfig +id: gcp.project.gkeService.cluster.nodepool.config.gvnicConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.gvnicConfig +displayed_sidebar: MQL +description: GCP GKE node pool gVNIC configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.gvnicConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool gVNIC configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | -------------------- | +| id | string | Internal ID | +| enabled | bool | Whether to use gVNIC | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.kubeletconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.kubeletconfig.md new file mode 100644 index 000000000..7307af7b5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.kubeletconfig.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.kubeletConfig +id: gcp.project.gkeService.cluster.nodepool.config.kubeletConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.kubeletConfig +displayed_sidebar: MQL +description: GCP GKE Node Pool kubelet configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.kubeletConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE Node Pool kubelet configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------ | ------------------------------------------------------ | +| id | string | Internal ID | +| cpuManagerPolicy | string | Control the CPU management policy on the node | +| cpuCfsQuotaPeriod | string | Set the CPU CFS quota period value 'cpu.cfs_period_us' | +| podPidsLimit | int | Set the Pod PID limits | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.linuxnodeconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.linuxnodeconfig.md new file mode 100644 index 000000000..24b8634ac --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.linuxnodeconfig.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.linuxNodeConfig +id: gcp.project.gkeService.cluster.nodepool.config.linuxNodeConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.linuxNodeConfig +displayed_sidebar: MQL +description: GCP GKE node pool parameters that can be configured on Linux nodes +--- + +# gcp.project.gkeService.cluster.nodepool.config.linuxNodeConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool parameters that can be configured on Linux nodes + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------- | ------------------------------------------------------------------------------ | +| id | string | Internal ID | +| sysctls | map[string]string | The Linux kernel parameters to apply to the nodes and all pods running on them | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.md new file mode 100644 index 000000000..72d3c12e4 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.md @@ -0,0 +1,54 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config +id: gcp.project.gkeService.cluster.nodepool.config +sidebar_label: gcp.project.gkeService.cluster.nodepool.config +displayed_sidebar: MQL +description: GCP GKE node pool configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| id | string | Internal ID | +| projectId | string | Project ID | +| machineType | string | The name of a Google Compute Engine machine type | +| diskSizeGb | int | Size of the disk attached to each node, specified in GB | +| oauthScopes | []string | The set of Google API scopes to be made available on all of the node VMs under the "default" service account | +| serviceAccountEmail | string | Email of the Google Cloud Platform Service Account to be used by the node VMs | +| serviceAccount | [gcp.project.iamService.serviceAccount](gcp.project.iamservice.serviceaccount.md) | Google Cloud Platform Service Account to be used by the node VMs | +| metadata | map[string]string | The metadata key/value pairs assigned to instances in the cluster | +| imageType | string | The image type to use for this node | +| labels | map[string]string | The map of Kubernetes labels to be applied to each node | +| localSsdCount | int | The number of local SSD disks to be attached to the node | +| tags | []string | The list of instance tags applied to all nodes | +| preemptible | bool | Whether the nodes are created as preemptible VM instances. | +| accelerators | [][gcp.project.gkeService.cluster.nodepool.config.accelerator](gcp.project.gkeservice.cluster.nodepool.config.accelerator.md) | A list of hardware accelerators to attach to each node | +| diskType | string | Type of the disk attached to each node | +| minCpuPlatform | string | Minimum CPU platform to be used by this instance | +| workloadMetadataMode | string | The workload metadata mode for this node | +| taints | [][gcp.project.gkeService.cluster.nodepool.config.nodeTaint](gcp.project.gkeservice.cluster.nodepool.config.nodetaint.md) | List of Kubernetes taints to be applied to each node | +| sandboxConfig | [gcp.project.gkeService.cluster.nodepool.config.sandboxConfig](gcp.project.gkeservice.cluster.nodepool.config.sandboxconfig.md) | Sandbox configuration for this node | +| shieldedInstanceConfig | [gcp.project.gkeService.cluster.nodepool.config.shieldedInstanceConfig](gcp.project.gkeservice.cluster.nodepool.config.shieldedinstanceconfig.md) | Shielded instance configuration | +| linuxNodeConfig | [gcp.project.gkeService.cluster.nodepool.config.linuxNodeConfig](gcp.project.gkeservice.cluster.nodepool.config.linuxnodeconfig.md) | Parameters that can be configured on Linux nodes | +| kubeletConfig | [gcp.project.gkeService.cluster.nodepool.config.kubeletConfig](gcp.project.gkeservice.cluster.nodepool.config.kubeletconfig.md) | Node kubelet configs | +| bootDiskKmsKey | string | The Customer Managed Encryption Key used to encrypt the boot disk attached to each node | +| gcfsConfig | [gcp.project.gkeService.cluster.nodepool.config.gcfsConfig](gcp.project.gkeservice.cluster.nodepool.config.gcfsconfig.md) | Google Container File System (image streaming) configuration | +| advancedMachineFeatures | [gcp.project.gkeService.cluster.nodepool.config.advancedMachineFeatures](gcp.project.gkeservice.cluster.nodepool.config.advancedmachinefeatures.md) | Advanced features for the Compute Engine VM | +| gvnicConfig | [gcp.project.gkeService.cluster.nodepool.config.gvnicConfig](gcp.project.gkeservice.cluster.nodepool.config.gvnicconfig.md) | gVNIC configuration | +| spot | bool | Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag | +| confidentialNodes | [gcp.project.gkeService.cluster.nodepool.config.confidentialNodes](gcp.project.gkeservice.cluster.nodepool.config.confidentialnodes.md) | Confidential nodes configuration | + +**References** + +- [About node pools](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.nodetaint.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.nodetaint.md new file mode 100644 index 000000000..7b6725aa9 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.nodetaint.md @@ -0,0 +1,26 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.nodeTaint +id: gcp.project.gkeService.cluster.nodepool.config.nodeTaint +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.nodeTaint +displayed_sidebar: MQL +description: GCP GKE Kubernetes node taint +--- + +# gcp.project.gkeService.cluster.nodepool.config.nodeTaint + +**Supported platform** + +- gcp + +**Description** + +GCP GKE Kubernetes node taint + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | -------------------- | +| id | string | Internal ID | +| key | string | Key for the taint | +| value | string | Value for the taint | +| effect | string | Effect for the taint | diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.sandboxconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.sandboxconfig.md new file mode 100644 index 000000000..72be042c3 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.sandboxconfig.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.sandboxConfig +id: gcp.project.gkeService.cluster.nodepool.config.sandboxConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.sandboxConfig +displayed_sidebar: MQL +description: GCP GKE node pool sandbox configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.sandboxConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool sandbox configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ---------------------------------------- | +| id | string | Internal ID | +| type | string | Type of the sandbox to use for this node | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.shieldedinstanceconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.shieldedinstanceconfig.md new file mode 100644 index 000000000..f27936cd8 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.config.shieldedinstanceconfig.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.config.shieldedInstanceConfig +id: gcp.project.gkeService.cluster.nodepool.config.shieldedInstanceConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.config.shieldedInstanceConfig +displayed_sidebar: MQL +description: GCP GKE node pool shielded instance configuration +--- + +# gcp.project.gkeService.cluster.nodepool.config.shieldedInstanceConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool shielded instance configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ------ | ----------------------------------------------------- | +| id | string | Internal ID | +| enableSecureBoot | bool | Whether the instance has Secure Boot enabled | +| enableIntegrityMonitoring | bool | Whether the instance has integrity monitoring enabled | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.md new file mode 100644 index 000000000..e7e3acbaf --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.md @@ -0,0 +1,36 @@ +--- +title: gcp.project.gkeService.cluster.nodepool +id: gcp.project.gkeService.cluster.nodepool +sidebar_label: gcp.project.gkeService.cluster.nodepool +displayed_sidebar: MQL +description: GKE cluster node pool +--- + +# gcp.project.gkeService.cluster.nodepool + +**Supported platform** + +- gcp + +**Description** + +GKE cluster node pool + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| id | string | Internal ID | +| name | string | The name of the node pool | +| config | [gcp.project.gkeService.cluster.nodepool.config](gcp.project.gkeservice.cluster.nodepool.config.md) | The node configuration of the pool | +| initialNodeCount | int | The initial node count for the pool | +| locations | []string | The list of Google Compute Engine zones in which the NodePool's nodes should be located | +| networkConfig | [gcp.project.gkeService.cluster.nodepool.networkConfig](gcp.project.gkeservice.cluster.nodepool.networkconfig.md) | Networking configuration for this node pool | +| version | string | The Kubernetes version | +| instanceGroupUrls | []string | The resource URLs of the managed instance groups associated with this node pool | +| status | string | The current status of this node pool | +| management | dict | Node management configuration | + +**References** + +- [About node pools](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.networkconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.networkconfig.md new file mode 100644 index 000000000..c87b55c6c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.networkconfig.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.networkConfig +id: gcp.project.gkeService.cluster.nodepool.networkConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.networkConfig +displayed_sidebar: MQL +description: GCP GKE node pool-Level network configuration +--- + +# gcp.project.gkeService.cluster.nodepool.networkConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool-Level network configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | +| id | string | Internal ID | +| podRange | string | The ID of the secondary range for pod IPs | +| podIpv4CidrBlock | string | The IP address range for pod IPs in this node pool | +| performanceConfig | [gcp.project.gkeService.cluster.nodepool.networkConfig.performanceConfig](gcp.project.gkeservice.cluster.nodepool.networkconfig.performanceconfig.md) | Network performance tier configuration | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.networkconfig.performanceconfig.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.networkconfig.performanceconfig.md new file mode 100644 index 000000000..fa7faadb6 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.cluster.nodepool.networkconfig.performanceconfig.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService.cluster.nodepool.networkConfig.performanceConfig +id: gcp.project.gkeService.cluster.nodepool.networkConfig.performanceConfig +sidebar_label: gcp.project.gkeService.cluster.nodepool.networkConfig.performanceConfig +displayed_sidebar: MQL +description: GCP GKE node pool network performance configuration +--- + +# gcp.project.gkeService.cluster.nodepool.networkConfig.performanceConfig + +**Supported platform** + +- gcp + +**Description** + +GCP GKE node pool network performance configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ------ | ------------------------------------------------------------ | +| id | string | Internal ID | +| totalEgressBandwidthTier | string | Specifies the total network bandwidth tier for the node pool | + +**References** + +- [Add and manage node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/node-pools) diff --git a/docs/mql/resources/gcp-pack/gcp.project.gkeservice.md b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.md new file mode 100644 index 000000000..1ba540a39 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.gkeservice.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.gkeService +id: gcp.project.gkeService +sidebar_label: gcp.project.gkeService +displayed_sidebar: MQL +description: GCP GKE +--- + +# gcp.project.gkeService + +**Supported platform** + +- gcp + +**Description** + +GCP GKE + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------------------- | ------------------------------------------- | +| projectId | string | Project ID | +| clusters | [][gcp.project.gkeService.cluster](gcp.project.gkeservice.cluster.md) | List of GKE clusters in the current project | + +**References** + +- [GKE overview](https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.iamservice.md b/docs/mql/resources/gcp-pack/gcp.project.iamservice.md new file mode 100644 index 000000000..9c5dbb619 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.iamservice.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.iamService +id: gcp.project.iamService +sidebar_label: gcp.project.iamService +displayed_sidebar: MQL +description: GCP IAM resources +--- + +# gcp.project.iamService + +**Supported platform** + +- gcp + +**Description** + +GCP IAM resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------------------------------------------------------------------------------- | ------------------------ | +| projectId | string | Project ID | +| serviceAccounts | [][gcp.project.iamService.serviceAccount](gcp.project.iamservice.serviceaccount.md) | List of service accounts | + +**References** + +- [IAM overview](https://cloud.google.com/iam/docs/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.iamservice.serviceaccount.key.md b/docs/mql/resources/gcp-pack/gcp.project.iamservice.serviceaccount.key.md new file mode 100644 index 000000000..f938b8a3f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.iamservice.serviceaccount.key.md @@ -0,0 +1,33 @@ +--- +title: gcp.project.iamService.serviceAccount.key +id: gcp.project.iamService.serviceAccount.key +sidebar_label: gcp.project.iamService.serviceAccount.key +displayed_sidebar: MQL +description: GCP service account keys +--- + +# gcp.project.iamService.serviceAccount.key + +**Supported platform** + +- gcp + +**Description** + +GCP service account keys + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------ | -------------------------------------------- | +| name | string | Service account key name | +| keyAlgorithm | string | Algorithm (and possibly key size) of the key | +| validAfterTime | time | Key can be used after this timestamp | +| validBeforeTime | time | Key can be used before this timestamp | +| keyOrigin | string | Key origin | +| keyType | string | Key type | +| disabled | bool | Whether the key is disabled | + +**References** + +- [Create and delete service account keys](https://cloud.google.com/iam/docs/keys-create-delete) diff --git a/docs/mql/resources/gcp-pack/gcp.project.iamservice.serviceaccount.md b/docs/mql/resources/gcp-pack/gcp.project.iamservice.serviceaccount.md new file mode 100644 index 000000000..422891b0e --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.iamservice.serviceaccount.md @@ -0,0 +1,35 @@ +--- +title: gcp.project.iamService.serviceAccount +id: gcp.project.iamService.serviceAccount +sidebar_label: gcp.project.iamService.serviceAccount +displayed_sidebar: MQL +description: GCP service account +--- + +# gcp.project.iamService.serviceAccount + +**Supported platform** + +- gcp + +**Description** + +GCP service account + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| projectId | string | Project ID | +| name | string | Service account name | +| uniqueId | string | Unique, stable, numeric ID for the service account | +| email | string | Email address of the service account | +| displayName | string | User-specified, human-readable name for the service account | +| description | string | Service account description | +| oauth2ClientId | string | OAuth 2.0 client ID | +| disabled | bool | Whether the service account is disabled | +| keys | [][gcp.project.iamService.serviceAccount.key](gcp.project.iamservice.serviceaccount.key.md) | Service account keys | + +**References** + +- [Identities for workloads](https://cloud.google.com/iam/docs/workload-identities) diff --git a/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.md b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.md new file mode 100644 index 000000000..ddf7a3e28 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.md @@ -0,0 +1,40 @@ +--- +title: gcp.project.kmsService.keyring.cryptokey +id: gcp.project.kmsService.keyring.cryptokey +sidebar_label: gcp.project.kmsService.keyring.cryptokey +displayed_sidebar: MQL +description: GCP KMS crypto key +--- + +# gcp.project.kmsService.keyring.cryptokey + +**Supported platform** + +- gcp + +**Description** + +GCP KMS crypto key + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| resourcePath | string | Full resource path | +| name | string | Crypto key name | +| primary | [gcp.project.kmsService.keyring.cryptokey.version](gcp.project.kmsservice.keyring.cryptokey.version.md) | Primary version for encrypt to use for this crypto key | +| purpose | string | Crypto key purpose | +| created | time | Creation timestamp | +| nextRotation | time | Time at which KMS will create a new version of this key and mark it as primary | +| rotationPeriod | time | Rotation period | +| versionTemplate | dict | Template describing the settings for new crypto key versions | +| labels | map[string]string | User-defined labels | +| importOnly | bool | Whether this key may contain imported versions only | +| destroyScheduledDuration | time | Period of time that versions of this key spend in DESTROY_SCHEDULED state before being destroyed | +| cryptoKeyBackend | string | Resource name of the backend environment where the key material for all crypto key versions reside | +| versions | [][gcp.project.kmsService.keyring.cryptokey.version](gcp.project.kmsservice.keyring.cryptokey.version.md) | List of cryptokey versions | +| iamPolicy | [][gcp.resourcemanager.binding](gcp.resourcemanager.binding.md) | Crypto key IAM policy | + +**References** + +- [Create a key ring](https://cloud.google.com/kms/docs/create-key-ring) diff --git a/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.attestation.certificatechains.md b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.attestation.certificatechains.md new file mode 100644 index 000000000..a49b69831 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.attestation.certificatechains.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.kmsService.keyring.cryptokey.version.attestation.certificatechains +id: gcp.project.kmsService.keyring.cryptokey.version.attestation.certificatechains +sidebar_label: gcp.project.kmsService.keyring.cryptokey.version.attestation.certificatechains +displayed_sidebar: MQL +description: GCP KMS crypto key version attestation certificate chains +--- + +# gcp.project.kmsService.keyring.cryptokey.version.attestation.certificatechains + +**Supported platform** + +- gcp + +**Description** + +GCP KMS crypto key version attestation certificate chains + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ---------------- | ------------------------------------------------------------------- | +| cryptoKeyVersionName | string | Crypto key version name | +| caviumCerts | []string | Cavium certificate chain corresponding to the attestation | +| googleCardCerts | []string | Google card certificate chain corresponding to the attestation | +| googlePartitionCerts | []string | Google partition certificate chain corresponding to the attestation | + +**References** + +- [Create a key ring](https://cloud.google.com/kms/docs/create-key-ring) diff --git a/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.attestation.md b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.attestation.md new file mode 100644 index 000000000..524a47992 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.attestation.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.kmsService.keyring.cryptokey.version.attestation +id: gcp.project.kmsService.keyring.cryptokey.version.attestation +sidebar_label: gcp.project.kmsService.keyring.cryptokey.version.attestation +displayed_sidebar: MQL +description: GCP KMS crypto key version attestation +--- + +# gcp.project.kmsService.keyring.cryptokey.version.attestation + +**Supported platform** + +- gcp + +**Description** + +GCP KMS crypto key version attestation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | +| cryptoKeyVersionName | string | Crypto key version name | +| format | string | Format of the attestation data | +| certificateChains | [gcp.project.kmsService.keyring.cryptokey.version.attestation.certificatechains](gcp.project.kmsservice.keyring.cryptokey.version.attestation.certificatechains.md) | Certificate chains needed to validate the attestation | + +**References** + +- [Create a key ring](https://cloud.google.com/kms/docs/create-key-ring) diff --git a/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.externalprotectionleveloptions.md b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.externalprotectionleveloptions.md new file mode 100644 index 000000000..b70188d86 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.externalprotectionleveloptions.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.kmsService.keyring.cryptokey.version.externalProtectionLevelOptions +id: gcp.project.kmsService.keyring.cryptokey.version.externalProtectionLevelOptions +sidebar_label: gcp.project.kmsService.keyring.cryptokey.version.externalProtectionLevelOptions +displayed_sidebar: MQL +description: GCP KMS crypto key version external protection level options +--- + +# gcp.project.kmsService.keyring.cryptokey.version.externalProtectionLevelOptions + +**Supported platform** + +- gcp + +**Description** + +GCP KMS crypto key version external protection level options + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------ | ---------------------------------------------------------------------- | +| cryptoKeyVersionName | string | Crypto key version name | +| externalKeyUri | string | URI for an external resource that the crypto key version represents | +| ekmConnectionKeyPath | string | Path to the external key material on the EKM when using EKM connection | + +**References** + +- [Create a key ring](https://cloud.google.com/kms/docs/create-key-ring) diff --git a/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.md b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.md new file mode 100644 index 000000000..27c809575 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.cryptokey.version.md @@ -0,0 +1,41 @@ +--- +title: gcp.project.kmsService.keyring.cryptokey.version +id: gcp.project.kmsService.keyring.cryptokey.version +sidebar_label: gcp.project.kmsService.keyring.cryptokey.version +displayed_sidebar: MQL +description: GCP KMS crypto key version +--- + +# gcp.project.kmsService.keyring.cryptokey.version + +**Supported platform** + +- gcp + +**Description** + +GCP KMS crypto key version + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| resourcePath | string | Full resource path | +| name | string | Crypto key version name | +| state | string | Crypto key version's current state | +| protectionLevel | string | Protection level describing how crypto operations perform with this crypto key version | +| algorithm | string | Algorithm that the crypto key version supports | +| attestation | [gcp.project.kmsService.keyring.cryptokey.version.attestation](gcp.project.kmsservice.keyring.cryptokey.version.attestation.md) | Statement generated and signed by HSM at key creation time | +| created | time | Time created | +| generated | time | Time generated | +| destroyed | time | Time destroyed | +| destroyEventTime | time | Destroy event timestamp | +| importJob | string | Name of the import job used in the most recent import of the crypto key version | +| importTime | time | Time at which this crypto key version's key material was imported | +| importFailureReason | string | The root cause of an import failure | +| externalProtectionLevelOptions | [gcp.project.kmsService.keyring.cryptokey.version.externalProtectionLevelOptions](gcp.project.kmsservice.keyring.cryptokey.version.externalprotectionleveloptions.md) | Additional fields for configuring external protection level | +| reimportEligible | bool | Whether the crypto key version is eligible for reimport | + +**References** + +- [Create a key ring](https://cloud.google.com/kms/docs/create-key-ring) diff --git a/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.md b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.md new file mode 100644 index 000000000..dad0e0ea5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.keyring.md @@ -0,0 +1,32 @@ +--- +title: gcp.project.kmsService.keyring +id: gcp.project.kmsService.keyring +sidebar_label: gcp.project.kmsService.keyring +displayed_sidebar: MQL +description: GCP KMS keyring +--- + +# gcp.project.kmsService.keyring + +**Supported platform** + +- gcp + +**Description** + +GCP KMS keyring + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| projectId | string | Project ID | +| resourcePath | string | Full resource path | +| name | string | Keyring name | +| created | time | Time created | +| location | string | Keyring location | +| cryptokeys | [][gcp.project.kmsService.keyring.cryptokey](gcp.project.kmsservice.keyring.cryptokey.md) | List of cryptokeys in the current keyring | + +**References** + +- [Create a key ring](https://cloud.google.com/kms/docs/create-key-ring) diff --git a/docs/mql/resources/gcp-pack/gcp.project.kmsservice.md b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.md new file mode 100644 index 000000000..ed71bb024 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.kmsservice.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.kmsService +id: gcp.project.kmsService +sidebar_label: gcp.project.kmsService +displayed_sidebar: MQL +description: GCP KMS resources +--- + +# gcp.project.kmsService + +**Supported platform** + +- gcp + +**Description** + +GCP KMS resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------------------- | --------------------------------------- | +| projectId | string | Project ID | +| locations | []string | Available locations for the service | +| keyrings | [][gcp.project.kmsService.keyring](gcp.project.kmsservice.keyring.md) | List of keyrings in the current project | + +**References** + +- [Cloud KMS resources](https://cloud.google.com/kms/docs/resource-hierarchy) diff --git a/docs/mql/resources/gcp-pack/gcp.project.loggingservice.bucket.indexconfig.md b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.bucket.indexconfig.md new file mode 100644 index 000000000..961b4f528 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.bucket.indexconfig.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.loggingservice.bucket.indexConfig +id: gcp.project.loggingservice.bucket.indexConfig +sidebar_label: gcp.project.loggingservice.bucket.indexConfig +displayed_sidebar: MQL +description: GCP Logging bucket index config +--- + +# gcp.project.loggingservice.bucket.indexConfig + +**Supported platform** + +- gcp + +**Description** + +GCP Logging bucket index config + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ----------------------------- | +| id | string | Internal ID | +| created | time | Creation timestamp | +| fieldPath | string | Log entry field path to index | +| type | string | Type of data in this index | + +**References** + +- [Cloud Logging overview](https://cloud.google.com/logging/docs/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.loggingservice.bucket.md b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.bucket.md new file mode 100644 index 000000000..f42e3df24 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.bucket.md @@ -0,0 +1,37 @@ +--- +title: gcp.project.loggingservice.bucket +id: gcp.project.loggingservice.bucket +sidebar_label: gcp.project.loggingservice.bucket +displayed_sidebar: MQL +description: GCP Logging bucket +--- + +# gcp.project.loggingservice.bucket + +**Supported platform** + +- gcp + +**Description** + +GCP Logging bucket + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| cmekSettings | dict | CMEK settings of the log bucket | +| created | time | Creation timestamp | +| description | string | Description of the bucket | +| indexConfigs | [][gcp.project.loggingservice.bucket.indexConfig](gcp.project.loggingservice.bucket.indexconfig.md) | List of indexed fields and related configuration data | +| lifecycleState | string | Bucket lifecycle state | +| locked | bool | Whether the bucket is locked | +| name | string | Bucket name | +| restrictedFields | []string | Log entry field paths that are denied access in this bucket | +| retentionDays | int | Amount of time for which logs will be retained by default, after which they're' automatically deleted | +| updated | time | Last update timestamp of the bucket | + +**References** + +- [Cloud Logging overview](https://cloud.google.com/logging/docs/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.loggingservice.md b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.md new file mode 100644 index 000000000..44fd258f3 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.loggingservice +id: gcp.project.loggingservice +sidebar_label: gcp.project.loggingservice +displayed_sidebar: MQL +description: GCP Logging resources +--- + +# gcp.project.loggingservice + +**Supported platform** + +- gcp + +**Description** + +GCP Logging resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------------------------- | ----------------------- | +| projectId | string | Project ID | +| buckets | [][gcp.project.loggingservice.bucket](gcp.project.loggingservice.bucket.md) | List of logging buckets | +| metrics | [][gcp.project.loggingservice.metric](gcp.project.loggingservice.metric.md) | List of metrics | +| sinks | [][gcp.project.loggingservice.sink](gcp.project.loggingservice.sink.md) | List of log sinks | + +**References** + +- [Cloud Logging overview](https://cloud.google.com/logging/docs/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.loggingservice.metric.md b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.metric.md new file mode 100644 index 000000000..3bf60dd20 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.metric.md @@ -0,0 +1,31 @@ +--- +title: gcp.project.loggingservice.metric +id: gcp.project.loggingservice.metric +sidebar_label: gcp.project.loggingservice.metric +displayed_sidebar: MQL +description: GCP Logging metric +--- + +# gcp.project.loggingservice.metric + +**Supported platform** + +- gcp + +**Description** + +GCP Logging metric + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------------------------------------------- | ------------------------------ | +| id | string | Metric ID | +| projectId | string | Project ID | +| description | string | Metric description | +| filter | string | Advanced log filter | +| alertPolicies | [][gcp.project.monitoringService.alertPolicy](gcp.project.monitoringservice.alertpolicy.md) | Alert policies for this metric | + +**References** + +- [Cloud Logging overview](https://cloud.google.com/logging/docs/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.loggingservice.sink.md b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.sink.md new file mode 100644 index 000000000..b7c47fc5b --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.loggingservice.sink.md @@ -0,0 +1,33 @@ +--- +title: gcp.project.loggingservice.sink +id: gcp.project.loggingservice.sink +sidebar_label: gcp.project.loggingservice.sink +displayed_sidebar: MQL +description: GCP Logging sink +--- + +# gcp.project.loggingservice.sink + +**Supported platform** + +- gcp + +**Description** + +GCP Logging sink + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | Sink ID | +| projectId | string | Project ID | +| destination | string | Export destination | +| storageBucket | [gcp.project.storageService.bucket](gcp.project.storageservice.bucket.md) | Storage bucket to which the sink exports (only set for sinks with a destination storage bucket) | +| filter | string | Optional advanced logs filter | +| writerIdentity | string | When exporting logs, logging adopts this identity for authorization | +| includeChildren | bool | Whether to allow the sink to export log entries from the organization or folder, plus (recursively) from any contained folders, billings accounts, or projects | + +**References** + +- [Cloud Logging overview](https://cloud.google.com/logging/docs/overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.md b/docs/mql/resources/gcp-pack/gcp.project.md new file mode 100644 index 000000000..148ba50e8 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.md @@ -0,0 +1,55 @@ +--- +title: gcp.project +id: gcp.project +sidebar_label: gcp.project +displayed_sidebar: MQL +description: Google Cloud Platform project +--- + +# gcp.project + +**Supported platform** + +- gcp + +**Description** + +Google Cloud Platform project + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------ | +| id | string | Unique, user-assigned ID of the project | +| name | string | Unique resource name | +| parentId | string | Parent ID | +| number | string | Deprecated. Use `id` instead. | +| state | string | Project lifecycle state | +| lifecycleState | string | Deprecated. Use `state` instead. | +| createTime | time | Creation time | +| labels | map[string]string | Labels associated with this project | +| iamPolicy | [][gcp.resourcemanager.binding](gcp.resourcemanager.binding.md) | IAM policy | +| services | [][gcp.service](gcp.service.md) | List of available and enabled services for the project | +| recommendations | [][gcp.recommendation](gcp.recommendation.md) | List of recommendations | +| gke | [gcp.project.gkeService](gcp.project.gkeservice.md) | GCP GKE resources | +| compute | [gcp.project.computeService](gcp.project.computeservice.md) | GCP Compute resources for the project | +| pubsub | [gcp.project.pubsubService](gcp.project.pubsubservice.md) | GCP pub/sub-related resources | +| kms | [gcp.project.kmsService](gcp.project.kmsservice.md) | KMS-related resources | +| essentialContacts | [][gcp.essentialContact](gcp.essentialcontact.md) | GCP contacts for the project | +| apiKeys | [][gcp.project.apiKey](gcp.project.apikey.md) | API keys | +| logging | [gcp.project.loggingservice](gcp.project.loggingservice.md) | Logging resources | +| sql | [gcp.project.sqlService](gcp.project.sqlservice.md) | GCP Cloud SQL resources | +| iam | [gcp.project.iamService](gcp.project.iamservice.md) | GCP IAM resources | +| commonInstanceMetadata | map[string]string | Common instance metadata for the project | +| dns | [gcp.project.dnsService](gcp.project.dnsservice.md) | GCP Cloud DNS | +| bigquery | [gcp.project.bigqueryService](gcp.project.bigqueryservice.md) | GCP BigQuery resources | +| cloudFunctions | [][gcp.project.cloudFunction](gcp.project.cloudfunction.md) | GCP Cloud Functions | +| dataproc | [gcp.project.dataprocService](gcp.project.dataprocservice.md) | GCP Dataproc resources | +| cloudRun | [gcp.project.cloudRunService](gcp.project.cloudrunservice.md) | GCP Cloud Run resources | +| accessApprovalSettings | [gcp.accessApprovalSettings](gcp.accessapprovalsettings.md) | Access approval settings | +| storage | [gcp.project.storageService](gcp.project.storageservice.md) | GCP Storage resources | +| monitoring | [gcp.project.monitoringService](gcp.project.monitoringservice.md) | Monitoring resources | + +**References** + +- [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) diff --git a/docs/mql/resources/gcp-pack/gcp.project.monitoringservice.alertpolicy.md b/docs/mql/resources/gcp-pack/gcp.project.monitoringservice.alertpolicy.md new file mode 100644 index 000000000..46c87d565 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.monitoringservice.alertpolicy.md @@ -0,0 +1,41 @@ +--- +title: gcp.project.monitoringService.alertPolicy +id: gcp.project.monitoringService.alertPolicy +sidebar_label: gcp.project.monitoringService.alertPolicy +displayed_sidebar: MQL +description: GCP monitoring alert policy +--- + +# gcp.project.monitoringService.alertPolicy + +**Supported platform** + +- gcp + +**Description** + +GCP monitoring alert policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ----------------- | --------------------------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| name | string | Alert policy name | +| displayName | string | Display name | +| documentation | dict | Documentation included with notifications and incidents related to this policy | +| labels | map[string]string | User-defined labels | +| conditions | []dict | List of conditions for the policy | +| combiner | string | How to combine the results of multiple conditions to determine if an incident should be opened | +| enabled | bool | Whether the policy is enabled | +| validity | dict | Description of how the alert policy is invalid | +| notificationChannelUrls | []string | Notification channel URLs to which notifications should be sent when incidents are opened or closed | +| created | time | Creation timestamp | +| createdBy | string | Email address of the user who created the alert policy | +| updated | time | Update timestamp | +| updatedBy | string | Email address of the user who last updated the alert policy | +| alertStrategy | dict | Configuration for notification channels notifications | + +**References** + +- [Alerting overview](https://cloud.google.com/monitoring/alerts) diff --git a/docs/mql/resources/gcp-pack/gcp.project.monitoringservice.md b/docs/mql/resources/gcp-pack/gcp.project.monitoringservice.md new file mode 100644 index 000000000..8fe3a67f5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.monitoringservice.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.monitoringService +id: gcp.project.monitoringService +sidebar_label: gcp.project.monitoringService +displayed_sidebar: MQL +description: GCP monitoring resources +--- + +# gcp.project.monitoringService + +**Supported platform** + +- gcp + +**Description** + +GCP monitoring resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------------------------------------------- | ---------------------- | +| projectId | string | Project ID | +| alertPolicies | [][gcp.project.monitoringService.alertPolicy](gcp.project.monitoringservice.alertpolicy.md) | List of alert policies | + +**References** + +- [Cloud Monitoring overview](https://cloud.google.com/monitoring/docs/monitoring-overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.md new file mode 100644 index 000000000..a296d482c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.pubsubService +id: gcp.project.pubsubService +sidebar_label: gcp.project.pubsubService +displayed_sidebar: MQL +description: GCP Pub/Sub resources +--- + +# gcp.project.pubsubService + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------- | +| projectId | string | Project ID | +| topics | [][gcp.project.pubsubService.topic](gcp.project.pubsubservice.topic.md) | List of topics in the current project | +| subscriptions | [][gcp.project.pubsubService.subscription](gcp.project.pubsubservice.subscription.md) | List of subscriptions in the current project | +| snapshots | [][gcp.project.pubsubService.snapshot](gcp.project.pubsubservice.snapshot.md) | List of snapshots in the current project | + +**References** + +- [Alerting overview](https://cloud.google.com/monitoring/alerts) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.snapshot.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.snapshot.md new file mode 100644 index 000000000..897aa1d11 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.snapshot.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.pubsubService.snapshot +id: gcp.project.pubsubService.snapshot +sidebar_label: gcp.project.pubsubService.snapshot +displayed_sidebar: MQL +description: GCP Pub/Sub snapshot +--- + +# gcp.project.pubsubService.snapshot + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub snapshot + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------------------------------------------------------------- | ----------------------------------- | +| projectId | string | Project ID | +| name | string | Subscription name | +| topic | [gcp.project.pubsubService.topic](gcp.project.pubsubservice.topic.md) | The topic for which the snapshot is | +| expiration | time | When the snapshot expires | + +**References** + +- [Overview of the Pub/Sub service](https://cloud.google.com/pubsub/docs/pubsub-basics) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.config.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.config.md new file mode 100644 index 000000000..dd804be80 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.config.md @@ -0,0 +1,35 @@ +--- +title: gcp.project.pubsubService.subscription.config +id: gcp.project.pubsubService.subscription.config +sidebar_label: gcp.project.pubsubService.subscription.config +displayed_sidebar: MQL +description: GCP Pub/Sub subscription configuration +--- + +# gcp.project.pubsubService.subscription.config + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub subscription configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| subscriptionName | string | Subscription name | +| topic | [gcp.project.pubsubService.topic](gcp.project.pubsubservice.topic.md) | Topic to which the subscription points | +| pushConfig | [gcp.project.pubsubService.subscription.config.pushconfig](gcp.project.pubsubservice.subscription.config.pushconfig.md) | Configuration for subscriptions that operate in push mode | +| ackDeadline | time | Default maximum time a subscriber can take to acknowledge a message after receiving it | +| retainAckedMessages | bool | Whether to retain acknowledged messages | +| retentionDuration | time | How long to retain messages in the backlog after they're published | +| expirationPolicy | time | Conditions for a subscription's expiration | +| labels | map[string]string | The labels associated with this subscription | + +**References** + +- [Subscription overview](https://cloud.google.com/pubsub/docs/subscription-overview) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.config.pushconfig.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.config.pushconfig.md new file mode 100644 index 000000000..2eaf5883b --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.config.pushconfig.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.pubsubService.subscription.config.pushconfig +id: gcp.project.pubsubService.subscription.config.pushconfig +sidebar_label: gcp.project.pubsubService.subscription.config.pushconfig +displayed_sidebar: MQL +description: GCP Pub/Sub configuration for subscriptions that operate in push mode +--- + +# gcp.project.pubsubService.subscription.config.pushconfig + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub configuration for subscriptions that operate in push mode + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | --------------------------------------------- | +| configId | string | Parent configuration ID | +| endpoint | string | URL of the endpoint to which to push messages | +| attributes | map[string]string | Endpoint configuration attributes | + +**References** + +- [Push subscriptions](https://cloud.google.com/pubsub/docs/push) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.md new file mode 100644 index 000000000..b9c1eacc5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.subscription.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.pubsubService.subscription +id: gcp.project.pubsubService.subscription +sidebar_label: gcp.project.pubsubService.subscription +displayed_sidebar: MQL +description: GCP Pub/Sub subscription +--- + +# gcp.project.pubsubService.subscription + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub subscription + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------------------------------------------------------------------------- | -------------------------- | +| projectId | string | Project ID | +| name | string | Subscription name | +| config | [gcp.project.pubsubService.subscription.config](gcp.project.pubsubservice.subscription.config.md) | Subscription configuration | + +**References** + +- [Overview of the Pub/Sub service](https://cloud.google.com/pubsub/docs/pubsub-basics) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.config.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.config.md new file mode 100644 index 000000000..ae132f54f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.config.md @@ -0,0 +1,31 @@ +--- +title: gcp.project.pubsubService.topic.config +id: gcp.project.pubsubService.topic.config +sidebar_label: gcp.project.pubsubService.topic.config +displayed_sidebar: MQL +description: GCP Pub/Sub topic configuration +--- + +# gcp.project.pubsubService.topic.config + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub topic configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| projectId | string | Project ID | +| topicName | string | Topic name | +| labels | map[string]string | Labels associated with this topic | +| kmsKeyName | string | Cloud KMS key used to protect access to messages published to the topic | +| messageStoragePolicy | [gcp.project.pubsubService.topic.config.messagestoragepolicy](gcp.project.pubsubservice.topic.config.messagestoragepolicy.md) | Message storage policy | + +**References** + +- [Monitor topics within Pub/Sub](https://cloud.google.com/pubsub/docs/monitor-topic) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.config.messagestoragepolicy.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.config.messagestoragepolicy.md new file mode 100644 index 000000000..e3b212e8c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.config.messagestoragepolicy.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.pubsubService.topic.config.messagestoragepolicy +id: gcp.project.pubsubService.topic.config.messagestoragepolicy +sidebar_label: gcp.project.pubsubService.topic.config.messagestoragepolicy +displayed_sidebar: MQL +description: GCP Pub/Sub topic message storage policy +--- + +# gcp.project.pubsubService.topic.config.messagestoragepolicy + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub topic message storage policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ---------------- | -------------------------------------------------------------------------------- | +| configId | string | Parent configuration ID | +| allowedPersistenceRegions | []string | List of GCP regions where messages published to the topic can persist in storage | + +**References** + +- [Monitor topics within Pub/Sub](https://cloud.google.com/pubsub/docs/monitor-topic) diff --git a/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.md b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.md new file mode 100644 index 000000000..10036578f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.pubsubservice.topic.md @@ -0,0 +1,29 @@ +--- +title: gcp.project.pubsubService.topic +id: gcp.project.pubsubService.topic +sidebar_label: gcp.project.pubsubService.topic +displayed_sidebar: MQL +description: GCP Pub/Sub topic +--- + +# gcp.project.pubsubService.topic + +**Supported platform** + +- gcp + +**Description** + +GCP Pub/Sub topic + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------------------------- | ------------------- | +| projectId | string | Project ID | +| name | string | Topic name | +| config | [gcp.project.pubsubService.topic.config](gcp.project.pubsubservice.topic.config.md) | Topic configuration | + +**References** + +- [Monitor topics within Pub/Sub](https://cloud.google.com/pubsub/docs/monitor-topic) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.database.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.database.md new file mode 100644 index 000000000..d987b922d --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.database.md @@ -0,0 +1,32 @@ +--- +title: gcp.project.sqlService.instance.database +id: gcp.project.sqlService.instance.database +sidebar_label: gcp.project.sqlService.instance.database +displayed_sidebar: MQL +description: GCP Cloud SQL instance database +--- + +# gcp.project.sqlService.instance.database + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance database + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ------ | ------------------------------ | +| projectId | string | Project ID | +| charset | string | Character set value | +| collation | string | Collation | +| instance | string | Name of the Cloud SQL instance | +| name | string | Name of the database | +| sqlserverDatabaseDetails | dict | SQL Server database details | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.ipmapping.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.ipmapping.md new file mode 100644 index 000000000..1285c9b9e --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.ipmapping.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.sqlService.instance.ipMapping +id: gcp.project.sqlService.instance.ipMapping +sidebar_label: gcp.project.sqlService.instance.ipMapping +displayed_sidebar: MQL +description: GCP Cloud SQL instance IP mapping +--- + +# gcp.project.sqlService.instance.ipMapping + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance IP mapping + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ------------------------------ | +| id | string | Internal ID | +| ipAddress | string | Assigned IP address | +| timeToRetire | time | Due time for this IP to retire | +| type | string | Type of this IP address | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.md new file mode 100644 index 000000000..4324500c0 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.md @@ -0,0 +1,51 @@ +--- +title: gcp.project.sqlService.instance +id: gcp.project.sqlService.instance +sidebar_label: gcp.project.sqlService.instance +displayed_sidebar: MQL +description: GCP Cloud SQL instance +--- + +# gcp.project.sqlService.instance + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | +| projectId | string | Project ID | +| availableMaintenanceVersions | []string | All maintenance versions applicable on the instance | +| backendType | string | Backend type | +| connectionName | string | Connection name of the instance used in connection strings | +| created | time | Creation timestamp | +| currentDiskSize | int | Deprecated | +| databaseInstalledVersion | string | Current database version running on the instance | +| databaseVersion | string | Database engine type and version | +| diskEncryptionConfiguration | dict | Disk encryption configuration | +| diskEncryptionStatus | dict | Disk encryption status | +| failoverReplica | dict | Name and status of the failover replica | +| gceZone | string | Compute Engine zone that the instance is currently serviced from | +| instanceType | string | Instance type | +| ipAddresses | [][gcp.project.sqlService.instance.ipMapping](gcp.project.sqlservice.instance.ipmapping.md) | Assigned IP addresses | +| maintenanceVersion | string | Current software version on the instance | +| masterInstanceName | string | Name of the instance that acts as primary in the replica | +| maxDiskSize | int | Maximum disk size in bytes | +| name | string | Instance name | +| project | string | This is deprecated; use projectId instead. | +| region | string | Region | +| replicaNames | []string | Replicas | +| settings | [gcp.project.sqlService.instance.settings](gcp.project.sqlservice.instance.settings.md) | Settings | +| serviceAccountEmailAddress | string | Service account email address | +| state | string | Instance state | +| databases | [][gcp.project.sqlService.instance.database](gcp.project.sqlservice.instance.database.md) | List of the databases in the current SQL instance | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.backupconfiguration.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.backupconfiguration.md new file mode 100644 index 000000000..df5bc7394 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.backupconfiguration.md @@ -0,0 +1,34 @@ +--- +title: gcp.project.sqlService.instance.settings.backupconfiguration +id: gcp.project.sqlService.instance.settings.backupconfiguration +sidebar_label: gcp.project.sqlService.instance.settings.backupconfiguration +displayed_sidebar: MQL +description: GCP Cloud SQL instance settings backup configuration +--- + +# gcp.project.sqlService.instance.settings.backupconfiguration + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance settings backup configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | ------ | -------------------------------------------------------------------------------------- | +| id | string | Internal ID | +| backupRetentionSettings | dict | Backup retention settings | +| binaryLogEnabled | bool | Whether binary log is enabled | +| enabled | bool | Whether this configuration is enabled | +| location | string | Location of the backup | +| pointInTimeRecoveryEnabled | bool | Whether point-in-time recovery is enabled | +| startTime | string | Start time for the daily backup configuration (in UTC timezone, in the 24 hour format) | +| transactionLogRetentionDays | int | Number of days of transaction logs retained for point-in-time restore | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.denymaintenanceperiod.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.denymaintenanceperiod.md new file mode 100644 index 000000000..39431cfb8 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.denymaintenanceperiod.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.sqlService.instance.settings.denyMaintenancePeriod +id: gcp.project.sqlService.instance.settings.denyMaintenancePeriod +sidebar_label: gcp.project.sqlService.instance.settings.denyMaintenancePeriod +displayed_sidebar: MQL +description: GCP Cloud SQL instance settings deny maintenance period +--- + +# gcp.project.sqlService.instance.settings.denyMaintenancePeriod + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance settings deny maintenance period + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ------------------------------------------------------------ | +| id | string | Internal ID | +| endDate | string | Deny maintenance period end date | +| startDate | string | Deny maintenance period start date | +| time | string | Time in UTC when the deny maintenance period starts and ends | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.ipconfiguration.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.ipconfiguration.md new file mode 100644 index 000000000..0acc8799c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.ipconfiguration.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.sqlService.instance.settings.ipConfiguration +id: gcp.project.sqlService.instance.settings.ipConfiguration +sidebar_label: gcp.project.sqlService.instance.settings.ipConfiguration +displayed_sidebar: MQL +description: GCP Cloud SQL instance settings IP configuration +--- + +# gcp.project.sqlService.instance.settings.ipConfiguration + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance settings IP configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | -------------- | ---------------------------------------------------------------------------------------------- | +| id | string | Internal ID | +| allocatedIpRange | string | Name of the allocated IP range for the private IP Cloud SQL instance | +| authorizedNetworks | []dict | List of external networks that are allowed to connect to the instance using the IP | +| ipv4Enabled | bool | Whether the instance is assigned a public IP address | +| privateNetwork | string | Resource link for the VPC network from which the private IPs can access the Cloud SQL instance | +| requireSsl | bool | Whether SSL connections over IP are enforced | diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.maintenancewindow.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.maintenancewindow.md new file mode 100644 index 000000000..79340ff73 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.maintenancewindow.md @@ -0,0 +1,30 @@ +--- +title: gcp.project.sqlService.instance.settings.maintenanceWindow +id: gcp.project.sqlService.instance.settings.maintenanceWindow +sidebar_label: gcp.project.sqlService.instance.settings.maintenanceWindow +displayed_sidebar: MQL +description: GCP Cloud SQL instance settings maintenance window +--- + +# gcp.project.sqlService.instance.settings.maintenanceWindow + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance settings maintenance window + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------------------------------------ | +| id | string | Internal ID | +| day | int | Day of week (1-7, 1 is Monday) | +| hour | int | Hour of day (0 to 23) | +| updateTrack | string | Maintenance time setting: canary (earlier) or stable (later) | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.md new file mode 100644 index 000000000..7b088048f --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.md @@ -0,0 +1,55 @@ +--- +title: gcp.project.sqlService.instance.settings +id: gcp.project.sqlService.instance.settings +sidebar_label: gcp.project.sqlService.instance.settings +displayed_sidebar: MQL +description: GCP Cloud SQL instance settings +--- + +# gcp.project.sqlService.instance.settings + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| projectId | string | Project ID | +| instanceName | string | Instance name | +| activationPolicy | string | When the instance is activated | +| activeDirectoryConfig | dict | Entra ID (formerly Active Directory) configuration (relevant only for Cloud SQL for SQL Server) | +| availabilityType | string | Availability type | +| backupConfiguration | [gcp.project.sqlService.instance.settings.backupconfiguration](gcp.project.sqlservice.instance.settings.backupconfiguration.md) | Daily backup configuration for the instance | +| collation | string | Name of the server collation | +| connectorEnforcement | string | Whether connections must use Cloud SQL connectors | +| crashSafeReplicationEnabled | bool | Whether database flags for crash-safe replication are enabled | +| dataDiskSizeGb | int | Size of the data disk, in GB | +| dataDiskType | string | Type of the data disk | +| databaseFlags | map[string]string | Database flags passed to the instance at startup | +| databaseReplicationEnabled | bool | Whether replication is enabled | +| deletionProtectionEnabled | bool | Whether to protect against accidental instance deletion | +| denyMaintenancePeriods | [][gcp.project.sqlService.instance.settings.denyMaintenancePeriod](gcp.project.sqlservice.instance.settings.denymaintenanceperiod.md) | Deny maintenance periods | +| insightsConfig | dict | Insights configuration | +| ipConfiguration | [gcp.project.sqlService.instance.settings.ipConfiguration](gcp.project.sqlservice.instance.settings.ipconfiguration.md) | IP management settings | +| locationPreference | dict | Location preference settings | +| maintenanceWindow | [gcp.project.sqlService.instance.settings.maintenanceWindow](gcp.project.sqlservice.instance.settings.maintenancewindow.md) | Maintenance window | +| passwordValidationPolicy | [gcp.project.sqlService.instance.settings.passwordValidationPolicy](gcp.project.sqlservice.instance.settings.passwordvalidationpolicy.md) | Local user password validation policy | +| pricingPlan | string | Pricing plan | +| replicationType | string | Replication type | +| settingsVersion | int | Instance settings version | +| sqlServerAuditConfig | dict | SQL-server-specific audit configuration | +| storageAutoResize | bool | Configuration to increase storage size automatically | +| storageAutoResizeLimit | int | Maximum size to which storage capacity can be automatically increased | +| tier | string | Service tier for this instance | +| timeZone | string | Server timezone | +| userLabels | map[string]string | User-provided labels | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.passwordvalidationpolicy.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.passwordvalidationpolicy.md new file mode 100644 index 000000000..7446f7d27 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.instance.settings.passwordvalidationpolicy.md @@ -0,0 +1,33 @@ +--- +title: gcp.project.sqlService.instance.settings.passwordValidationPolicy +id: gcp.project.sqlService.instance.settings.passwordValidationPolicy +sidebar_label: gcp.project.sqlService.instance.settings.passwordValidationPolicy +displayed_sidebar: MQL +description: GCP Cloud SQL instance settings password validation policy +--- + +# gcp.project.sqlService.instance.settings.passwordValidationPolicy + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL instance settings password validation policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ------ | -------------------------------------------------------- | +| id | string | Internal ID | +| complexity | string | Password complexity | +| disallowUsernameSubstring | bool | Whether username is forbidden as a part of the password | +| enabledPasswordPolicy | bool | Whether the password policy is enabled | +| minLength | int | Minimum number of characters required in passwords | +| passwordChangeInterval | string | Minimum interval after which the password can be changed | +| reuseInterval | int | Number of previous passwords that cannot be reused | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.sqlservice.md b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.md new file mode 100644 index 000000000..e44dc52a2 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.sqlservice.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.sqlService +id: gcp.project.sqlService +sidebar_label: gcp.project.sqlService +displayed_sidebar: MQL +description: GCP Cloud SQL resources +--- + +# gcp.project.sqlService + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud SQL resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------------------------------------------------------- | -------------------------------------------------- | +| projectId | string | Project ID | +| instances | [][gcp.project.sqlService.instance](gcp.project.sqlservice.instance.md) | List of Cloud SQL instances in the current project | + +**References** + +- [Cloud SQL overview](https://cloud.google.com/sql/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.project.storageservice.bucket.md b/docs/mql/resources/gcp-pack/gcp.project.storageservice.bucket.md new file mode 100644 index 000000000..7673cabd2 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.storageservice.bucket.md @@ -0,0 +1,39 @@ +--- +title: gcp.project.storageService.bucket +id: gcp.project.storageService.bucket +sidebar_label: gcp.project.storageService.bucket +displayed_sidebar: MQL +description: GCP Cloud Storage bucket +--- + +# gcp.project.storageService.bucket + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Storage bucket + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------------------------------------------------- | --------------------- | +| id | string | Bucket ID | +| projectId | string | Project ID | +| name | string | Bucket name | +| labels | map[string]string | User-defined labels | +| location | string | Bucket location | +| locationType | string | Bucket location type | +| projectNumber | string | Project number | +| storageClass | string | Default storage class | +| created | time | Creation timestamp | +| updated | time | Update timestamp | +| iamPolicy | [][gcp.resourcemanager.binding](gcp.resourcemanager.binding.md) | IAM policy | +| iamConfiguration | dict | IAM configuration | +| retentionPolicy | dict | Retention policy | + +**References** + +- [About Cloud Storage buckets](https://cloud.google.com/storage/docs/buckets) diff --git a/docs/mql/resources/gcp-pack/gcp.project.storageservice.md b/docs/mql/resources/gcp-pack/gcp.project.storageservice.md new file mode 100644 index 000000000..af321c5a5 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.project.storageservice.md @@ -0,0 +1,28 @@ +--- +title: gcp.project.storageService +id: gcp.project.storageService +sidebar_label: gcp.project.storageService +displayed_sidebar: MQL +description: GCP Cloud Storage +--- + +# gcp.project.storageService + +**Supported platform** + +- gcp + +**Description** + +GCP Cloud Storage + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------------------------- | ---------------- | +| projectId | string | Project ID | +| buckets | [][gcp.project.storageService.bucket](gcp.project.storageservice.bucket.md) | List all buckets | + +**References** + +- [Product overview of Cloud Storage](https://cloud.google.com/storage/docs/introduction) diff --git a/docs/mql/resources/gcp-pack/gcp.projects.md b/docs/mql/resources/gcp-pack/gcp.projects.md new file mode 100644 index 000000000..368f11720 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.projects.md @@ -0,0 +1,33 @@ +--- +title: gcp.projects +id: gcp.projects +sidebar_label: gcp.projects +displayed_sidebar: MQL +description: GCP projects +--- + +# gcp.projects + +**Supported platform** + +- gcp + +**Description** + +GCP projects + +**List** + +[]gcp.project + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | --------------------------------------- | -------------------------------------------------- | +| parentId | string | Parent ID | +| children | [][gcp.project](gcp.project.md) | List of the children projects only (non-recursive) | +| list | [][gcp.project](gcp.project.md) | | + +**References** + +- [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) diff --git a/docs/mql/resources/gcp-pack/gcp.recommendation.md b/docs/mql/resources/gcp-pack/gcp.recommendation.md new file mode 100644 index 000000000..96c53c99c --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.recommendation.md @@ -0,0 +1,38 @@ +--- +title: gcp.recommendation +id: gcp.recommendation +sidebar_label: gcp.recommendation +displayed_sidebar: MQL +description: GCP recommendation and suggested action +--- + +# gcp.recommendation + +**Supported platform** + +- gcp + +**Description** + +GCP recommendation and suggested action + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | -------------- | ------------------------------------------------------------------- | +| id | string | ID of recommendation | +| projectId | string | Project ID | +| zoneName | string | Zone name | +| name | string | Description of the recommendation | +| recommender | string | Recommender | +| primaryImpact | dict | The primary impact that this recommendation can have | +| additionalImpact | []dict | Optional set of additional impact that this recommendation can have | +| content | dict | Recommended changes to resources | +| category | string | Category of primary impact | +| priority | string | Recommendation's priority | +| lastRefreshTime | time | Last time this recommendation was refreshed | +| state | dict | State and metadata of recommendation | + +**References** + +- [Recommendations](https://cloud.google.com/recommender/docs/key-concepts) diff --git a/docs/mql/resources/gcp-pack/gcp.resourcemanager.binding.md b/docs/mql/resources/gcp-pack/gcp.resourcemanager.binding.md new file mode 100644 index 000000000..adfeb9670 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.resourcemanager.binding.md @@ -0,0 +1,29 @@ +--- +title: gcp.resourcemanager.binding +id: gcp.resourcemanager.binding +sidebar_label: gcp.resourcemanager.binding +displayed_sidebar: MQL +description: GCP Resource Manager binding +--- + +# gcp.resourcemanager.binding + +**Supported platform** + +- gcp + +**Description** + +GCP Resource Manager binding + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ---------------- | -------------------------------------------------------- | +| id | string | Internal ID | +| members | []string | Principals requesting access for a Google Cloud resource | +| role | string | Role assigned to the list of members or principals | + +**References** + +- [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) diff --git a/docs/mql/resources/gcp-pack/gcp.service.md b/docs/mql/resources/gcp-pack/gcp.service.md new file mode 100644 index 000000000..adffd8217 --- /dev/null +++ b/docs/mql/resources/gcp-pack/gcp.service.md @@ -0,0 +1,28 @@ +--- +title: gcp.service +id: gcp.service +sidebar_label: gcp.service +displayed_sidebar: MQL +description: GCP service +--- + +# gcp.service + +**Supported platform** + +- gcp + +**Description** + +GCP service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------------ | +| projectId | string | Project ID | +| name | string | Service name | +| parentName | string | Service parent name | +| title | string | Service title | +| state | string | Service state | +| enabled | bool | Whether the service is enabled | diff --git a/docs/mql/resources/github-pack/README.md b/docs/mql/resources/github-pack/README.md new file mode 100644 index 000000000..a5ea4a2ea --- /dev/null +++ b/docs/mql/resources/github-pack/README.md @@ -0,0 +1,38 @@ +--- +title: GitHub Resource Pack - MQL Resources +id: github.pack +sidebar_label: GitHub Resource Pack +displayed_sidebar: MQL +description: The GitHub resource pack lets you use MQL to query and assess the security of your GitHub organization and repositories. +--- + +# Mondoo GitHub Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ----------------------------------------------------- | ----------------------------------- | +| [git.commit](git.commit.md) | Git commit | +| [git.commitAuthor](git.commitauthor.md) | Git commit author | +| [git.gpgSignature](git.gpgsignature.md) | Git GPG signature | +| [github](github.md) | | +| [github.branch](github.branch.md) | GitHub repository branch | +| [github.branchprotection](github.branchprotection.md) | GitHub repository branch protection | +| [github.collaborator](github.collaborator.md) | GitHub collaborator | +| [github.commit](github.commit.md) | GitHub repository commit | +| [github.file](github.file.md) | GitHub repository file | +| [github.gist](github.gist.md) | GitHub gist | +| [github.gistfile](github.gistfile.md) | GitHub gist file | +| [github.installation](github.installation.md) | GitHub application installation | +| [github.issue](github.issue.md) | GitHub issue | +| [github.license](github.license.md) | GitHub license | +| [github.mergeRequest](github.mergerequest.md) | GitHub repository pull request | +| [github.organization](github.organization.md) | GitHub organization | +| [github.package](github.package.md) | GitHub package | +| [github.release](github.release.md) | GitHub release | +| [github.repository](github.repository.md) | GitHub repository | +| [github.review](github.review.md) | GitHub repository review | +| [github.team](github.team.md) | GitHub team | +| [github.user](github.user.md) | GitHub user | +| [github.webhook](github.webhook.md) | GitHub webhook | +| [github.workflow](github.workflow.md) | GitHub workflow | diff --git a/docs/mql/resources/github-pack/git.commit.md b/docs/mql/resources/github-pack/git.commit.md new file mode 100644 index 000000000..147f3102c --- /dev/null +++ b/docs/mql/resources/github-pack/git.commit.md @@ -0,0 +1,23 @@ +--- +title: git.commit +id: git.commit +sidebar_label: git.commit +displayed_sidebar: MQL +description: Git commit +--- + +# git.commit + +**Description** + +Git commit + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | --------------------------------------- | ----------------------------------------------- | +| sha | string | Git commit SHA | +| message | string | Git commit message | +| author | [git.commitAuthor](git.commitauthor.md) | Git commit author | +| committer | [git.commitAuthor](git.commitauthor.md) | Git commit committer | +| signatureVerification | [git.gpgSignature](git.gpgsignature.md) | The GPG signature of the commit if there is one | diff --git a/docs/mql/resources/github-pack/git.commitauthor.md b/docs/mql/resources/github-pack/git.commitauthor.md new file mode 100644 index 000000000..f95a0c6dd --- /dev/null +++ b/docs/mql/resources/github-pack/git.commitauthor.md @@ -0,0 +1,22 @@ +--- +title: git.commitAuthor +id: git.commitAuthor +sidebar_label: git.commitAuthor +displayed_sidebar: MQL +description: Git commit author +--- + +# git.commitAuthor + +**Description** + +Git commit author + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | ------ | -------------- | +| sha | string | Author shasum | +| name | string | Author name | +| email | string | Author email | +| date | time | Date of commit | diff --git a/docs/mql/resources/github-pack/git.gpgsignature.md b/docs/mql/resources/github-pack/git.gpgsignature.md new file mode 100644 index 000000000..7af884c09 --- /dev/null +++ b/docs/mql/resources/github-pack/git.gpgsignature.md @@ -0,0 +1,23 @@ +--- +title: git.gpgSignature +id: git.gpgSignature +sidebar_label: git.gpgSignature +displayed_sidebar: MQL +description: Git GPG signature +--- + +# git.gpgSignature + +**Description** + +Git GPG signature + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | --------------------------------- | +| sha | string | GPG signature shasum | +| reason | string | GPG signature reason | +| verified | bool | Whether GPG signature is verified | +| payload | string | GPG signature payload | +| signature | string | GPG signature | diff --git a/docs/mql/resources/github-pack/github.branch.md b/docs/mql/resources/github-pack/github.branch.md new file mode 100644 index 000000000..f8852550a --- /dev/null +++ b/docs/mql/resources/github-pack/github.branch.md @@ -0,0 +1,26 @@ +--- +title: github.branch +id: github.branch +sidebar_label: github.branch +displayed_sidebar: MQL +description: GitHub repository branch +--- + +# github.branch + +**Description** + +GitHub repository branch + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------- | ---------------------------------------- | +| name | string | Repository branch name | +| protected | bool | Deprecated; use isProtected instead | +| isProtected | bool | Whether branch protection is enabled | +| headCommit | [github.commit](github.commit.md) | Repository branch HEAD commit | +| protectionRules | [github.branchprotection](github.branchprotection.md) | Repository branch protection rules | +| repoName | string | Repository branch repository name | +| owner | [github.user](github.user.md) | Repository branch owner | +| isDefault | bool | Whether the branch is the default branch | diff --git a/docs/mql/resources/github-pack/github.branchprotection.md b/docs/mql/resources/github-pack/github.branchprotection.md new file mode 100644 index 000000000..4ec1bae9a --- /dev/null +++ b/docs/mql/resources/github-pack/github.branchprotection.md @@ -0,0 +1,28 @@ +--- +title: github.branchprotection +id: github.branchprotection +sidebar_label: github.branchprotection +displayed_sidebar: MQL +description: GitHub repository branch protection +--- + +# github.branchprotection + +**Description** + +GitHub repository branch protection + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------ | ------ | ---------------------------------------------- | +| id | string | Repository branch protection ID | +| requiredStatusChecks | dict | Require status checks to pass before merging | +| requiredPullRequestReviews | dict | Require a pull request before merging | +| requiredConversationResolution | dict | Require conversation resolution before merging | +| requiredSignatures | bool | Require signed commits | +| requireLinearHistory | dict | Require linear history | +| enforceAdmins | dict | Include administrators | +| restrictions | dict | Restrict who can push to matching branches | +| allowForcePushes | dict | Allow force pushes | +| allowDeletions | dict | Allow deletions | diff --git a/docs/mql/resources/github-pack/github.collaborator.md b/docs/mql/resources/github-pack/github.collaborator.md new file mode 100644 index 000000000..2958c2ebc --- /dev/null +++ b/docs/mql/resources/github-pack/github.collaborator.md @@ -0,0 +1,21 @@ +--- +title: github.collaborator +id: github.collaborator +sidebar_label: github.collaborator +displayed_sidebar: MQL +description: GitHub collaborator +--- + +# github.collaborator + +**Description** + +GitHub collaborator + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------- | ------------------------------- | +| id | int | Collaborator ID | +| user | [github.user](github.user.md) | Collaborator's user information | +| permissions | []string | Collaborator's permissions | diff --git a/docs/mql/resources/github-pack/github.commit.md b/docs/mql/resources/github-pack/github.commit.md new file mode 100644 index 000000000..4cc29ffe0 --- /dev/null +++ b/docs/mql/resources/github-pack/github.commit.md @@ -0,0 +1,26 @@ +--- +title: github.commit +id: github.commit +sidebar_label: github.commit +displayed_sidebar: MQL +description: GitHub repository commit +--- + +# github.commit + +**Description** + +GitHub repository commit + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------------------- | ---------------------- | +| owner | string | Commit owner | +| repository | string | Commit repository | +| sha | string | Commit SHA | +| url | string | Commit URL | +| author | [github.user](github.user.md) | Commit author | +| committer | [github.user](github.user.md) | Commit committer | +| commit | [git.commit](git.commit.md) | Commit resource object | +| stats | dict | Commit stats | diff --git a/docs/mql/resources/github-pack/github.file.md b/docs/mql/resources/github-pack/github.file.md new file mode 100644 index 000000000..471532bf6 --- /dev/null +++ b/docs/mql/resources/github-pack/github.file.md @@ -0,0 +1,27 @@ +--- +title: github.file +id: github.file +sidebar_label: github.file +displayed_sidebar: MQL +description: GitHub repository file +--- + +# github.file + +**Description** + +GitHub repository file + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------------------------------- | ------------------------------ | +| path | string | File path | +| name | string | File name | +| type | string | File type | +| sha | string | File shasum | +| isBinary | bool | Whether the file is a binary | +| files | [][github.file](github.file.md) | List of files in the directory | +| ownerName | string | File owner | +| repoName | string | File repository name | +| content | string | File content | diff --git a/docs/mql/resources/github-pack/github.gist.md b/docs/mql/resources/github-pack/github.gist.md new file mode 100644 index 000000000..12415d623 --- /dev/null +++ b/docs/mql/resources/github-pack/github.gist.md @@ -0,0 +1,25 @@ +--- +title: github.gist +id: github.gist +sidebar_label: github.gist +displayed_sidebar: MQL +description: GitHub gist +--- + +# github.gist + +**Description** + +GitHub gist + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------------------------- | -------------------------- | +| id | string | Gist ID | +| description | string | Gist description | +| createdAt | time | Gist create time | +| updatedAt | time | Gist update time | +| owner | [github.user](github.user.md) | Gist owner | +| public | bool | Whether the gist is public | +| files | [][github.gistfile](github.gistfile.md) | Gist files | diff --git a/docs/mql/resources/github-pack/github.gistfile.md b/docs/mql/resources/github-pack/github.gistfile.md new file mode 100644 index 000000000..ae150b3cb --- /dev/null +++ b/docs/mql/resources/github-pack/github.gistfile.md @@ -0,0 +1,25 @@ +--- +title: github.gistfile +id: github.gistfile +sidebar_label: github.gistfile +displayed_sidebar: MQL +description: GitHub gist file +--- + +# github.gistfile + +**Description** + +GitHub gist file + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ------------------ | +| gistId | string | Gist ID | +| filename | string | Gist file name | +| type | string | Gist file type | +| language | string | Gist file language | +| rawUrl | string | Gist file raw URL | +| size | int | Gist file size | +| content | string | Gist file content | diff --git a/docs/mql/resources/github-pack/github.installation.md b/docs/mql/resources/github-pack/github.installation.md new file mode 100644 index 000000000..b6d096c64 --- /dev/null +++ b/docs/mql/resources/github-pack/github.installation.md @@ -0,0 +1,23 @@ +--- +title: github.installation +id: github.installation +sidebar_label: github.installation +displayed_sidebar: MQL +description: GitHub application installation +--- + +# github.installation + +**Description** + +GitHub application installation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ------------------------------------ | +| id | int | Application installation ID | +| appId | int | Application configured ID | +| appSlug | string | Application configured slug | +| createdAt | time | Application installation create time | +| updatedAt | time | Application installation update time | diff --git a/docs/mql/resources/github-pack/github.issue.md b/docs/mql/resources/github-pack/github.issue.md new file mode 100644 index 000000000..ef55ea7aa --- /dev/null +++ b/docs/mql/resources/github-pack/github.issue.md @@ -0,0 +1,29 @@ +--- +title: github.issue +id: github.issue +sidebar_label: github.issue +displayed_sidebar: MQL +description: GitHub issue +--- + +# github.issue + +**Description** + +GitHub issue + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------------------------------- | ----------------------------------- | +| id | int | Issue ID | +| number | int | Issue number | +| title | string | Issue title | +| state | string | Issue state | +| body | string | Issue body | +| url | string | Issue URL | +| createdAt | time | Issue create time | +| updatedAt | time | Issue update time | +| closedAt | time | Issue closed time | +| assignees | [][github.user](github.user.md) | Users to whom the issue is assigned | +| closedBy | [github.user](github.user.md) | User who closed the issue | diff --git a/docs/mql/resources/github-pack/github.license.md b/docs/mql/resources/github-pack/github.license.md new file mode 100644 index 000000000..2111358a3 --- /dev/null +++ b/docs/mql/resources/github-pack/github.license.md @@ -0,0 +1,22 @@ +--- +title: github.license +id: github.license +sidebar_label: github.license +displayed_sidebar: MQL +description: GitHub license +--- + +# github.license + +**Description** + +GitHub license + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | --------------- | +| key | string | License key | +| name | string | License name | +| url | string | License URL | +| spdxId | string | License spdx ID | diff --git a/docs/mql/resources/github-pack/github.md b/docs/mql/resources/github-pack/github.md new file mode 100644 index 000000000..535e03730 --- /dev/null +++ b/docs/mql/resources/github-pack/github.md @@ -0,0 +1,8 @@ +--- +title: github +id: github +sidebar_label: github +displayed_sidebar: MQL +--- + +# github diff --git a/docs/mql/resources/github-pack/github.mergerequest.md b/docs/mql/resources/github-pack/github.mergerequest.md new file mode 100644 index 000000000..5ff1565ae --- /dev/null +++ b/docs/mql/resources/github-pack/github.mergerequest.md @@ -0,0 +1,29 @@ +--- +title: github.mergeRequest +id: github.mergeRequest +sidebar_label: github.mergeRequest +displayed_sidebar: MQL +description: GitHub repository pull request +--- + +# github.mergeRequest + +**Description** + +GitHub repository pull request + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------------------- | ----------------------------------- | +| id | int | Pull request ID | +| number | int | Pull request number | +| state | string | Pull request state | +| createdAt | time | Pull request creation time (in UTC) | +| labels | []dict | Pull request labels | +| title | string | Pull request title | +| owner | [github.user](github.user.md) | Pull request owner | +| assignees | [][github.user](github.user.md) | Pull request assignees | +| commits | [][github.commit](github.commit.md) | Pull request commits | +| reviews | [][github.review](github.review.md) | Pull request reviews | +| repoName | string | Pull request repository name | diff --git a/docs/mql/resources/github-pack/github.organization.md b/docs/mql/resources/github-pack/github.organization.md new file mode 100644 index 000000000..d4fb3f8f0 --- /dev/null +++ b/docs/mql/resources/github-pack/github.organization.md @@ -0,0 +1,58 @@ +--- +title: github.organization +id: github.organization +sidebar_label: github.organization +displayed_sidebar: MQL +description: GitHub organization +--- + +# github.organization + +**Description** + +GitHub organization + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| login | string | Organization login | +| id | int | Organization ID | +| nodeId | string | Organization global node ID | +| name | string | Organization name | +| company | string | Organization company | +| blog | string | Organization blog | +| location | string | Organization location | +| email | string | Organization email | +| twitterUsername | string | Organization Twitter handle | +| avatarUrl | string | Organization profile picture URL | +| followers | int | Organization's number of followers | +| following | int | Number of organizations the organization is following | +| description | string | Organization description | +| createdAt | time | Create time for the organization | +| updatedAt | time | Update time for the organization | +| totalPrivateRepos | int | Number of private repositories | +| ownedPrivateRepos | int | Number of owned private repositories for the organization | +| privateGists | int | Number of private gists | +| diskUsage | int | Disk usage for the organization | +| collaborators | int | Number of collaborators for the organization | +| billingEmail | string | Organization billing email | +| plan | dict | GitHub plan the organization is subscribed to | +| twoFactorRequirementEnabled | bool | Whether two-factor authentication is required for all members. This value will be null if the API token does not have owner access on the organization. | +| isVerified | bool | Whether the organization is verified by GitHub | +| defaultRepositoryPermission | string | The default repository permission | +| membersCanCreateRepositories | bool | Whether members can create repositories | +| membersCanCreatePublicRepositories | bool | Whether members can create public repositories | +| membersCanCreatePrivateRepositories | bool | Whether members can create private repositories | +| membersCanCreateInternalRepositories | bool | Whether members can create internal repositories | +| membersCanCreatePages | bool | Whether members can create pages | +| membersCanCreatePublicPages | bool | Whether members can create public pages | +| membersCanCreatePrivatePages | bool | Whether members can create private pages | +| membersCanForkPrivateRepos | bool | Whether members can fork private repositories to their own GitHub account | +| owners | [][github.user](github.user.md) | List of users that are part of the owners group | +| members | [][github.user](github.user.md) | List of users that are part of the members group | +| teams | [][github.team](github.team.md) | List of users that are part of the teams group | +| repositories | [][github.repository](github.repository.md) | List of repositories | +| installations | [][github.installation](github.installation.md) | List of GitHub installations | +| webhooks | [][github.webhook](github.webhook.md) | List of webhooks | +| packages | [][github.package](github.package.md) | List of packages | diff --git a/docs/mql/resources/github-pack/github.package.md b/docs/mql/resources/github-pack/github.package.md new file mode 100644 index 000000000..d318bf583 --- /dev/null +++ b/docs/mql/resources/github-pack/github.package.md @@ -0,0 +1,27 @@ +--- +title: github.package +id: github.package +sidebar_label: github.package +displayed_sidebar: MQL +description: GitHub package +--- + +# github.package + +**Description** + +GitHub package + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------- | ------------------------------ | +| id | int | Package ID | +| name | string | Package name | +| packageType | string | Package type | +| owner | [github.user](github.user.md) | Package owner | +| createdAt | time | Package create time | +| updatedAt | time | Package update time | +| versionCount | int | Package version numbers | +| visibility | string | Package visibility | +| repository | [github.repository](github.repository.md) | Package repository information | diff --git a/docs/mql/resources/github-pack/github.release.md b/docs/mql/resources/github-pack/github.release.md new file mode 100644 index 000000000..b68d7bb43 --- /dev/null +++ b/docs/mql/resources/github-pack/github.release.md @@ -0,0 +1,22 @@ +--- +title: github.release +id: github.release +sidebar_label: github.release +displayed_sidebar: MQL +description: GitHub release +--- + +# github.release + +**Description** + +GitHub release + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------------------ | +| url | string | Release url | +| name | string | Release name | +| tagName | string | Release tag name | +| preRelease | bool | Whether the release is a pre-release | diff --git a/docs/mql/resources/github-pack/github.repository.md b/docs/mql/resources/github-pack/github.repository.md new file mode 100644 index 000000000..9de583887 --- /dev/null +++ b/docs/mql/resources/github-pack/github.repository.md @@ -0,0 +1,73 @@ +--- +title: github.repository +id: github.repository +sidebar_label: github.repository +displayed_sidebar: MQL +description: GitHub repository +--- + +# github.repository + +**Description** + +GitHub repository + +**Init** + +github.repository(name string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------------------------------------------------------- | ------------------------------------------------------------------ | +| id | int | can only be used when logged in to github as a user, Repository ID | +| name | string | Repository name | +| fullName | string | Repository full name | +| description | string | Repository description | +| cloneUrl | string | Repository clone URL | +| sshUrl | string | Repository SSH URL | +| homepage | string | Repository homepage | +| topics | []string | Repository topics | +| language | string | Repository language | +| watchersCount | int | Number of users watching the repository | +| forksCount | int | Number of repository forks | +| stargazersCount | int | Number of repository stargazers | +| openIssuesCount | int | Number of open issues in repository | +| createdAt | time | Repository create time | +| updatedAt | time | Repository update time | +| pushedAt | time | Repository pushed time | +| archived | bool | Whether the repository is archived | +| disabled | bool | Whether the repository is disabled | +| private | bool | Whether the repository is private | +| isFork | bool | Whether the repository is a fork | +| visibility | string | Repository visibility | +| allowAutoMerge | bool | Whether the repository allows auto merging | +| allowForking | bool | Whether the repository allows forking | +| allowMergeCommit | bool | Whether the repository allows merge commit | +| allowRebaseMerge | bool | Whether the repository allows rebase merge | +| allowSquashMerge | bool | Whether the repository allows squash merge | +| hasIssues | bool | Whether the repository has open issues | +| hasProjects | bool | Whether the repository has projects | +| hasWiki | bool | Whether the repository has a wiki | +| hasPages | bool | Whether the repository has pages | +| hasDownloads | bool | Whether the repository has downloads | +| hasDiscussions | bool | Whether the repository has discussions | +| isTemplate | bool | Whether the repository is an organization repository template | +| openMergeRequests | [][github.mergeRequest](github.mergerequest.md) | List of open merge requests for the repository | +| closedMergeRequests | [][github.mergeRequest](github.mergerequest.md) | List of closed merge requests for the repository | +| allMergeRequests | [][github.mergeRequest](github.mergerequest.md) | List of all merge requests for the repository | +| branches | [][github.branch](github.branch.md) | List of branches for the repository | +| defaultBranchName | string | Default branch name for the repository | +| commits | [][github.commit](github.commit.md) | List of commits for the repository | +| contributors | [][github.user](github.user.md) | List of contributors for the repository | +| collaborators | [][github.collaborator](github.collaborator.md) | List of collaborators for the repository | +| files | [][github.file](github.file.md) | List of files in the repository | +| releases | [][github.release](github.release.md) | List of releases for the repository | +| owner | [github.user](github.user.md) | Repository owner | +| webhooks | [][github.webhook](github.webhook.md) | List of webhooks for the repository | +| workflows | [][github.workflow](github.workflow.md) | List of workflows for the repository | +| forks | [][github.repository](github.repository.md) | List of repository forks | +| stargazers | [][github.user](github.user.md) | List of repository stargazers | +| openIssues | [][github.issue](github.issue.md) | List of repository open issues | +| closedIssues | [][github.issue](github.issue.md) | List of repository closed issues | +| license | [github.license](github.license.md) | Repository license | diff --git a/docs/mql/resources/github-pack/github.review.md b/docs/mql/resources/github-pack/github.review.md new file mode 100644 index 000000000..93d3e736f --- /dev/null +++ b/docs/mql/resources/github-pack/github.review.md @@ -0,0 +1,22 @@ +--- +title: github.review +id: github.review +sidebar_label: github.review +displayed_sidebar: MQL +description: GitHub repository review +--- + +# github.review + +**Description** + +GitHub repository review + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------- | ----------------------- | +| url | string | Review URL | +| state | string | Review state | +| authorAssociation | string | Author association | +| user | [github.user](github.user.md) | Review user information | diff --git a/docs/mql/resources/github-pack/github.team.md b/docs/mql/resources/github-pack/github.team.md new file mode 100644 index 000000000..3afbd66e0 --- /dev/null +++ b/docs/mql/resources/github-pack/github.team.md @@ -0,0 +1,27 @@ +--- +title: github.team +id: github.team +sidebar_label: github.team +displayed_sidebar: MQL +description: GitHub team +--- + +# github.team + +**Description** + +GitHub team + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | --------------------------------------------------- | -------------------------- | +| id | int | Team ID | +| name | string | Team name | +| description | string | Team description | +| slug | string | Team slug | +| privacy | string | Team privacy configuration | +| defaultPermission | string | Team default permission | +| members | [][github.user](github.user.md) | Team members | +| repositories | [][github.repository](github.repository.md) | Team owned repositories | +| organization | [github.organization](github.organization.md) | Team organization | diff --git a/docs/mql/resources/github-pack/github.user.md b/docs/mql/resources/github-pack/github.user.md new file mode 100644 index 000000000..a40957298 --- /dev/null +++ b/docs/mql/resources/github-pack/github.user.md @@ -0,0 +1,35 @@ +--- +title: github.user +id: github.user +sidebar_label: github.user +displayed_sidebar: MQL +description: GitHub user +--- + +# github.user + +**Description** + +GitHub user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ---------------------------- | +| id | int | User ID | +| login | string | User login | +| name | string | User name | +| email | string | User email | +| bio | string | User bio | +| blog | string | User blog URL | +| location | string | User location | +| avatarUrl | string | User profile picture URL | +| followers | int | User followers | +| following | int | User following | +| twitterUsername | string | User Twitter handle | +| createdAt | time | User create time in UTC | +| updatedAt | time | Last user update time in UTC | +| suspendedAt | time | When the user was suspended | +| company | string | User's company | +| repositories | [][github.repository](github.repository.md) | User's repositories | +| gists | [][github.gist](github.gist.md) | User gists | diff --git a/docs/mql/resources/github-pack/github.webhook.md b/docs/mql/resources/github-pack/github.webhook.md new file mode 100644 index 000000000..2d040feac --- /dev/null +++ b/docs/mql/resources/github-pack/github.webhook.md @@ -0,0 +1,24 @@ +--- +title: github.webhook +id: github.webhook +sidebar_label: github.webhook +displayed_sidebar: MQL +description: GitHub webhook +--- + +# github.webhook + +**Description** + +GitHub webhook + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ---------------- | ------------------------------ | +| id | int | Webhook ID | +| name | string | Webhook name | +| url | string | Webhook URL | +| events | []string | List of events for the webhook | +| config | dict | Webhook config | +| active | bool | Whether the webhook is active | diff --git a/docs/mql/resources/github-pack/github.workflow.md b/docs/mql/resources/github-pack/github.workflow.md new file mode 100644 index 000000000..ab4a36c34 --- /dev/null +++ b/docs/mql/resources/github-pack/github.workflow.md @@ -0,0 +1,26 @@ +--- +title: github.workflow +id: github.workflow +sidebar_label: github.workflow +displayed_sidebar: MQL +description: GitHub workflow +--- + +# github.workflow + +**Description** + +GitHub workflow + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------- | ---------------------- | +| id | int | Workflow ID | +| name | string | Workflow name | +| path | string | Workflow path | +| state | string | Workflow state | +| createdAt | time | Workflow create time | +| updatedAt | time | Workflow update time | +| file | [github.file](github.file.md) | Workflow file | +| configuration | dict | Workflow configuration | diff --git a/docs/mql/resources/gitlab-pack/README.md b/docs/mql/resources/gitlab-pack/README.md new file mode 100644 index 000000000..47812ab30 --- /dev/null +++ b/docs/mql/resources/gitlab-pack/README.md @@ -0,0 +1,16 @@ +--- +title: GitLab Resource Pack - MQL Resources +id: gitlab.pack +sidebar_label: GitLab Resource Pack +displayed_sidebar: MQL +description: The GitLab resource pack lets you use MQL to query and assess the security of your GitLab organization and repositories. +--- + +# Mondoo GitLab Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ----------------------------------- | -------------- | +| [gitlab.group](gitlab.group.md) | GitLab group | +| [gitlab.project](gitlab.project.md) | GitLab project | diff --git a/docs/mql/resources/gitlab-pack/gitlab.group.md b/docs/mql/resources/gitlab-pack/gitlab.group.md new file mode 100644 index 000000000..981d1b774 --- /dev/null +++ b/docs/mql/resources/gitlab-pack/gitlab.group.md @@ -0,0 +1,34 @@ +--- +title: gitlab.group +id: gitlab.group +sidebar_label: gitlab.group +displayed_sidebar: MQL +description: GitLab group +--- + +# gitlab.group + +**Maturity** + +experimental + +**Description** + +GitLab group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------ | --------------------------------------------- | -------------------------------------------------------------------------------- | +| id | int | Group ID | +| name | string | Group name | +| path | string | Group path | +| createdAt | time | Create date of the group | +| description | string | Group description | +| webURL | string | URL of the group | +| visibility | string | The group's visibility level: private, internal, or public | +| requireTwoFactorAuthentication | bool | Whether all users in this group are required to set up two-factor authentication | +| preventForkingOutsideGroup | bool | Whether forking projects outside this group is forbidden | +| emailsDisabled | bool | Whether group email notifications are disabled | +| mentionsDisabled | bool | Whether group mentions within issues and merge requests are disabled | +| projects | [][gitlab.project](gitlab.project.md) | List of all projects that belong to the group | diff --git a/docs/mql/resources/gitlab-pack/gitlab.project.md b/docs/mql/resources/gitlab-pack/gitlab.project.md new file mode 100644 index 000000000..3deac57c0 --- /dev/null +++ b/docs/mql/resources/gitlab-pack/gitlab.project.md @@ -0,0 +1,46 @@ +--- +title: gitlab.project +id: gitlab.project +sidebar_label: gitlab.project +displayed_sidebar: MQL +description: GitLab project +--- + +# gitlab.project + +**Maturity** + +experimental + +**Description** + +GitLab project + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------------------------- | ------ | ------------------------------------------------------------------------------ | +| id | int | Project ID | +| name | string | Project name | +| fullName | string | The full name of the project, including the namespace | +| path | string | Project path | +| createdAt | time | Create date of the project | +| description | string | Project description | +| defaultBranch | string | Default Git branch | +| visibility | string | The project's visibility level: private, internal, or public | +| archived | bool | Whether the project is archived | +| mirror | bool | Whether the project is a mirror | +| webURL | string | URL of the project | +| emailsDisabled | bool | Whether project email notifications are disabled | +| allowMergeOnSkippedPipeline | bool | Whether merging merge requests is allowed when a pipeline is skipped | +| onlyAllowMergeIfPipelineSucceeds | bool | Whether merging merge requests is allowed only if the pipelines succeed | +| onlyAllowMergeIfAllDiscussionsAreResolved | bool | Whether merging merge requests is allowed only if all discussions are resolved | +| issuesEnabled | bool | Whether the issues feature is enabled | +| mergeRequestsEnabled | bool | Whether the merge request feature is enabled | +| wikiEnabled | bool | Whether the wiki feature is enabled | +| snippetsEnabled | bool | Whether the snippets feature is enabled | +| containerRegistryEnabled | bool | Whether the container registry feature is enabled | +| serviceDeskEnabled | bool | Whether the Service Desk feature is enabled | +| packagesEnabled | bool | Whether the packages feature is enabled | +| autoDevopsEnabled | bool | Whether the Auto DevOps feature is enabled | +| requirementsEnabled | bool | Whether the requirements feature is enabled | diff --git a/docs/mql/resources/google-workspace-pack/README.md b/docs/mql/resources/google-workspace-pack/README.md new file mode 100644 index 000000000..a859b9681 --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/README.md @@ -0,0 +1,27 @@ +--- +title: Google Workspace Resource Pack - MQL Resources +id: google.workspace.pack +sidebar_label: Google Workspace Resource Pack +displayed_sidebar: MQL +description: The Google Workspace resource pack lets you use MQL to query and assess the security of your Google Workspace identities and configuration. +--- + +# Mondoo Google Workspace Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| --------------------------------------------------------------------- | ------------------------------------------- | +| [googleworkspace](googleworkspace.md) | Google Workspace | +| [googleworkspace.connectedApp](googleworkspace.connectedapp.md) | Google Workspace third-party connected apps | +| [googleworkspace.domain](googleworkspace.domain.md) | Google Workspace domain | +| [googleworkspace.group](googleworkspace.group.md) | Google Workspace group | +| [googleworkspace.member](googleworkspace.member.md) | Google Workspace group member | +| [googleworkspace.orgUnit](googleworkspace.orgunit.md) | Google Workspace organizational unit | +| [googleworkspace.report.activity](googleworkspace.report.activity.md) | Google Workspace app reports activity | +| [googleworkspace.report.apps](googleworkspace.report.apps.md) | Google Workspace apps reports | +| [googleworkspace.report.usage](googleworkspace.report.usage.md) | Google workspace usage report | +| [googleworkspace.report.users](googleworkspace.report.users.md) | Google Workspace user usage reports | +| [googleworkspace.role](googleworkspace.role.md) | Google Workspace role | +| [googleworkspace.token](googleworkspace.token.md) | Google Workspace token | +| [googleworkspace.user](googleworkspace.user.md) | Google Workspace user accounts | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.connectedapp.md b/docs/mql/resources/google-workspace-pack/googleworkspace.connectedapp.md new file mode 100644 index 000000000..52c426cef --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.connectedapp.md @@ -0,0 +1,23 @@ +--- +title: googleworkspace.connectedApp +id: googleworkspace.connectedApp +sidebar_label: googleworkspace.connectedApp +displayed_sidebar: MQL +description: Google Workspace third-party connected apps +--- + +# googleworkspace.connectedApp + +**Description** + +Google Workspace third-party connected apps + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------------------------------------------------- | ------------------------------------------------------------- | +| clientId | string | The unique ID of the application | +| name | string | The application's name | +| scopes | []string | Aggregated scopes across all tokens issued to the application | +| users | [][googleworkspace.user](googleworkspace.user.md) | Google Workspace User that use the 3rd-party application | +| tokens | [][googleworkspace.token](googleworkspace.token.md) | Returns the user-issued tokens to 3rd party applications | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.domain.md b/docs/mql/resources/google-workspace-pack/googleworkspace.domain.md new file mode 100644 index 000000000..b19c9f0bc --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.domain.md @@ -0,0 +1,22 @@ +--- +title: googleworkspace.domain +id: googleworkspace.domain +sidebar_label: googleworkspace.domain +displayed_sidebar: MQL +description: Google Workspace domain +--- + +# googleworkspace.domain + +**Description** + +Google Workspace domain + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | -------------------------------------------- | +| domainName | string | The domain name of the customer | +| isPrimary | bool | Indicates if the domain is a primary domain | +| verified | bool | Indicates the verification state of a domain | +| creationTime | time | Creation time of the domain | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.group.md b/docs/mql/resources/google-workspace-pack/googleworkspace.group.md new file mode 100644 index 000000000..5b73fb525 --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.group.md @@ -0,0 +1,28 @@ +--- +title: googleworkspace.group +id: googleworkspace.group +sidebar_label: googleworkspace.group +displayed_sidebar: MQL +description: Google Workspace group +--- + +# googleworkspace.group + +**Description** + +Google Workspace group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------- | +| id | string | The unique ID of a group | +| name | string | The group's display name | +| email | string | The group's email address | +| description | string | Purpose of the group | +| aliases | []string | A list of a group's alias email addresses | +| directMembersCount | int | The number of users that are direct members of the group | +| adminCreated | bool | Indicates if this group was created by an administrator rather than a user | +| members | [][googleworkspace.member](googleworkspace.member.md) | Retrieve members of the group | +| settings | dict | Group settings | +| securitySettings | dict | Group security settings | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.md b/docs/mql/resources/google-workspace-pack/googleworkspace.md new file mode 100644 index 000000000..c9515748a --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.md @@ -0,0 +1,24 @@ +--- +title: googleworkspace +id: googleworkspace +sidebar_label: googleworkspace +displayed_sidebar: MQL +description: Google Workspace +--- + +# googleworkspace + +**Description** + +Google Workspace + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| orgUnits | [][googleworkspace.orgUnit](googleworkspace.orgunit.md) | Retrieves a list of all organizational units for the Google Workspace account | +| users | [][googleworkspace.user](googleworkspace.user.md) | Retrieves a list of all users for the Google Workspace account | +| domains | [][googleworkspace.domain](googleworkspace.domain.md) | Retrieves a list of domains for the Google Workspace account | +| groups | [][googleworkspace.group](googleworkspace.group.md) | Retrieves a list of all groups for the Google Workspace account | +| roles | [][googleworkspace.role](googleworkspace.role.md) | Retrieves a list of all roles for the Google Workspace account | +| connectedApps | [][googleworkspace.connectedApp](googleworkspace.connectedapp.md) | Retrieves a list of all apps for the Google Workspace account | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.member.md b/docs/mql/resources/google-workspace-pack/googleworkspace.member.md new file mode 100644 index 000000000..8ac1f7deb --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.member.md @@ -0,0 +1,23 @@ +--- +title: googleworkspace.member +id: googleworkspace.member +sidebar_label: googleworkspace.member +displayed_sidebar: MQL +description: Google Workspace group member +--- + +# googleworkspace.member + +**Description** + +Google Workspace group member + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ----------------------------------------------- | --------------------------------- | +| id | string | The unique ID of the group member | +| email | string | The member's email address | +| status | string | Status of member | +| type | string | The type of group member | +| user | [googleworkspace.user](googleworkspace.user.md) | Linked user account | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.orgunit.md b/docs/mql/resources/google-workspace-pack/googleworkspace.orgunit.md new file mode 100644 index 000000000..85f22bc9c --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.orgunit.md @@ -0,0 +1,21 @@ +--- +title: googleworkspace.orgUnit +id: googleworkspace.orgUnit +sidebar_label: googleworkspace.orgUnit +displayed_sidebar: MQL +description: Google Workspace organizational unit +--- + +# googleworkspace.orgUnit + +**Description** + +Google Workspace organizational unit + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ---------------------------------------- | +| id | string | The unique ID of the organizational unit | +| name | string | The organizational unit's path name | +| description | string | Description of the organizational unit | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.report.activity.md b/docs/mql/resources/google-workspace-pack/googleworkspace.report.activity.md new file mode 100644 index 000000000..c20d5289d --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.report.activity.md @@ -0,0 +1,23 @@ +--- +title: googleworkspace.report.activity +id: googleworkspace.report.activity +sidebar_label: googleworkspace.report.activity +displayed_sidebar: MQL +description: Google Workspace app reports activity +--- + +# googleworkspace.report.activity + +**Description** + +Google Workspace app reports activity + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | -------------- | ----------- | +| id | int | | +| ipAddress | string | | +| ownerDomain | string | | +| actor | dict | | +| events | []dict | | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.report.apps.md b/docs/mql/resources/google-workspace-pack/googleworkspace.report.apps.md new file mode 100644 index 000000000..294e0fa3e --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.report.apps.md @@ -0,0 +1,19 @@ +--- +title: googleworkspace.report.apps +id: googleworkspace.report.apps +sidebar_label: googleworkspace.report.apps +displayed_sidebar: MQL +description: Google Workspace apps reports +--- + +# googleworkspace.report.apps + +**Description** + +Google Workspace apps reports + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | ------------------------------------------------------------------------------- | ----------- | +| drive | [][googleworkspace.report.activity](googleworkspace.report.activity.md) | | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.report.usage.md b/docs/mql/resources/google-workspace-pack/googleworkspace.report.usage.md new file mode 100644 index 000000000..cb11f3ff2 --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.report.usage.md @@ -0,0 +1,28 @@ +--- +title: googleworkspace.report.usage +id: googleworkspace.report.usage +sidebar_label: googleworkspace.report.usage +displayed_sidebar: MQL +description: Google workspace usage report +--- + +# googleworkspace.report.usage + +**Description** + +Google workspace usage report + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | -------------- | ----------------------------------------------- | +| customerId | string | The unique identifier of the customer's account | +| entityId | string | Google Workspace entity ID | +| profileId | string | Google Workspace profile identifier | +| type | string | Entity type | +| userEmail | string | Email of user | +| date | time | Date of the report | +| parameters | []dict | Parameter value pairs | +| account | dict | Account Settings | +| security | dict | Security Settings | +| appUsage | dict | App Usage | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.report.users.md b/docs/mql/resources/google-workspace-pack/googleworkspace.report.users.md new file mode 100644 index 000000000..c639eefd2 --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.report.users.md @@ -0,0 +1,23 @@ +--- +title: googleworkspace.report.users +id: googleworkspace.report.users +sidebar_label: googleworkspace.report.users +displayed_sidebar: MQL +description: Google Workspace user usage reports +--- + +# googleworkspace.report.users + +**Description** + +Google Workspace user usage reports + +**List** + +[]googleworkspace.report.usage + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------------------------------------------------------------------------- | ----------- | +| list | [][googleworkspace.report.usage](googleworkspace.report.usage.md) | | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.role.md b/docs/mql/resources/google-workspace-pack/googleworkspace.role.md new file mode 100644 index 000000000..fd3629290 --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.role.md @@ -0,0 +1,24 @@ +--- +title: googleworkspace.role +id: googleworkspace.role +sidebar_label: googleworkspace.role +displayed_sidebar: MQL +description: Google Workspace role +--- + +# googleworkspace.role + +**Description** + +Google Workspace role + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | -------------- | ---------------------------------------------- | +| id | int | ID of the role | +| name | string | Name of the role | +| description | string | A short description of the role | +| isSystemRole | bool | Indicates if this is a pre-defined system role | +| isSuperAdminRole | bool | Indicates if the role is a super admin role | +| privileges | []dict | The set of privileges | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.token.md b/docs/mql/resources/google-workspace-pack/googleworkspace.token.md new file mode 100644 index 000000000..32577020c --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.token.md @@ -0,0 +1,24 @@ +--- +title: googleworkspace.token +id: googleworkspace.token +sidebar_label: googleworkspace.token +displayed_sidebar: MQL +description: Google Workspace token +--- + +# googleworkspace.token + +**Description** + +Google Workspace token + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ---------------- | ------------------------------------------------------------ | +| anonymous | bool | Indicates if the application is registered with Google | +| clientId | string | The Client ID of the application | +| displayText | string | The displayable name of the application token | +| nativeApp | bool | Indicates if the token is issued to an installed application | +| scopes | []string | A list of granted authorization scopes the application | +| userKey | string | The unique ID of the user that issued the token | diff --git a/docs/mql/resources/google-workspace-pack/googleworkspace.user.md b/docs/mql/resources/google-workspace-pack/googleworkspace.user.md new file mode 100644 index 000000000..ba71d6c5d --- /dev/null +++ b/docs/mql/resources/google-workspace-pack/googleworkspace.user.md @@ -0,0 +1,38 @@ +--- +title: googleworkspace.user +id: googleworkspace.user +sidebar_label: googleworkspace.user +displayed_sidebar: MQL +description: Google Workspace user accounts +--- + +# googleworkspace.user + +**Description** + +Google Workspace user accounts + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------- | -------------------------------------------------------- | +| id | string | The unique ID for the user | +| familyName | string | The user's last name | +| givenName | string | The user's first names | +| fullName | string | The user's full name | +| primaryEmail | string | The user's primary email address | +| recoveryEmail | string | Recovery email of the user | +| recoveryPhone | string | Recovery phone of the user | +| agreedToTerms | bool | User accepted the Terms of Service agreement | +| aliases | []string | A list of the user's alias email addresses | +| suspended | bool | Indicates if user is suspended | +| suspensionReason | string | The reason a user account is suspended | +| archived | bool | Indicates if user is archived | +| isAdmin | bool | Indicates a user with super administrator privileges | +| isEnforcedIn2Sv | bool | Is 2-step verification enforced | +| isEnrolledIn2Sv | bool | Is enrolled in 2-step verification | +| isMailboxSetup | bool | Indicates if the user's Google mailbox is created | +| lastLoginTime | time | User's last login time | +| creationTime | time | User's account creation time | +| usageReport | [googleworkspace.report.usage](googleworkspace.report.usage.md) | Retrieves latest report for the user | +| tokens | [][googleworkspace.token](googleworkspace.token.md) | Returns the user-issued tokens to 3rd party applications | diff --git a/docs/mql/resources/ipmi-pack/README.md b/docs/mql/resources/ipmi-pack/README.md new file mode 100644 index 000000000..5d55425b7 --- /dev/null +++ b/docs/mql/resources/ipmi-pack/README.md @@ -0,0 +1,16 @@ +--- +title: IPMI Resource Pack - MQL Resources +id: ipmi.pack +sidebar_label: IPMI Resource Pack +displayed_sidebar: MQL +description: The IPMI resource pack lets you use MQL to query and assess the security of your IPMI devices. +--- + +# Mondoo IPMI Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------- | --------------------------------------------------------- | +| [ipmi](ipmi.md) | Intelligent Platform Management Interface (IPMI) resource | +| [ipmi.chassis](ipmi.chassis.md) | IPMI system chassis resource | diff --git a/docs/mql/resources/ipmi-pack/ipmi.chassis.md b/docs/mql/resources/ipmi-pack/ipmi.chassis.md new file mode 100644 index 000000000..739d0be0f --- /dev/null +++ b/docs/mql/resources/ipmi-pack/ipmi.chassis.md @@ -0,0 +1,24 @@ +--- +title: ipmi.chassis +id: ipmi.chassis +sidebar_label: ipmi.chassis +displayed_sidebar: MQL +description: IPMI system chassis resource +--- + +# ipmi.chassis + +**Maturity** + +experimental + +**Description** + +IPMI system chassis resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ---- | ---------------------------------------------------------------- | +| status | dict | High-level status of the system chassis and main power subsystem | +| systemBootOptions | dict | System boot options | diff --git a/docs/mql/resources/ipmi-pack/ipmi.md b/docs/mql/resources/ipmi-pack/ipmi.md new file mode 100644 index 000000000..b90857fe9 --- /dev/null +++ b/docs/mql/resources/ipmi-pack/ipmi.md @@ -0,0 +1,24 @@ +--- +title: ipmi +id: ipmi +sidebar_label: ipmi +displayed_sidebar: MQL +description: Intelligent Platform Management Interface (IPMI) resource +--- + +# ipmi + +**Maturity** + +experimental + +**Description** + +Intelligent Platform Management Interface (IPMI) resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | --------------------------------------------------- | +| deviceID | dict | The hardware & firmware device ID | +| guid | string | GUID (Globally Unique ID) for management controller | diff --git a/docs/mql/resources/k8s-pack/README.md b/docs/mql/resources/k8s-pack/README.md new file mode 100644 index 000000000..80fb7d999 --- /dev/null +++ b/docs/mql/resources/k8s-pack/README.md @@ -0,0 +1,49 @@ +--- +title: Kubernetes (K8s) Resource Pack - MQL Resources +id: kubernetes.k8s.pack +sidebar_label: Kubernetes (K8s) Resource Pack +displayed_sidebar: MQL +description: The Kubernetes resource pack lets you use MQL to query and assess the security of your Kubernetes cluster and workloads. +--- + +# Mondoo Kubernetes (K8s) Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------------------------------------- | ---------------------------------------------------------------- | +| [k8s](k8s.md) | Kubernetes cluster | +| [k8s.admissionrequest](k8s.admissionrequest.md) | Kubernetes AdmissionRequest | +| [k8s.admissionreview](k8s.admissionreview.md) | Kubernetes AdmissionReview | +| [k8s.apiresource](k8s.apiresource.md) | Kubernetes API resources | +| [k8s.configmap](k8s.configmap.md) | Kubernetes ConfigMap | +| [k8s.container](k8s.container.md) | Kubernetes workload container | +| [k8s.cronjob](k8s.cronjob.md) | Kubernetes CronJob | +| [k8s.customresource](k8s.customresource.md) | Kubernetes CustomResource | +| [k8s.daemonset](k8s.daemonset.md) | Kubernetes DaemonSet | +| [k8s.deployment](k8s.deployment.md) | Kubernetes Deployment | +| [k8s.ephemeralContainer](k8s.ephemeralcontainer.md) | Kubernetes ephemeral container | +| [k8s.ingress](k8s.ingress.md) | Kubernetes Ingress | +| [k8s.ingressbackend](k8s.ingressbackend.md) | Kubernetes Ingress backend | +| [k8s.ingresshttprulepath](k8s.ingresshttprulepath.md) | Kubernetes Ingress HTTP rule | +| [k8s.ingressresourceref](k8s.ingressresourceref.md) | Kubernetes Ingress resource backend | +| [k8s.ingressrule](k8s.ingressrule.md) | Kubernetes Ingress rule | +| [k8s.ingressservicebackend](k8s.ingressservicebackend.md) | Kubernetes Ingress service backend | +| [k8s.ingresstls](k8s.ingresstls.md) | Kubernetes Ingress TLS | +| [k8s.initContainer](k8s.initcontainer.md) | Kubernetes init container | +| [k8s.job](k8s.job.md) | Kubernetes Job | +| [k8s.namespace](k8s.namespace.md) | Kubernetes namespace | +| [k8s.networkpolicy](k8s.networkpolicy.md) | Kubernetes Network Policy | +| [k8s.node](k8s.node.md) | Kubernetes node | +| [k8s.pod](k8s.pod.md) | Kubernetes Pod | +| [k8s.podsecuritypolicy](k8s.podsecuritypolicy.md) | Kubernetes PodSecurityPolicy (deprecated as of Kubernetes v1.21) | +| [k8s.rbac.clusterrole](k8s.rbac.clusterrole.md) | Kubernetes ClusterRole | +| [k8s.rbac.clusterrolebinding](k8s.rbac.clusterrolebinding.md) | Kubernetes ClusterRoleBinding | +| [k8s.rbac.role](k8s.rbac.role.md) | Kubernetes Role | +| [k8s.rbac.rolebinding](k8s.rbac.rolebinding.md) | Kubernetes RoleBinding | +| [k8s.replicaset](k8s.replicaset.md) | Kubernetes ReplicaSet | +| [k8s.secret](k8s.secret.md) | Kubernetes Secret | +| [k8s.service](k8s.service.md) | Kubernetes Service | +| [k8s.serviceaccount](k8s.serviceaccount.md) | Kubernetes service account | +| [k8s.statefulset](k8s.statefulset.md) | Kubernetes StatefulSet | +| [k8s.userinfo](k8s.userinfo.md) | Kubernetes UserInfo | diff --git a/docs/mql/resources/k8s-pack/k8s.admissionrequest.md b/docs/mql/resources/k8s-pack/k8s.admissionrequest.md new file mode 100644 index 000000000..4c5de47f1 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.admissionrequest.md @@ -0,0 +1,28 @@ +--- +title: k8s.admissionrequest +id: k8s.admissionrequest +sidebar_label: k8s.admissionrequest +displayed_sidebar: MQL +description: Kubernetes AdmissionRequest +--- + +# k8s.admissionrequest + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes AdmissionRequest + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------------- | ------------------------------------------------------------------- | +| name | string | The name of the object presented in the request | +| namespace | string | The namespace associated with the request (if any) | +| operation | string | The operation being performed | +| userInfo | [k8s.userinfo](k8s.userinfo.md) | Information about the requesting user | +| object | dict | The incoming object from the request | +| oldObject | dict | The existing object (only populated for UPDATE and DELETE requests) | diff --git a/docs/mql/resources/k8s-pack/k8s.admissionreview.md b/docs/mql/resources/k8s-pack/k8s.admissionreview.md new file mode 100644 index 000000000..589871491 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.admissionreview.md @@ -0,0 +1,23 @@ +--- +title: k8s.admissionreview +id: k8s.admissionreview +sidebar_label: k8s.admissionreview +displayed_sidebar: MQL +description: Kubernetes AdmissionReview +--- + +# k8s.admissionreview + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes AdmissionReview + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------------------------------------- | ----------------------- | +| request | [k8s.admissionrequest](k8s.admissionrequest.md) | The requested admission | diff --git a/docs/mql/resources/k8s-pack/k8s.apiresource.md b/docs/mql/resources/k8s-pack/k8s.apiresource.md new file mode 100644 index 000000000..5e5a3e1fc --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.apiresource.md @@ -0,0 +1,30 @@ +--- +title: k8s.apiresource +id: k8s.apiresource +sidebar_label: k8s.apiresource +displayed_sidebar: MQL +description: Kubernetes API resources +--- + +# k8s.apiresource + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes API resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ---------------- | --------------------------------------------- | +| name | string | Plural name of the resource | +| singularName | string | Singular name of the resource | +| namespaced | bool | Whether a resource is namespaced or not | +| group | string | Preferred group of the resource | +| version | string | Preferred version of the resource | +| kind | string | Kubernetes object type | +| shortNames | []string | List of suggested short names of the resource | +| categories | []string | List of the grouped resources | diff --git a/docs/mql/resources/k8s-pack/k8s.configmap.md b/docs/mql/resources/k8s-pack/k8s.configmap.md new file mode 100644 index 000000000..dc8e862e4 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.configmap.md @@ -0,0 +1,33 @@ +--- +title: k8s.configmap +id: k8s.configmap +sidebar_label: k8s.configmap +displayed_sidebar: MQL +description: Kubernetes ConfigMap +--- + +# k8s.configmap + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes ConfigMap + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| data | map[string]string | Configuration data | diff --git a/docs/mql/resources/k8s-pack/k8s.container.md b/docs/mql/resources/k8s-pack/k8s.container.md new file mode 100644 index 000000000..9c9485e39 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.container.md @@ -0,0 +1,40 @@ +--- +title: k8s.container +id: k8s.container +sidebar_label: k8s.container +displayed_sidebar: MQL +description: Kubernetes workload container +--- + +# k8s.container + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes workload container + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------ | ------------------------------------------------------- | +| uid | string | Kubernetes object UID | +| name | string | Name of the container | +| imageName | string | Container image name | +| image | string | Deprecated; use `imageName` instead | +| containerImage | os.container.image | Container image | +| command | []string | Entry point array | +| args | []string | Arguments to the entry point | +| resources | dict | Compute resources required by this container | +| volumeMounts | []dict | Pod volumes to mount into the container's file system | +| volumeDevices | []dict | List of block devices to be used by the container | +| livenessProbe | dict | Periodic probe of container liveness | +| readinessProbe | dict | Periodic probe of container service readiness | +| imagePullPolicy | string | Image pull policyL Always, Never, or IfNotPresent | +| securityContext | dict | Security options the pod should run with | +| workingDir | string | Container's working directory | +| tty | bool | Whether this container should allocate a TTY for itself | +| env | dict | env variables | +| envFrom | dict | envFrom settings | diff --git a/docs/mql/resources/k8s-pack/k8s.cronjob.md b/docs/mql/resources/k8s-pack/k8s.cronjob.md new file mode 100644 index 000000000..d0002e38c --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.cronjob.md @@ -0,0 +1,35 @@ +--- +title: k8s.cronjob +id: k8s.cronjob +sidebar_label: k8s.cronjob +displayed_sidebar: MQL +description: Kubernetes CronJob +--- + +# k8s.cronjob + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes CronJob + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| podSpec | dict | Pod description | +| initContainers | [][k8s.initContainer](k8s.initcontainer.md) | Init containers | +| containers | [][k8s.container](k8s.container.md) | Contained containers | diff --git a/docs/mql/resources/k8s-pack/k8s.customresource.md b/docs/mql/resources/k8s-pack/k8s.customresource.md new file mode 100644 index 000000000..6bf4b1a8a --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.customresource.md @@ -0,0 +1,32 @@ +--- +title: k8s.customresource +id: k8s.customresource +sidebar_label: k8s.customresource +displayed_sidebar: MQL +description: Kubernetes CustomResource +--- + +# k8s.customresource + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes CustomResource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | diff --git a/docs/mql/resources/k8s-pack/k8s.daemonset.md b/docs/mql/resources/k8s-pack/k8s.daemonset.md new file mode 100644 index 000000000..f98eddb3b --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.daemonset.md @@ -0,0 +1,35 @@ +--- +title: k8s.daemonset +id: k8s.daemonset +sidebar_label: k8s.daemonset +displayed_sidebar: MQL +description: Kubernetes DaemonSet +--- + +# k8s.daemonset + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes DaemonSet + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| podSpec | dict | Pod description | +| initContainers | [][k8s.initContainer](k8s.initcontainer.md) | Init containers | +| containers | [][k8s.container](k8s.container.md) | Contained containers | diff --git a/docs/mql/resources/k8s-pack/k8s.deployment.md b/docs/mql/resources/k8s-pack/k8s.deployment.md new file mode 100644 index 000000000..f4b325298 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.deployment.md @@ -0,0 +1,35 @@ +--- +title: k8s.deployment +id: k8s.deployment +sidebar_label: k8s.deployment +displayed_sidebar: MQL +description: Kubernetes Deployment +--- + +# k8s.deployment + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Deployment + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| podSpec | dict | Pod description | +| initContainers | [][k8s.initContainer](k8s.initcontainer.md) | Init containers | +| containers | [][k8s.container](k8s.container.md) | Contained containers | diff --git a/docs/mql/resources/k8s-pack/k8s.ephemeralcontainer.md b/docs/mql/resources/k8s-pack/k8s.ephemeralcontainer.md new file mode 100644 index 000000000..58e854977 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ephemeralcontainer.md @@ -0,0 +1,37 @@ +--- +title: k8s.ephemeralContainer +id: k8s.ephemeralContainer +sidebar_label: k8s.ephemeralContainer +displayed_sidebar: MQL +description: Kubernetes ephemeral container +--- + +# k8s.ephemeralContainer + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes ephemeral container + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------ | ------------------------------------------------------- | +| uid | string | Kubernetes object UID | +| name | string | Name of the container | +| imageName | string | Container image name | +| image | string | Deprecated; use `imageName` instead | +| containerImage | os.container.image | Container image | +| command | []string | Entry point array | +| args | []string | Arguments to the entry point | +| volumeMounts | []dict | Pod volumes to mount into the container's file system | +| volumeDevices | []dict | List of block devices to be used by the container | +| imagePullPolicy | string | Image pull policy: Always, Never, or IfNotPresent | +| securityContext | dict | Security options the Pod should run with | +| workingDir | string | Container's working directory | +| tty | bool | Whether this container should allocate a TTY for itself | +| env | dict | env variables | +| envFrom | dict | envFrom settings | diff --git a/docs/mql/resources/k8s-pack/k8s.ingress.md b/docs/mql/resources/k8s-pack/k8s.ingress.md new file mode 100644 index 000000000..98d7777d8 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ingress.md @@ -0,0 +1,34 @@ +--- +title: k8s.ingress +id: k8s.ingress +sidebar_label: k8s.ingress +displayed_sidebar: MQL +description: Kubernetes Ingress +--- + +# k8s.ingress + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Ingress + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| rules | [][k8s.ingressrule](k8s.ingressrule.md) | Ingress rules | +| tls | [][k8s.ingresstls](k8s.ingresstls.md) | Ingress TLS data | diff --git a/docs/mql/resources/k8s-pack/k8s.ingressbackend.md b/docs/mql/resources/k8s-pack/k8s.ingressbackend.md new file mode 100644 index 000000000..bf9666df4 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ingressbackend.md @@ -0,0 +1,25 @@ +--- +title: k8s.ingressbackend +id: k8s.ingressbackend +sidebar_label: k8s.ingressbackend +displayed_sidebar: MQL +description: Kubernetes Ingress backend +--- + +# k8s.ingressbackend + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Ingress backend + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------------------------- | ------------------------------------------------- | +| id | string | Mondoo ID for object | +| service | [k8s.ingressservicebackend](k8s.ingressservicebackend.md) | Kubernetes service for Ingress backend | +| resourceRef | [k8s.ingressresourceref](k8s.ingressresourceref.md) | Kubernetes resource reference for Ingress backend | diff --git a/docs/mql/resources/k8s-pack/k8s.ingresshttprulepath.md b/docs/mql/resources/k8s-pack/k8s.ingresshttprulepath.md new file mode 100644 index 000000000..881cafcff --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ingresshttprulepath.md @@ -0,0 +1,26 @@ +--- +title: k8s.ingresshttprulepath +id: k8s.ingresshttprulepath +sidebar_label: k8s.ingresshttprulepath +displayed_sidebar: MQL +description: Kubernetes Ingress HTTP rule +--- + +# k8s.ingresshttprulepath + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Ingress HTTP rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------------------------------------------- | ------------------------------------------- | +| id | string | Mondoo ID for object | +| path | string | HTTP path for Ingress rule | +| pathType | string | PathType for Ingress rule | +| backend | [k8s.ingressbackend](k8s.ingressbackend.md) | Backend to forward matching Ingress traffic | diff --git a/docs/mql/resources/k8s-pack/k8s.ingressresourceref.md b/docs/mql/resources/k8s-pack/k8s.ingressresourceref.md new file mode 100644 index 000000000..b2532545d --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ingressresourceref.md @@ -0,0 +1,26 @@ +--- +title: k8s.ingressresourceref +id: k8s.ingressresourceref +sidebar_label: k8s.ingressresourceref +displayed_sidebar: MQL +description: Kubernetes Ingress resource backend +--- + +# k8s.ingressresourceref + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Ingress resource backend + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ---------------------------------------------------- | +| id | string | Mondoo ID for object | +| apiGroup | string | APIGroup specified as part of the resource reference | +| kind | string | Kubernetes object type | +| name | string | Kubernetes object name | diff --git a/docs/mql/resources/k8s-pack/k8s.ingressrule.md b/docs/mql/resources/k8s-pack/k8s.ingressrule.md new file mode 100644 index 000000000..e5944bcfe --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ingressrule.md @@ -0,0 +1,25 @@ +--- +title: k8s.ingressrule +id: k8s.ingressrule +sidebar_label: k8s.ingressrule +displayed_sidebar: MQL +description: Kubernetes Ingress rule +--- + +# k8s.ingressrule + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Ingress rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------------------------------------------------------- | ---------------------------------- | +| id | string | Mondoo ID for object | +| host | string | Hostname to match for Ingress rule | +| httpPaths | [][k8s.ingresshttprulepath](k8s.ingresshttprulepath.md) | HTTP paths to manage Ingress for | diff --git a/docs/mql/resources/k8s-pack/k8s.ingressservicebackend.md b/docs/mql/resources/k8s-pack/k8s.ingressservicebackend.md new file mode 100644 index 000000000..e06c05b73 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ingressservicebackend.md @@ -0,0 +1,26 @@ +--- +title: k8s.ingressservicebackend +id: k8s.ingressservicebackend +sidebar_label: k8s.ingressservicebackend +displayed_sidebar: MQL +description: Kubernetes Ingress service backend +--- + +# k8s.ingressservicebackend + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Ingress service backend + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------------ | +| id | string | Mondoo ID for object | +| name | string | Kubernetes service name | +| portName | string | Kubernetes service port name | +| portNumber | int | Kubernetes service port number | diff --git a/docs/mql/resources/k8s-pack/k8s.ingresstls.md b/docs/mql/resources/k8s-pack/k8s.ingresstls.md new file mode 100644 index 000000000..09701e889 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.ingresstls.md @@ -0,0 +1,25 @@ +--- +title: k8s.ingresstls +id: k8s.ingresstls +sidebar_label: k8s.ingresstls +displayed_sidebar: MQL +description: Kubernetes Ingress TLS +--- + +# k8s.ingresstls + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Ingress TLS + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------- | --------------------------------------------- | +| id | string | Mondoo ID for object | +| hosts | []string | List of hosts associated with TLS certificate | +| certificates | []network.certificate | Certificates data from the TLS Secret | diff --git a/docs/mql/resources/k8s-pack/k8s.initcontainer.md b/docs/mql/resources/k8s-pack/k8s.initcontainer.md new file mode 100644 index 000000000..4190849ca --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.initcontainer.md @@ -0,0 +1,38 @@ +--- +title: k8s.initContainer +id: k8s.initContainer +sidebar_label: k8s.initContainer +displayed_sidebar: MQL +description: Kubernetes init container +--- + +# k8s.initContainer + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes init container + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------ | ------------------------------------------------------- | +| uid | string | Kubernetes object UID | +| name | string | Name of the container | +| imageName | string | Container image name | +| image | string | Deprecated. Use `imageName` instead. | +| containerImage | os.container.image | Container image | +| command | []string | Entrypoint array | +| args | []string | Arguments to the entrypoint | +| resources | dict | Compute resources required by this container | +| volumeMounts | []dict | Pod volumes to mount into the container's file system | +| volumeDevices | []dict | List of block devices to be used by the container | +| imagePullPolicy | string | Image pull policy: Always, Never, or IfNotPresent | +| securityContext | dict | Security options the pod should run with | +| workingDir | string | Container's working directory | +| tty | bool | Whether this container should allocate a TTY for itself | +| env | dict | env variables | +| envFrom | dict | envFrom settings | diff --git a/docs/mql/resources/k8s-pack/k8s.job.md b/docs/mql/resources/k8s-pack/k8s.job.md new file mode 100644 index 000000000..1bc01cfda --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.job.md @@ -0,0 +1,35 @@ +--- +title: k8s.job +id: k8s.job +sidebar_label: k8s.job +displayed_sidebar: MQL +description: Kubernetes Job +--- + +# k8s.job + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Job + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| podSpec | dict | Pod description | +| initContainers | [][k8s.initContainer](k8s.initcontainer.md) | Init containers | +| containers | [][k8s.container](k8s.container.md) | Contained containers | diff --git a/docs/mql/resources/k8s-pack/k8s.md b/docs/mql/resources/k8s-pack/k8s.md new file mode 100644 index 000000000..0c4ce25ae --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.md @@ -0,0 +1,95 @@ +--- +title: k8s +id: k8s +sidebar_label: k8s +displayed_sidebar: MQL +description: Kubernetes cluster +--- + +# k8s + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes cluster + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ----------------------------------------------------------------------- | ----------------------------------- | +| serverVersion | dict | Cluster version | +| apiResources | [][k8s.apiresource](k8s.apiresource.md) | Available resource types | +| namespaces | [][k8s.namespace](k8s.namespace.md) | Cluster namespaces | +| nodes | [][k8s.node](k8s.node.md) | Cluster nodes | +| pods | [][k8s.pod](k8s.pod.md) | Cluster Pods | +| deployments | [][k8s.deployment](k8s.deployment.md) | Cluster deployments | +| daemonsets | [][k8s.daemonset](k8s.daemonset.md) | Cluster DaemonSets | +| statefulsets | [][k8s.statefulset](k8s.statefulset.md) | Cluster StatefulSets | +| replicasets | [][k8s.replicaset](k8s.replicaset.md) | Cluster ReplicaSets | +| jobs | [][k8s.job](k8s.job.md) | Cluster Jobs | +| cronjobs | [][k8s.cronjob](k8s.cronjob.md) | Cluster CronJobs | +| secrets | [][k8s.secret](k8s.secret.md) | Cluster Secrets | +| configmaps | [][k8s.configmap](k8s.configmap.md) | ConfigMaps | +| services | [][k8s.service](k8s.service.md) | Kubernetes Services | +| ingresses | [][k8s.ingress](k8s.ingress.md) | Kubernetes Ingresses | +| serviceaccounts | [][k8s.serviceaccount](k8s.serviceaccount.md) | Kubernetes service accounts | +| clusterroles | [][k8s.rbac.clusterrole](k8s.rbac.clusterrole.md) | Kubernetes RBAC ClusterRoles | +| clusterrolebindings | [][k8s.rbac.clusterrolebinding](k8s.rbac.clusterrolebinding.md) | Kubernetes RBAC ClusterRoleBindings | +| roles | [][k8s.rbac.role](k8s.rbac.role.md) | Kubernetes RBAC roles | +| rolebindings | [][k8s.rbac.rolebinding](k8s.rbac.rolebinding.md) | Kubernetes RBAC RoleBindings | +| podSecurityPolicies | [][k8s.podsecuritypolicy](k8s.podsecuritypolicy.md) | Kubernetes PodSecurityPolicies | +| networkPolicies | [][k8s.networkpolicy](k8s.networkpolicy.md) | Kubernetes network policies | +| customresources | [][k8s.customresource](k8s.customresource.md) | Kubernetes custom resources | + +**Examples** + +List kubernetes pods with privileged containers + +```coffee +k8s.pods { containers.where(securityContext["privileged"] == true) name } +``` + +Check if the default namespace is used + +```coffee +k8s.pods.all( namespace != "default") +``` + +Query services accounts + +```coffee +k8s.serviceaccounts { name namespace secrets } +``` + +Query RBAC cluster roles + +```coffee +k8s.roles { name namespace rules } +``` + +Query RBAC role bindings + +```coffee +k8s.rolebindings { name namespace subjects } +``` + +Query RBAC cluster role bindings + +```coffee +k8s.clusterrolebindings { name subjects } +``` + +Query pod security policies + +```coffee +k8s.podSecurityPolicies { name manifest } +``` + +Query network policies + +```coffee +k8s.networkPolicies { name manifest } +``` diff --git a/docs/mql/resources/k8s-pack/k8s.namespace.md b/docs/mql/resources/k8s-pack/k8s.namespace.md new file mode 100644 index 000000000..aa244caf3 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.namespace.md @@ -0,0 +1,30 @@ +--- +title: k8s.namespace +id: k8s.namespace +sidebar_label: k8s.namespace +displayed_sidebar: MQL +description: Kubernetes namespace +--- + +# k8s.namespace + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes namespace + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| name | string | Kubernetes object name | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| kind | string | Kubernetes object type | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | diff --git a/docs/mql/resources/k8s-pack/k8s.networkpolicy.md b/docs/mql/resources/k8s-pack/k8s.networkpolicy.md new file mode 100644 index 000000000..d799dfe75 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.networkpolicy.md @@ -0,0 +1,33 @@ +--- +title: k8s.networkpolicy +id: k8s.networkpolicy +sidebar_label: k8s.networkpolicy +displayed_sidebar: MQL +description: Kubernetes Network Policy +--- + +# k8s.networkpolicy + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Network Policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| spec | dict | Network policy spec | diff --git a/docs/mql/resources/k8s-pack/k8s.node.md b/docs/mql/resources/k8s-pack/k8s.node.md new file mode 100644 index 000000000..48af3ee3a --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.node.md @@ -0,0 +1,29 @@ +--- +title: k8s.node +id: k8s.node +sidebar_label: k8s.node +displayed_sidebar: MQL +description: Kubernetes node +--- + +# k8s.node + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes node + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ----------------------------------- | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| resourceVersion | string | Kubernetes resource version | +| name | string | Plural name of the resource | +| kind | string | Kubernetes object type | diff --git a/docs/mql/resources/k8s-pack/k8s.pod.md b/docs/mql/resources/k8s-pack/k8s.pod.md new file mode 100644 index 000000000..189d71898 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.pod.md @@ -0,0 +1,38 @@ +--- +title: k8s.pod +id: k8s.pod +sidebar_label: k8s.pod +displayed_sidebar: MQL +description: Kubernetes Pod +--- + +# k8s.pod + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Pod + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------------------------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| apiVersion | string | Kubernetes object version | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| podSpec | dict | Pod description | +| ephemeralContainers | [][k8s.ephemeralContainer](k8s.ephemeralcontainer.md) | Ephemeral containers | +| initContainers | [][k8s.initContainer](k8s.initcontainer.md) | Init containers | +| containers | [][k8s.container](k8s.container.md) | Contained containers | +| node | [k8s.node](k8s.node.md) | Node the pod runs on | diff --git a/docs/mql/resources/k8s-pack/k8s.podsecuritypolicy.md b/docs/mql/resources/k8s-pack/k8s.podsecuritypolicy.md new file mode 100644 index 000000000..efb66be36 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.podsecuritypolicy.md @@ -0,0 +1,32 @@ +--- +title: k8s.podsecuritypolicy +id: k8s.podsecuritypolicy +sidebar_label: k8s.podsecuritypolicy +displayed_sidebar: MQL +description: Kubernetes PodSecurityPolicy (deprecated as of Kubernetes v1.21) +--- + +# k8s.podsecuritypolicy + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes PodSecurityPolicy (deprecated as of Kubernetes v1.21) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| spec | dict | Policy Spec | diff --git a/docs/mql/resources/k8s-pack/k8s.rbac.clusterrole.md b/docs/mql/resources/k8s-pack/k8s.rbac.clusterrole.md new file mode 100644 index 000000000..2c443561d --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.rbac.clusterrole.md @@ -0,0 +1,33 @@ +--- +title: k8s.rbac.clusterrole +id: k8s.rbac.clusterrole +sidebar_label: k8s.rbac.clusterrole +displayed_sidebar: MQL +description: Kubernetes ClusterRole +--- + +# k8s.rbac.clusterrole + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes ClusterRole + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| rules | []dict | ClusterRole rules | +| aggregationRule | dict | ClusterRole aggregation rule | diff --git a/docs/mql/resources/k8s-pack/k8s.rbac.clusterrolebinding.md b/docs/mql/resources/k8s-pack/k8s.rbac.clusterrolebinding.md new file mode 100644 index 000000000..6e76e23c4 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.rbac.clusterrolebinding.md @@ -0,0 +1,33 @@ +--- +title: k8s.rbac.clusterrolebinding +id: k8s.rbac.clusterrolebinding +sidebar_label: k8s.rbac.clusterrolebinding +displayed_sidebar: MQL +description: Kubernetes ClusterRoleBinding +--- + +# k8s.rbac.clusterrolebinding + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes ClusterRoleBinding + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | --------------------------------------------- | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| subjects | []dict | References to the objects the role applies to | +| roleRef | dict | ClusterRole in the global namespace | diff --git a/docs/mql/resources/k8s-pack/k8s.rbac.role.md b/docs/mql/resources/k8s-pack/k8s.rbac.role.md new file mode 100644 index 000000000..40e4ccb58 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.rbac.role.md @@ -0,0 +1,33 @@ +--- +title: k8s.rbac.role +id: k8s.rbac.role +sidebar_label: k8s.rbac.role +displayed_sidebar: MQL +description: Kubernetes Role +--- + +# k8s.rbac.role + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Role + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| rules | []dict | Cluster Role Rules | diff --git a/docs/mql/resources/k8s-pack/k8s.rbac.rolebinding.md b/docs/mql/resources/k8s-pack/k8s.rbac.rolebinding.md new file mode 100644 index 000000000..46b4f7354 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.rbac.rolebinding.md @@ -0,0 +1,34 @@ +--- +title: k8s.rbac.rolebinding +id: k8s.rbac.rolebinding +sidebar_label: k8s.rbac.rolebinding +displayed_sidebar: MQL +description: Kubernetes RoleBinding +--- + +# k8s.rbac.rolebinding + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes RoleBinding + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ---------------------------------------------------------------- | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| subjects | []dict | Subjects holds references to the objects the role applies to | +| roleRef | dict | RoleRef can only reference a ClusterRole in the global namespace | diff --git a/docs/mql/resources/k8s-pack/k8s.replicaset.md b/docs/mql/resources/k8s-pack/k8s.replicaset.md new file mode 100644 index 000000000..ff40fc7a2 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.replicaset.md @@ -0,0 +1,35 @@ +--- +title: k8s.replicaset +id: k8s.replicaset +sidebar_label: k8s.replicaset +displayed_sidebar: MQL +description: Kubernetes ReplicaSet +--- + +# k8s.replicaset + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes ReplicaSet + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| podSpec | dict | Pod description | +| initContainers | [][k8s.initContainer](k8s.initcontainer.md) | Init containers | +| containers | [][k8s.container](k8s.container.md) | Contained containers | diff --git a/docs/mql/resources/k8s-pack/k8s.secret.md b/docs/mql/resources/k8s-pack/k8s.secret.md new file mode 100644 index 000000000..692052274 --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.secret.md @@ -0,0 +1,34 @@ +--- +title: k8s.secret +id: k8s.secret +sidebar_label: k8s.secret +displayed_sidebar: MQL +description: Kubernetes Secret +--- + +# k8s.secret + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Secret + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| type | string | Secret type | +| certificates | []network.certificate | Secret certificates | diff --git a/docs/mql/resources/k8s-pack/k8s.service.md b/docs/mql/resources/k8s-pack/k8s.service.md new file mode 100644 index 000000000..0e621bfda --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.service.md @@ -0,0 +1,33 @@ +--- +title: k8s.service +id: k8s.service +sidebar_label: k8s.service +displayed_sidebar: MQL +description: Kubernetes Service +--- + +# k8s.service + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes Service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| spec | dict | Service Spec | diff --git a/docs/mql/resources/k8s-pack/k8s.serviceaccount.md b/docs/mql/resources/k8s-pack/k8s.serviceaccount.md new file mode 100644 index 000000000..ebfa5d7da --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.serviceaccount.md @@ -0,0 +1,35 @@ +--- +title: k8s.serviceaccount +id: k8s.serviceaccount +sidebar_label: k8s.serviceaccount +displayed_sidebar: MQL +description: Kubernetes service account +--- + +# k8s.serviceaccount + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes service account + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------------- | ----------------- | ------------------------------------------------------------------------------------------- | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| secrets | []dict | List of secrets that Pods running using this service account are allowed to use | +| imagePullSecrets | []dict | List of references to secrets in the same namespace to use for pulling any images | +| automountServiceAccountToken | bool | Whether pods running as this service account should have an API token automatically mounted | diff --git a/docs/mql/resources/k8s-pack/k8s.statefulset.md b/docs/mql/resources/k8s-pack/k8s.statefulset.md new file mode 100644 index 000000000..78ff61bdc --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.statefulset.md @@ -0,0 +1,35 @@ +--- +title: k8s.statefulset +id: k8s.statefulset +sidebar_label: k8s.statefulset +displayed_sidebar: MQL +description: Kubernetes StatefulSet +--- + +# k8s.statefulset + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes StatefulSet + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------------- | ------------------------------------ | +| id | string | Mondoo ID for the Kubernetes object | +| uid | string | Kubernetes object UID | +| resourceVersion | string | Kubernetes resource version | +| labels | map[string]string | Kubernetes labels | +| annotations | map[string]string | Kubernetes annotations | +| name | string | Kubernetes object name | +| namespace | string | Kubernetes object namespace | +| kind | string | Kubernetes object type | +| created | time | Kubernetes object creation timestamp | +| manifest | dict | Full resource manifest | +| podSpec | dict | Pod description | +| initContainers | [][k8s.initContainer](k8s.initcontainer.md) | Init containers | +| containers | [][k8s.container](k8s.container.md) | Contained containers | diff --git a/docs/mql/resources/k8s-pack/k8s.userinfo.md b/docs/mql/resources/k8s-pack/k8s.userinfo.md new file mode 100644 index 000000000..5ef929bcd --- /dev/null +++ b/docs/mql/resources/k8s-pack/k8s.userinfo.md @@ -0,0 +1,24 @@ +--- +title: k8s.userinfo +id: k8s.userinfo +sidebar_label: k8s.userinfo +displayed_sidebar: MQL +description: Kubernetes UserInfo +--- + +# k8s.userinfo + +**Supported platform** + +- kubernetes + +**Description** + +Kubernetes UserInfo + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ------------------------ | +| username | string | The username of the user | +| uid | string | The UID of the user | diff --git a/docs/mql/resources/ms365-pack/README.md b/docs/mql/resources/ms365-pack/README.md new file mode 100644 index 000000000..f82442e86 --- /dev/null +++ b/docs/mql/resources/ms365-pack/README.md @@ -0,0 +1,40 @@ +--- +title: Microsoft 365 (MS365) Resource Pack - MQL Resources +id: microsoft.365.ms365.pack +sidebar_label: Microsoft 365 (MS365) Resource Pack +displayed_sidebar: MQL +description: The Microsoft 365 (MS365) resource pack lets you use MQL to query and assess the security of your Microsoft 365 identities and configuration. +--- + +# Mondoo Microsoft 365 (MS365) Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | +| [microsoft](microsoft.md) | Microsoft | +| [microsoft.application](microsoft.application.md) | Microsoft application | +| [microsoft.devicemanagement](microsoft.devicemanagement.md) | Microsoft device management | +| [microsoft.devicemanagement.devicecompliancepolicy](microsoft.devicemanagement.devicecompliancepolicy.md) | Microsoft device compliance policy | +| [microsoft.devicemanagement.deviceconfiguration](microsoft.devicemanagement.deviceconfiguration.md) | Microsoft device configuration | +| [microsoft.domain](microsoft.domain.md) | Microsoft domain | +| [microsoft.domaindnsrecord](microsoft.domaindnsrecord.md) | Microsoft domain DNS record | +| [microsoft.group](microsoft.group.md) | Microsoft group | +| [microsoft.organization](microsoft.organization.md) | Microsoft organization | +| [microsoft.policies](microsoft.policies.md) | Microsoft policies | +| [microsoft.rolemanagement](microsoft.rolemanagement.md) | Microsoft role management | +| [microsoft.rolemanagement.roleassignment](microsoft.rolemanagement.roleassignment.md) | Microsoft role assignment | +| [microsoft.rolemanagement.roledefinition](microsoft.rolemanagement.roledefinition.md) | Microsoft role definition | +| [microsoft.security](microsoft.security.md) | Microsoft Security | +| [microsoft.security.securityscore](microsoft.security.securityscore.md) | Microsoft Secure Score | +| [microsoft.serviceprincipal](microsoft.serviceprincipal.md) | Microsoft service principal | +| [microsoft.serviceprincipal.assignment](microsoft.serviceprincipal.assignment.md) | Microsoft Service Principal Assignment | +| [microsoft.user](microsoft.user.md) | Microsoft user | +| [ms365.exchangeonline](ms365.exchangeonline.md) | Microsoft 365 Exchange Online | +| [ms365.exchangeonline.exoMailbox](ms365.exchangeonline.exomailbox.md) | Microsoft 365 Exchange Online Mailbox | +| [ms365.exchangeonline.externalSender](ms365.exchangeonline.externalsender.md) | Microsoft 365 Exchange Online External Sender | +| [ms365.sharepointonline](ms365.sharepointonline.md) | Microsoft 365 SharePoint Online | +| [ms365.sharepointonline.site](ms365.sharepointonline.site.md) | Microsoft 365 SharePoint Site | +| [ms365.teams](ms365.teams.md) | Microsoft 365 Teams | +| [ms365.teams.teamsMeetingPolicyConfig](ms365.teams.teamsmeetingpolicyconfig.md) | Teams meeting policy configuration | +| [ms365.teams.tenantFederationConfig](ms365.teams.tenantfederationconfig.md) | Microsoft 365 Teams tenant federation configuration | diff --git a/docs/mql/resources/ms365-pack/microsoft.application.md b/docs/mql/resources/ms365-pack/microsoft.application.md new file mode 100644 index 000000000..a1cc56068 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.application.md @@ -0,0 +1,25 @@ +--- +title: microsoft.application +id: microsoft.application +sidebar_label: microsoft.application +displayed_sidebar: MQL +description: Microsoft application +--- + +# microsoft.application + +**Description** + +Microsoft application + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ---------------- | ---------------------------- | +| id | string | Application ID | +| appId | string | Application app ID | +| createdDateTime | time | Application creation date | +| identifierUris | []string | Application identifier URIs | +| displayName | string | Application display name | +| publisherDomain | string | Application publisher domain | +| signInAudience | string | Application sign-in audience | diff --git a/docs/mql/resources/ms365-pack/microsoft.devicemanagement.devicecompliancepolicy.md b/docs/mql/resources/ms365-pack/microsoft.devicemanagement.devicecompliancepolicy.md new file mode 100644 index 000000000..4557dbca9 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.devicemanagement.devicecompliancepolicy.md @@ -0,0 +1,26 @@ +--- +title: microsoft.devicemanagement.devicecompliancepolicy +id: microsoft.devicemanagement.devicecompliancepolicy +sidebar_label: microsoft.devicemanagement.devicecompliancepolicy +displayed_sidebar: MQL +description: Microsoft device compliance policy +--- + +# microsoft.devicemanagement.devicecompliancepolicy + +**Description** + +Microsoft device compliance policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | -------------- | -------------------------------------------- | +| id | string | Device compliance policy ID | +| createdDateTime | time | Device compliance policy creation date | +| description | string | Device compliance policy description | +| displayName | string | Device compliance policy display name | +| lastModifiedDateTime | time | Device compliance policy last modified date | +| version | int | Device compliance policy version | +| assignments | []dict | Device compliance policy assignments | +| properties | dict | Deprecated; kept for backwards compatibility | diff --git a/docs/mql/resources/ms365-pack/microsoft.devicemanagement.deviceconfiguration.md b/docs/mql/resources/ms365-pack/microsoft.devicemanagement.deviceconfiguration.md new file mode 100644 index 000000000..6720b128e --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.devicemanagement.deviceconfiguration.md @@ -0,0 +1,25 @@ +--- +title: microsoft.devicemanagement.deviceconfiguration +id: microsoft.devicemanagement.deviceconfiguration +sidebar_label: microsoft.devicemanagement.deviceconfiguration +displayed_sidebar: MQL +description: Microsoft device configuration +--- + +# microsoft.devicemanagement.deviceconfiguration + +**Description** + +Microsoft device configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------ | -------------------------------------------- | +| id | string | Device configuration ID | +| lastModifiedDateTime | time | Device configuration last modify date | +| createdDateTime | time | Device configuration creation date | +| description | string | Device configuration description | +| displayName | string | Device configuration display name | +| version | int | Device configuration version | +| properties | dict | Deprecated; kept for backwards compatibility | diff --git a/docs/mql/resources/ms365-pack/microsoft.devicemanagement.md b/docs/mql/resources/ms365-pack/microsoft.devicemanagement.md new file mode 100644 index 000000000..d5f37209c --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.devicemanagement.md @@ -0,0 +1,20 @@ +--- +title: microsoft.devicemanagement +id: microsoft.devicemanagement +sidebar_label: microsoft.devicemanagement +displayed_sidebar: MQL +description: Microsoft device management +--- + +# microsoft.devicemanagement + +**Description** + +Microsoft device management + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | +| deviceConfigurations | [][microsoft.devicemanagement.deviceconfiguration](microsoft.devicemanagement.deviceconfiguration.md) | List of device configurations | +| deviceCompliancePolicies | [][microsoft.devicemanagement.devicecompliancepolicy](microsoft.devicemanagement.devicecompliancepolicy.md) | List of device compliance policies | diff --git a/docs/mql/resources/ms365-pack/microsoft.domain.md b/docs/mql/resources/ms365-pack/microsoft.domain.md new file mode 100644 index 000000000..d9c77e348 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.domain.md @@ -0,0 +1,30 @@ +--- +title: microsoft.domain +id: microsoft.domain +sidebar_label: microsoft.domain +displayed_sidebar: MQL +description: Microsoft domain +--- + +# microsoft.domain + +**Description** + +Microsoft domain + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------------- | ------------------------------------------------------------------- | ------------------------------------------ | +| id | string | Domain ID | +| authenticationType | string | Domain authentication type | +| availabilityStatus | string | Domain availability status | +| isAdminManaged | bool | Whether the domain is admin managed | +| isDefault | bool | Whether the domain is the default domain | +| isInitial | bool | Whether the domain is the initial domain | +| isRoot | bool | Whether the domain is a root domain | +| isVerified | bool | Whether the domain is verified | +| passwordNotificationWindowInDays | int | Domain password notification window (days) | +| passwordValidityPeriodInDays | int | Domain password validity period (days) | +| supportedServices | []string | List of supported services | +| serviceConfigurationRecords | [][microsoft.domaindnsrecord](microsoft.domaindnsrecord.md) | List of service configuration records | diff --git a/docs/mql/resources/ms365-pack/microsoft.domaindnsrecord.md b/docs/mql/resources/ms365-pack/microsoft.domaindnsrecord.md new file mode 100644 index 000000000..c2fbe0288 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.domaindnsrecord.md @@ -0,0 +1,25 @@ +--- +title: microsoft.domaindnsrecord +id: microsoft.domaindnsrecord +sidebar_label: microsoft.domaindnsrecord +displayed_sidebar: MQL +description: Microsoft domain DNS record +--- + +# microsoft.domaindnsrecord + +**Description** + +Microsoft domain DNS record + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | -------------------------------------------- | +| id | string | Domain record ID | +| isOptional | bool | Whether the domain record is optional | +| label | string | Domain record label | +| recordType | string | Domain record type | +| supportedService | string | Domain record supported service | +| ttl | int | Domain record TTL | +| properties | dict | Deprecated; kept for backwards compatibility | diff --git a/docs/mql/resources/ms365-pack/microsoft.group.md b/docs/mql/resources/ms365-pack/microsoft.group.md new file mode 100644 index 000000000..7130c873b --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.group.md @@ -0,0 +1,26 @@ +--- +title: microsoft.group +id: microsoft.group +sidebar_label: microsoft.group +displayed_sidebar: MQL +description: Microsoft group +--- + +# microsoft.group + +**Description** + +Microsoft group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------------------------- | ----------------------------- | +| id | string | Group ID | +| displayName | string | Group display name | +| securityEnabled | bool | Group security enabled status | +| mailEnabled | bool | Group email enabled status | +| mailNickname | string | Group email nickname | +| mail | string | Group email | +| visibility | string | Group visibility state | +| members | [][microsoft.user](microsoft.user.md) | List of group members | diff --git a/docs/mql/resources/ms365-pack/microsoft.md b/docs/mql/resources/ms365-pack/microsoft.md new file mode 100644 index 000000000..92bbdf747 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.md @@ -0,0 +1,27 @@ +--- +title: microsoft +id: microsoft +sidebar_label: microsoft +displayed_sidebar: MQL +description: Microsoft +--- + +# microsoft + +**Description** + +Microsoft + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------------- | --------------------------------------------------------------------- | ------------------------------------------ | +| organizations | [][microsoft.organization](microsoft.organization.md) | List of organizations | +| users | [][microsoft.user](microsoft.user.md) | List of users | +| groups | [][microsoft.group](microsoft.group.md) | List of groups | +| domains | [][microsoft.domain](microsoft.domain.md) | List of domains | +| applications | [][microsoft.application](microsoft.application.md) | List of applications | +| serviceprincipals | [][microsoft.serviceprincipal](microsoft.serviceprincipal.md) | List of service principals | +| enterpriseApplications | [][microsoft.serviceprincipal](microsoft.serviceprincipal.md) | List of enterprise applications | +| settings | dict | Microsoft 365 settings | +| tenantDomainName | string | The connected tenant's default domain name | diff --git a/docs/mql/resources/ms365-pack/microsoft.organization.md b/docs/mql/resources/ms365-pack/microsoft.organization.md new file mode 100644 index 000000000..41b67b63e --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.organization.md @@ -0,0 +1,24 @@ +--- +title: microsoft.organization +id: microsoft.organization +sidebar_label: microsoft.organization +displayed_sidebar: MQL +description: Microsoft organization +--- + +# microsoft.organization + +**Description** + +Microsoft organization + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | -------------- | ------------------------------------------------------------ | +| id | string | Organization ID | +| assignedPlans | []dict | Organization assigned plans | +| createdDateTime | time | Organization creation date | +| displayName | string | Organization display name | +| verifiedDomains | []dict | Organization verified domains | +| onPremisesSyncEnabled | bool | Whether password hash sync is enabled for hybrid deployments | diff --git a/docs/mql/resources/ms365-pack/microsoft.policies.md b/docs/mql/resources/ms365-pack/microsoft.policies.md new file mode 100644 index 000000000..9e4125c6b --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.policies.md @@ -0,0 +1,22 @@ +--- +title: microsoft.policies +id: microsoft.policies +sidebar_label: microsoft.policies +displayed_sidebar: MQL +description: Microsoft policies +--- + +# microsoft.policies + +**Description** + +Microsoft policies + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------------------------- | -------------- | -------------------------------------------- | +| authorizationPolicy | dict | Authorization policy | +| identitySecurityDefaultsEnforcementPolicy | dict | Identity security default enforcement policy | +| adminConsentRequestPolicy | dict | Admin consent request policy | +| permissionGrantPolicies | []dict | Permission grant policies | diff --git a/docs/mql/resources/ms365-pack/microsoft.rolemanagement.md b/docs/mql/resources/ms365-pack/microsoft.rolemanagement.md new file mode 100644 index 000000000..a00a56966 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.rolemanagement.md @@ -0,0 +1,19 @@ +--- +title: microsoft.rolemanagement +id: microsoft.rolemanagement +sidebar_label: microsoft.rolemanagement +displayed_sidebar: MQL +description: Microsoft role management +--- + +# microsoft.rolemanagement + +**Description** + +Microsoft role management + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------------------------------------------------- | ------------------------ | +| roleDefinitions | [][microsoft.rolemanagement.roledefinition](microsoft.rolemanagement.roledefinition.md) | List of role definitions | diff --git a/docs/mql/resources/ms365-pack/microsoft.rolemanagement.roleassignment.md b/docs/mql/resources/ms365-pack/microsoft.rolemanagement.roleassignment.md new file mode 100644 index 000000000..1b16d7be3 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.rolemanagement.roleassignment.md @@ -0,0 +1,22 @@ +--- +title: microsoft.rolemanagement.roleassignment +id: microsoft.rolemanagement.roleassignment +sidebar_label: microsoft.rolemanagement.roleassignment +displayed_sidebar: MQL +description: Microsoft role assignment +--- + +# microsoft.rolemanagement.roleassignment + +**Description** + +Microsoft role assignment + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | -------------------- | +| id | string | Role assignment ID | +| roleDefinitionId | string | Role definition ID | +| principalId | string | Service principal ID | +| principal | dict | Service principal | diff --git a/docs/mql/resources/ms365-pack/microsoft.rolemanagement.roledefinition.md b/docs/mql/resources/ms365-pack/microsoft.rolemanagement.roledefinition.md new file mode 100644 index 000000000..86759057c --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.rolemanagement.roledefinition.md @@ -0,0 +1,27 @@ +--- +title: microsoft.rolemanagement.roledefinition +id: microsoft.rolemanagement.roledefinition +sidebar_label: microsoft.rolemanagement.roledefinition +displayed_sidebar: MQL +description: Microsoft role definition +--- + +# microsoft.rolemanagement.roledefinition + +**Description** + +Microsoft role definition + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------- | +| id | string | Role definition ID | +| description | string | Role definition description | +| displayName | string | Role definition display name | +| isBuiltIn | bool | Whether the role is built in | +| isEnabled | bool | Whether the role is enabled | +| rolePermissions | []dict | Role definition permissions | +| templateId | string | Role definition template ID | +| version | string | Role definition version | +| assignments | [][microsoft.rolemanagement.roleassignment](microsoft.rolemanagement.roleassignment.md) | List of role definition assignments | diff --git a/docs/mql/resources/ms365-pack/microsoft.security.md b/docs/mql/resources/ms365-pack/microsoft.security.md new file mode 100644 index 000000000..8aefdfbdf --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.security.md @@ -0,0 +1,20 @@ +--- +title: microsoft.security +id: microsoft.security +sidebar_label: microsoft.security +displayed_sidebar: MQL +description: Microsoft Security +--- + +# microsoft.security + +**Description** + +Microsoft Security + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | --------------------------------------------------------------------------------- | ----------------------- | +| secureScores | [][microsoft.security.securityscore](microsoft.security.securityscore.md) | List of security scores | +| latestSecureScores | [microsoft.security.securityscore](microsoft.security.securityscore.md) | Latest security score | diff --git a/docs/mql/resources/ms365-pack/microsoft.security.securityscore.md b/docs/mql/resources/ms365-pack/microsoft.security.securityscore.md new file mode 100644 index 000000000..6a1502571 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.security.securityscore.md @@ -0,0 +1,29 @@ +--- +title: microsoft.security.securityscore +id: microsoft.security.securityscore +sidebar_label: microsoft.security.securityscore +displayed_sidebar: MQL +description: Microsoft Secure Score +--- + +# microsoft.security.securityscore + +**Description** + +Microsoft Secure Score + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ---------------- | -------------------------------------- | +| id | string | Secure Score ID | +| activeUserCount | int | Secure Score active user count | +| averageComparativeScores | []dict | Secure Score average comparative score | +| azureTenantId | string | Secure Score tenant ID | +| controlScores | []dict | Secure Score control scores | +| createdDateTime | time | Secure Score creation time | +| currentScore | float | Secure Score current score | +| enabledServices | []string | Secure Score enabled services | +| licensedUserCount | int | Secure Score licensed user count | +| maxScore | float | Secure Score max score | +| vendorInformation | dict | Secure Score vendor information | diff --git a/docs/mql/resources/ms365-pack/microsoft.serviceprincipal.assignment.md b/docs/mql/resources/ms365-pack/microsoft.serviceprincipal.assignment.md new file mode 100644 index 000000000..70a5d3180 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.serviceprincipal.assignment.md @@ -0,0 +1,21 @@ +--- +title: microsoft.serviceprincipal.assignment +id: microsoft.serviceprincipal.assignment +sidebar_label: microsoft.serviceprincipal.assignment +displayed_sidebar: MQL +description: Microsoft Service Principal Assignment +--- + +# microsoft.serviceprincipal.assignment + +**Description** + +Microsoft Service Principal Assignment + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | --------------------------------- | +| id | string | Service Principal Assignment ID | +| displayName | string | Service Principal Assignment name | +| type | string | Service Principal Assignment type | diff --git a/docs/mql/resources/ms365-pack/microsoft.serviceprincipal.md b/docs/mql/resources/ms365-pack/microsoft.serviceprincipal.md new file mode 100644 index 000000000..5ff8143eb --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.serviceprincipal.md @@ -0,0 +1,30 @@ +--- +title: microsoft.serviceprincipal +id: microsoft.serviceprincipal +sidebar_label: microsoft.serviceprincipal +displayed_sidebar: MQL +description: Microsoft service principal +--- + +# microsoft.serviceprincipal + +**Description** + +Microsoft service principal + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| id | string | Service principal ID | +| type | string | Service principal type | +| name | string | Service principal name | +| tags | []string | Service principal tags | +| enabled | bool | Whether users can sign into the service principal (application) | +| homepageUrl | string | Service principal homepage URL | +| termsOfServiceUrl | string | Service principal terms of service URL | +| replyUrls | []string | Service principal reply URLs | +| assignmentRequired | bool | Whether users or other apps must be assigned to this service principal before using it | +| visibleToUsers | bool | Whether the service principal is visible to users | +| notes | string | Service principal notes | +| assignments | [][microsoft.serviceprincipal.assignment](microsoft.serviceprincipal.assignment.md) | List of assignments (users and groups) this service principal has | diff --git a/docs/mql/resources/ms365-pack/microsoft.user.md b/docs/mql/resources/ms365-pack/microsoft.user.md new file mode 100644 index 000000000..99ae5bd82 --- /dev/null +++ b/docs/mql/resources/ms365-pack/microsoft.user.md @@ -0,0 +1,40 @@ +--- +title: microsoft.user +id: microsoft.user +sidebar_label: microsoft.user +displayed_sidebar: MQL +description: Microsoft user +--- + +# microsoft.user + +**Description** + +Microsoft user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ---------------- | ----------------------------- | +| id | string | User ID | +| accountEnabled | bool | User account status | +| city | string | User city | +| companyName | string | User company name | +| country | string | User country | +| createdDateTime | time | User create time | +| department | string | User department | +| displayName | string | User display name | +| employeeId | string | User employee ID | +| givenName | string | User given name | +| jobTitle | string | User job title | +| mail | string | User email | +| mobilePhone | string | User mobile phone | +| otherMails | []string | List of other email addresses | +| officeLocation | string | User office location | +| postalCode | string | User postal code | +| state | string | User state | +| streetAddress | string | User street address | +| surname | string | User surname | +| userPrincipalName | string | User service principal name | +| userType | string | User type | +| settings | dict | User settings | diff --git a/docs/mql/resources/ms365-pack/ms365.exchangeonline.exomailbox.md b/docs/mql/resources/ms365-pack/ms365.exchangeonline.exomailbox.md new file mode 100644 index 000000000..3ea73984b --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.exchangeonline.exomailbox.md @@ -0,0 +1,21 @@ +--- +title: ms365.exchangeonline.exoMailbox +id: ms365.exchangeonline.exoMailbox +sidebar_label: ms365.exchangeonline.exoMailbox +displayed_sidebar: MQL +description: Microsoft 365 Exchange Online Mailbox +--- + +# ms365.exchangeonline.exoMailbox + +**Description** + +Microsoft 365 Exchange Online Mailbox + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------- | ----------------------------------- | ---------------------------------------------------------- | +| identity | string | The identity of the mailbox | +| user | [microsoft.user](microsoft.user.md) | The user linked to this mailbox | +| externalDirectoryObjectId | string | The identity of the external object linked to this mailbox | diff --git a/docs/mql/resources/ms365-pack/ms365.exchangeonline.externalsender.md b/docs/mql/resources/ms365-pack/ms365.exchangeonline.externalsender.md new file mode 100644 index 000000000..31ceee943 --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.exchangeonline.externalsender.md @@ -0,0 +1,21 @@ +--- +title: ms365.exchangeonline.externalSender +id: ms365.exchangeonline.externalSender +sidebar_label: ms365.exchangeonline.externalSender +displayed_sidebar: MQL +description: Microsoft 365 Exchange Online External Sender +--- + +# ms365.exchangeonline.externalSender + +**Description** + +Microsoft 365 Exchange Online External Sender + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ---------------- | ----------------------------------------------------------------------------------------------- | +| identity | string | The identity of the external sender | +| allowList | []string | The list of specified senders that do not receive the External icon in the area of subject line | +| enabled | bool | Whether the feature is enabled | diff --git a/docs/mql/resources/ms365-pack/ms365.exchangeonline.md b/docs/mql/resources/ms365-pack/ms365.exchangeonline.md new file mode 100644 index 000000000..e4a2b6dba --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.exchangeonline.md @@ -0,0 +1,37 @@ +--- +title: ms365.exchangeonline +id: ms365.exchangeonline +sidebar_label: ms365.exchangeonline +displayed_sidebar: MQL +description: Microsoft 365 Exchange Online +--- + +# ms365.exchangeonline + +**Description** + +Microsoft 365 Exchange Online + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------ | --------------------------------------------------------------------------------------- | -------------------------------------------- | +| malwareFilterPolicy | []dict | List of malware filter policies | +| hostedOutboundSpamFilterPolicy | []dict | List of hosted outbound spam filter policies | +| transportRule | []dict | Transport rules | +| remoteDomain | []dict | List of remote domains | +| safeLinksPolicy | []dict | List of safe links policies | +| safeAttachmentPolicy | []dict | List of safe attachment policies | +| organizationConfig | dict | Organization configurations | +| authenticationPolicy | []dict | List of authentication policies | +| antiPhishPolicy | []dict | List of anti-phishing policies | +| dkimSigningConfig | []dict | List of dkim signing configurations | +| owaMailboxPolicy | []dict | List of OWA mailbox policies | +| adminAuditLogConfig | dict | Admin audit log configuration | +| phishFilterPolicy | []dict | List of phishing filter policies | +| mailbox | []dict | List of mailboxes | +| atpPolicyForO365 | []dict | List of APT policies for Office 365 | +| sharingPolicy | []dict | List of sharing policies | +| roleAssignmentPolicy | []dict | List of role assignment policies | +| externalInOutlook | [][ms365.exchangeonline.externalSender](ms365.exchangeonline.externalsender.md) | List of external sender configurations | +| sharedMailboxes | [][ms365.exchangeonline.exoMailbox](ms365.exchangeonline.exomailbox.md) | List of shared mailboxes | diff --git a/docs/mql/resources/ms365-pack/ms365.sharepointonline.md b/docs/mql/resources/ms365-pack/ms365.sharepointonline.md new file mode 100644 index 000000000..adb93308c --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.sharepointonline.md @@ -0,0 +1,21 @@ +--- +title: ms365.sharepointonline +id: ms365.sharepointonline +sidebar_label: ms365.sharepointonline +displayed_sidebar: MQL +description: Microsoft 365 SharePoint Online +--- + +# ms365.sharepointonline + +**Description** + +Microsoft 365 SharePoint Online + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------ | +| spoTenant | dict | SharePoint Online tenant | +| spoTenantSyncClientRestriction | dict | SharePoint Online tenant sync client restriction | +| spoSites | [][ms365.sharepointonline.site](ms365.sharepointonline.site.md) | SharePoint Online tenant sites | diff --git a/docs/mql/resources/ms365-pack/ms365.sharepointonline.site.md b/docs/mql/resources/ms365-pack/ms365.sharepointonline.site.md new file mode 100644 index 000000000..4162b2023 --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.sharepointonline.site.md @@ -0,0 +1,20 @@ +--- +title: ms365.sharepointonline.site +id: ms365.sharepointonline.site +sidebar_label: ms365.sharepointonline.site +displayed_sidebar: MQL +description: Microsoft 365 SharePoint Site +--- + +# ms365.sharepointonline.site + +**Description** + +Microsoft 365 SharePoint Site + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ------ | ------------------------------------------------------------- | +| url | string | The site URL | +| denyAddAndCustomizePages | bool | Whether custom script execution on a particulate site allowed | diff --git a/docs/mql/resources/ms365-pack/ms365.teams.md b/docs/mql/resources/ms365-pack/ms365.teams.md new file mode 100644 index 000000000..5a2f77099 --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.teams.md @@ -0,0 +1,21 @@ +--- +title: ms365.teams +id: ms365.teams +sidebar_label: ms365.teams +displayed_sidebar: MQL +description: Microsoft 365 Teams +--- + +# ms365.teams + +**Description** + +Microsoft 365 Teams + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------- | +| csTeamsClientConfiguration | dict | CS Teams client configuration | +| csTenantFederationConfiguration | [ms365.teams.tenantFederationConfig](ms365.teams.tenantfederationconfig.md) | CS Teams tenant federated configuration | +| csTeamsMeetingPolicy | [ms365.teams.teamsMeetingPolicyConfig](ms365.teams.teamsmeetingpolicyconfig.md) | CS Teams meeting policy configuration | diff --git a/docs/mql/resources/ms365-pack/ms365.teams.teamsmeetingpolicyconfig.md b/docs/mql/resources/ms365-pack/ms365.teams.teamsmeetingpolicyconfig.md new file mode 100644 index 000000000..92b1ac347 --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.teams.teamsmeetingpolicyconfig.md @@ -0,0 +1,26 @@ +--- +title: ms365.teams.teamsMeetingPolicyConfig +id: ms365.teams.teamsMeetingPolicyConfig +sidebar_label: ms365.teams.teamsMeetingPolicyConfig +displayed_sidebar: MQL +description: Teams meeting policy configuration +--- + +# ms365.teams.teamsMeetingPolicyConfig + +**Description** + +Teams meeting policy configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------------------ | ------ | --------------------------------------------------------------------------- | +| allowAnonymousUsersToJoinMeeting | bool | Whether anonymous users are allowed to join | +| allowAnonymousUsersToStartMeeting | bool | Whether anonymous users are allowed to start the meeting | +| autoAdmittedUsers | string | Who can bypass the lobby | +| allowPSTNUsersToBypassLobby | bool | Whether public switched telephone network (PSTN) users can bypass the lobby | +| meetingChatEnabledType | string | Whether meeting chat is enabled | +| designatedPresenterRoleMode | string | Designated presenter role mode | +| allowExternalParticipantGiveRequestControl | bool | Whether external participants can give or request control of the meeting | +| allowSecurityEndUserReporting | bool | Whether users can report security concerns | diff --git a/docs/mql/resources/ms365-pack/ms365.teams.tenantfederationconfig.md b/docs/mql/resources/ms365-pack/ms365.teams.tenantfederationconfig.md new file mode 100644 index 000000000..9e5519c64 --- /dev/null +++ b/docs/mql/resources/ms365-pack/ms365.teams.tenantfederationconfig.md @@ -0,0 +1,27 @@ +--- +title: ms365.teams.tenantFederationConfig +id: ms365.teams.tenantFederationConfig +sidebar_label: ms365.teams.tenantFederationConfig +displayed_sidebar: MQL +description: Microsoft 365 Teams tenant federation configuration +--- + +# ms365.teams.tenantFederationConfig + +**Description** + +Microsoft 365 Teams tenant federation configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------------------- | ------ | -------------------------------------------------------------------- | +| identity | string | ID of the collection of tenant federation configuration settings | +| blockedDomains | dict | Blocked domains | +| allowFederatedUsers | bool | Whether federated users are allowed | +| allowPublicUsers | bool | Whether public users are allowed | +| allowTeamsConsumer | bool | Whether to allow external Teams consumers | +| allowTeamsConsumerInbound | bool | Whether to allow inbound communication with external Teams consumers | +| treatDiscoveredPartnersAsUnverified | bool | Whether to treat discovered partners as unverified | +| sharedSipAddressSpace | bool | Whether shared SIP address space is enabled | +| restrictTeamsConsumerToExternalUserProfiles | bool | Whether to restrict Teams consumer to external user profiles | diff --git a/docs/mql/resources/network-pack/README.md b/docs/mql/resources/network-pack/README.md new file mode 100644 index 000000000..8d4c96283 --- /dev/null +++ b/docs/mql/resources/network-pack/README.md @@ -0,0 +1,39 @@ +--- +title: Network Resource Pack - MQL Resources +id: network.pack +sidebar_label: Network Resource Pack +displayed_sidebar: MQL +description: The network resource pack lets you use MQL to query and assess the security of domains and network services. +--- + +# Mondoo Network Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| --------------------------------------------------------- | ------------------------------------------------------------------------- | +| [certificate](certificate.md) | x509 certificate resource | +| [certificates](certificates.md) | x509 certificates resource | +| [dns](dns.md) | DNS resource | +| [dns.dkimRecord](dns.dkimrecord.md) | DKIM public key representation as defined in RFC 6376 | +| [dns.mxRecord](dns.mxrecord.md) | DNS MX record | +| [dns.record](dns.record.md) | DNS record | +| [domainName](domainname.md) | Domain name | +| [http](http.md) | HTTP endpoint | +| [http.get](http.get.md) | HTTP GET requests | +| [http.header](http.header.md) | HTTP header | +| [http.header.contentType](http.header.contenttype.md) | Content-Type header | +| [http.header.setCookie](http.header.setcookie.md) | Set-Cookie header | +| [http.header.sts](http.header.sts.md) | HTTP header for Strict-Transport-Security | +| [http.header.xssProtection](http.header.xssprotection.md) | HTTP header for X-XSS-Protection, which is now outdated (replaced by CSP) | +| [openpgp.entities](openpgp.entities.md) | | +| [openpgp.entity](openpgp.entity.md) | OpenPGP entity | +| [openpgp.identity](openpgp.identity.md) | OpenPGP identity | +| [openpgp.publicKey](openpgp.publickey.md) | OpenPGP public key | +| [openpgp.signature](openpgp.signature.md) | OpenPGP signature | +| [pkix.extension](pkix.extension.md) | x509 certificate PKIX extension | +| [pkix.name](pkix.name.md) | x509 certificate PKIX name | +| [pkix.sanExtension](pkix.sanextension.md) | x509 certificate PKIX Subject Alternative Name (SAN) extension | +| [socket](socket.md) | Socket | +| [tls](tls.md) | TLS | +| [url](url.md) | URL resource, generally represented as: | diff --git a/docs/mql/resources/network-pack/certificate.md b/docs/mql/resources/network-pack/certificate.md new file mode 100644 index 000000000..05cf9b034 --- /dev/null +++ b/docs/mql/resources/network-pack/certificate.md @@ -0,0 +1,43 @@ +--- +title: certificate +id: certificate +sidebar_label: certificate +displayed_sidebar: MQL +description: x509 certificate resource +--- + +# certificate + +**Description** + +x509 certificate resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | --------------------------------------------- | ----------------------------------------------------- | +| pem | string | PEM content | +| fingerprints | map[string]string | Certificate fingerprints | +| serial | string | Serial number | +| subjectKeyID | string | Subject unique identifier | +| authorityKeyID | string | Authority key identifier | +| subject | [pkix.name](pkix.name.md) | Subject | +| issuer | [pkix.name](pkix.name.md) | Issuer | +| version | int | Version number | +| notBefore | time | Validity period validity period | +| notAfter | time | Validity period not after | +| expiresIn | time | Expiration duration | +| signature | string | Signature | +| signingAlgorithm | string | Signature algorithm ID | +| isCA | bool | Flag if certificate authority | +| keyUsage | []string | Key usage | +| extendedKeyUsage | []string | Extended key usage | +| extensions | [][pkix.extension](pkix.extension.md) | Extensions | +| policyIdentifier | []string | Policy identifier | +| crlDistributionPoints | []string | CRL distribution points | +| ocspServer | []string | OCSP | +| issuingCertificateUrl | []string | Issuing certificate URL | +| isRevoked | bool | Whether this certificate has been revoked | +| revokedAt | time | The time at which this certificate was revoked | +| isVerified | bool | Whether the certificate is valid (based on its chain) | +| sanExtension | [pkix.sanExtension](pkix.sanextension.md) | SAN extension value params | diff --git a/docs/mql/resources/network-pack/certificates.md b/docs/mql/resources/network-pack/certificates.md new file mode 100644 index 000000000..a88df9316 --- /dev/null +++ b/docs/mql/resources/network-pack/certificates.md @@ -0,0 +1,24 @@ +--- +title: certificates +id: certificates +sidebar_label: certificates +displayed_sidebar: MQL +description: x509 certificates resource +--- + +# certificates + +**Description** + +x509 certificates resource + +**List** + +[]certificate + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | --------------------------------------- | ----------- | +| pem | string | PEM content | +| list | [][certificate](certificate.md) | | diff --git a/docs/mql/resources/network-pack/dns.dkimrecord.md b/docs/mql/resources/network-pack/dns.dkimrecord.md new file mode 100644 index 000000000..3dfdf436d --- /dev/null +++ b/docs/mql/resources/network-pack/dns.dkimrecord.md @@ -0,0 +1,28 @@ +--- +title: dns.dkimRecord +id: dns.dkimRecord +sidebar_label: dns.dkimRecord +displayed_sidebar: MQL +description: DKIM public key representation as defined in RFC 6376 +--- + +# dns.dkimRecord + +**Description** + +DKIM public key representation as defined in RFC 6376 + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ---------------- | ---------------------------------------------- | +| dnsTxt | string | DNS text representation | +| domain | string | DKIM selector domain | +| version | string | Version | +| hashAlgorithms | []string | Acceptable hash algorithms | +| keyType | string | Key type | +| notes | string | Notes | +| publicKeyData | string | Public key data base64-encoded | +| serviceTypes | []string | Service types | +| flags | []string | Flags | +| valid | bool | Whether the DKIM entry and public key is valid | diff --git a/docs/mql/resources/network-pack/dns.md b/docs/mql/resources/network-pack/dns.md new file mode 100644 index 000000000..68671042e --- /dev/null +++ b/docs/mql/resources/network-pack/dns.md @@ -0,0 +1,31 @@ +--- +title: dns +id: dns +sidebar_label: dns +displayed_sidebar: MQL +description: DNS resource +--- + +# dns + +**Maturity** + +experimental + +**Description** + +DNS resource + +**Init** + +dns(fqdn string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------------------------------------- | ----------------------------------------------- | +| fqdn | string | Fully qualified domain name (FQDN) | +| params | dict | Params is a list of all parameters for DNS FQDN | +| records | [][dns.record](dns.record.md) | Successful DNS records | +| mx | [][dns.mxRecord](dns.mxrecord.md) | Successful DNS MX records | +| dkim | [][dns.dkimRecord](dns.dkimrecord.md) | DKIM TXT records | diff --git a/docs/mql/resources/network-pack/dns.mxrecord.md b/docs/mql/resources/network-pack/dns.mxrecord.md new file mode 100644 index 000000000..30ad2b35c --- /dev/null +++ b/docs/mql/resources/network-pack/dns.mxrecord.md @@ -0,0 +1,25 @@ +--- +title: dns.mxRecord +id: dns.mxRecord +sidebar_label: dns.mxRecord +displayed_sidebar: MQL +description: DNS MX record +--- + +# dns.mxRecord + +**Maturity** + +experimental + +**Description** + +DNS MX record + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | --------------------------------------------------- | +| name | string | Record name | +| preference | int | Which mail server used if multiple MX records exist | +| domainName | string | Domain name | diff --git a/docs/mql/resources/network-pack/dns.record.md b/docs/mql/resources/network-pack/dns.record.md new file mode 100644 index 000000000..9daf6bc70 --- /dev/null +++ b/docs/mql/resources/network-pack/dns.record.md @@ -0,0 +1,27 @@ +--- +title: dns.record +id: dns.record +sidebar_label: dns.record +displayed_sidebar: MQL +description: DNS record +--- + +# dns.record + +**Maturity** + +experimental + +**Description** + +DNS record + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | ---------------- | ----------------------------- | +| name | string | DNS name | +| ttl | int | Time-to-live (TTL) in seconds | +| class | string | DNS class | +| type | string | DNS type | +| rdata | []string | Resource data | diff --git a/docs/mql/resources/network-pack/domainname.md b/docs/mql/resources/network-pack/domainname.md new file mode 100644 index 000000000..f7aaa7625 --- /dev/null +++ b/docs/mql/resources/network-pack/domainname.md @@ -0,0 +1,27 @@ +--- +title: domainName +id: domainName +sidebar_label: domainName +displayed_sidebar: MQL +description: Domain name +--- + +# domainName + +**Description** + +Domain name + +**Init** + +domainName(fqdn string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ---------------- | ------------------------------------------------------------------------------ | +| fqdn | string | Fully qualified domain name (FQDN) | +| effectiveTLDPlusOne | string | effectiveTLDPlusOne returns the effective top level domain plus one more label | +| tld | string | Top-level domain | +| tldIcannManaged | bool | Flag indicates if the TLD is ICANN managed | +| labels | []string | Domain labels | diff --git a/docs/mql/resources/network-pack/http.get.md b/docs/mql/resources/network-pack/http.get.md new file mode 100644 index 000000000..77ec5fe7a --- /dev/null +++ b/docs/mql/resources/network-pack/http.get.md @@ -0,0 +1,27 @@ +--- +title: http.get +id: http.get +sidebar_label: http.get +displayed_sidebar: MQL +description: HTTP GET requests +--- + +# http.get + +**Description** + +HTTP GET requests + +**Init** + +http.get(rawUrl string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------------------- | ---------------------------------------- | +| url | [url](url.md) | URL for this request | +| header | [http.header](http.header.md) | Header returned from this request | +| statusCode | int | Status returned from this request | +| version | string | Version of the HTTP request, (e.g., 1.1) | +| body | string | Body returned from this request | diff --git a/docs/mql/resources/network-pack/http.header.contenttype.md b/docs/mql/resources/network-pack/http.header.contenttype.md new file mode 100644 index 000000000..9ea2afaac --- /dev/null +++ b/docs/mql/resources/network-pack/http.header.contenttype.md @@ -0,0 +1,24 @@ +--- +title: http.header.contentType +id: http.header.contentType +sidebar_label: http.header.contentType +displayed_sidebar: MQL +description: Content-Type header +--- + +# http.header.contentType + +**Maturity** + +experimental + +**Description** + +Content-Type header + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ----------------- | ------------------------------------------- | +| type | string | MIME type for the content | +| params | map[string]string | Additional parameters for this content type | diff --git a/docs/mql/resources/network-pack/http.header.md b/docs/mql/resources/network-pack/http.header.md new file mode 100644 index 000000000..e95f0b808 --- /dev/null +++ b/docs/mql/resources/network-pack/http.header.md @@ -0,0 +1,31 @@ +--- +title: http.header +id: http.header +sidebar_label: http.header +displayed_sidebar: MQL +description: HTTP header +--- + +# http.header + +**Maturity** + +experimental + +**Description** + +HTTP header + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------- | +| params | map[string][]string | Raw list of parameters for this header | +| sts | [http.header.sts](http.header.sts.md) | HTTP Strict-Transport-Security (HSTS) header | +| xFrameOptions | string | X-Frame-Options header: DENY, SAMEORIGIN, or ALLOW-FROM origin (obsolete) | +| xXssProtection | [http.header.xssProtection](http.header.xssprotection.md) | X-XSS-Protection header | +| xContentTypeOptions | string | X-Content-Type-Options header: nosniff | +| referrerPolicy | string | Referrer-Policy header | +| contentType | [http.header.contentType](http.header.contenttype.md) | Content-Type header | +| setCookie | [http.header.setCookie](http.header.setcookie.md) | Set-Cookie header | +| csp | map[string]string | Content-Security-Policy header | diff --git a/docs/mql/resources/network-pack/http.header.setcookie.md b/docs/mql/resources/network-pack/http.header.setcookie.md new file mode 100644 index 000000000..1d029cbf5 --- /dev/null +++ b/docs/mql/resources/network-pack/http.header.setcookie.md @@ -0,0 +1,25 @@ +--- +title: http.header.setCookie +id: http.header.setCookie +sidebar_label: http.header.setCookie +displayed_sidebar: MQL +description: Set-Cookie header +--- + +# http.header.setCookie + +**Maturity** + +experimental + +**Description** + +Set-Cookie header + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ----------------- | --------------------------------------------- | +| name | string | Name of the cookie to set | +| value | string | Value of the cookie to set | +| params | map[string]string | Additional parameters for setting this cookie | diff --git a/docs/mql/resources/network-pack/http.header.sts.md b/docs/mql/resources/network-pack/http.header.sts.md new file mode 100644 index 000000000..e10a15304 --- /dev/null +++ b/docs/mql/resources/network-pack/http.header.sts.md @@ -0,0 +1,25 @@ +--- +title: http.header.sts +id: http.header.sts +sidebar_label: http.header.sts +displayed_sidebar: MQL +description: HTTP header for Strict-Transport-Security +--- + +# http.header.sts + +**Maturity** + +experimental + +**Description** + +HTTP header for Strict-Transport-Security + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ---- | ---------------------------------------------- | +| maxAge | time | How long to cache HTTPS-only policy in seconds | +| includeSubDomains | bool | Whether caching applies to subdomains | +| preload | bool | Non-standard directive for preloading STS | diff --git a/docs/mql/resources/network-pack/http.header.xssprotection.md b/docs/mql/resources/network-pack/http.header.xssprotection.md new file mode 100644 index 000000000..d7267b666 --- /dev/null +++ b/docs/mql/resources/network-pack/http.header.xssprotection.md @@ -0,0 +1,25 @@ +--- +title: http.header.xssProtection +id: http.header.xssProtection +sidebar_label: http.header.xssProtection +displayed_sidebar: MQL +description: HTTP header for X-XSS-Protection, which is now outdated (replaced by CSP) +--- + +# http.header.xssProtection + +**Maturity** + +experimental + +**Description** + +HTTP header for X-XSS-Protection, which is now outdated (replaced by CSP) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | --------------------------------------------------------------- | +| enabled | bool | Enabled when the header value is set to 1; disabled if set to 0 | +| mode | string | Mode for XSS filtering | +| report | string | Report endpoint for violations (Chromium only) | diff --git a/docs/mql/resources/network-pack/http.md b/docs/mql/resources/network-pack/http.md new file mode 100644 index 000000000..0a86ba403 --- /dev/null +++ b/docs/mql/resources/network-pack/http.md @@ -0,0 +1,13 @@ +--- +title: http +id: http +sidebar_label: http +displayed_sidebar: MQL +description: HTTP endpoint +--- + +# http + +**Description** + +HTTP endpoint diff --git a/docs/mql/resources/network-pack/openpgp.entities.md b/docs/mql/resources/network-pack/openpgp.entities.md new file mode 100644 index 000000000..df01e26d9 --- /dev/null +++ b/docs/mql/resources/network-pack/openpgp.entities.md @@ -0,0 +1,19 @@ +--- +title: openpgp.entities +id: openpgp.entities +sidebar_label: openpgp.entities +displayed_sidebar: MQL +--- + +# openpgp.entities + +**List** + +[]openpgp.entity + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------------------------------------- | ----------- | +| content | string | | +| list | [][openpgp.entity](openpgp.entity.md) | | diff --git a/docs/mql/resources/network-pack/openpgp.entity.md b/docs/mql/resources/network-pack/openpgp.entity.md new file mode 100644 index 000000000..37c0d9f14 --- /dev/null +++ b/docs/mql/resources/network-pack/openpgp.entity.md @@ -0,0 +1,20 @@ +--- +title: openpgp.entity +id: openpgp.entity +sidebar_label: openpgp.entity +displayed_sidebar: MQL +description: OpenPGP entity +--- + +# openpgp.entity + +**Description** + +OpenPGP entity + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------------------------------------------------- | ----------------------------------------------- | +| primaryPublicKey | [openpgp.publicKey](openpgp.publickey.md) | Primary public key, which must be a signing key | +| identities | [][openpgp.identity](openpgp.identity.md) | Entity's identities | diff --git a/docs/mql/resources/network-pack/openpgp.identity.md b/docs/mql/resources/network-pack/openpgp.identity.md new file mode 100644 index 000000000..77ea127f5 --- /dev/null +++ b/docs/mql/resources/network-pack/openpgp.identity.md @@ -0,0 +1,24 @@ +--- +title: openpgp.identity +id: openpgp.identity +sidebar_label: openpgp.identity +displayed_sidebar: MQL +description: OpenPGP identity +--- + +# openpgp.identity + +**Description** + +OpenPGP identity + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------------------- | -------------------------------------------------------------- | +| fingerprint | string | Primary key fingerprint | +| id | string | Full name in form of `Full Name (comment) ` | +| name | string | Name | +| email | string | Email | +| comment | string | Comment | +| signatures | [][openpgp.signature](openpgp.signature.md) | Identity signatures | diff --git a/docs/mql/resources/network-pack/openpgp.publickey.md b/docs/mql/resources/network-pack/openpgp.publickey.md new file mode 100644 index 000000000..d94158bd4 --- /dev/null +++ b/docs/mql/resources/network-pack/openpgp.publickey.md @@ -0,0 +1,24 @@ +--- +title: openpgp.publicKey +id: openpgp.publicKey +sidebar_label: openpgp.publicKey +displayed_sidebar: MQL +description: OpenPGP public key +--- + +# openpgp.publicKey + +**Description** + +OpenPGP public key + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ----------------- | +| id | string | Key ID | +| version | int | Key version | +| fingerprint | string | Key fingerprint | +| keyAlgorithm | string | Key algorithm | +| bitLength | int | Key bit length | +| creationTime | time | Key creation time | diff --git a/docs/mql/resources/network-pack/openpgp.signature.md b/docs/mql/resources/network-pack/openpgp.signature.md new file mode 100644 index 000000000..09dc94132 --- /dev/null +++ b/docs/mql/resources/network-pack/openpgp.signature.md @@ -0,0 +1,29 @@ +--- +title: openpgp.signature +id: openpgp.signature +sidebar_label: openpgp.signature +displayed_sidebar: MQL +description: OpenPGP signature +--- + +# openpgp.signature + +**Description** + +OpenPGP signature + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------ | ----------------------------- | +| fingerprint | string | Primary key fingerprint | +| identityName | string | Identity name | +| hash | string | Signature hash | +| version | int | Signature version | +| signatureType | string | Signature type | +| keyAlgorithm | string | Hash algorithm | +| creationTime | time | Creation time | +| lifetimeSecs | int | Signature lifetime in seconds | +| expiresIn | time | Expiration duration | +| keyLifetimeSecs | int | Key lifetime in seconds | +| keyExpiresIn | time | Key expiration duration | diff --git a/docs/mql/resources/network-pack/pkix.extension.md b/docs/mql/resources/network-pack/pkix.extension.md new file mode 100644 index 000000000..15501cbca --- /dev/null +++ b/docs/mql/resources/network-pack/pkix.extension.md @@ -0,0 +1,22 @@ +--- +title: pkix.extension +id: pkix.extension +sidebar_label: pkix.extension +displayed_sidebar: MQL +description: x509 certificate PKIX extension +--- + +# pkix.extension + +**Description** + +x509 certificate PKIX extension + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | --------------------------- | +| id | string | ID | +| identifier | string | Extension identifier | +| critical | bool | Flag for critical extension | +| value | string | Extension value | diff --git a/docs/mql/resources/network-pack/pkix.name.md b/docs/mql/resources/network-pack/pkix.name.md new file mode 100644 index 000000000..14998eba4 --- /dev/null +++ b/docs/mql/resources/network-pack/pkix.name.md @@ -0,0 +1,31 @@ +--- +title: pkix.name +id: pkix.name +sidebar_label: pkix.name +displayed_sidebar: MQL +description: x509 certificate PKIX name +--- + +# pkix.name + +**Description** + +x509 certificate PKIX name + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------- | ---------------------------- | +| id | string | ID | +| dn | string | Distinguished name qualifier | +| serialNumber | string | Serial number | +| commonName | string | Common name | +| country | []string | Country | +| organization | []string | Organization | +| organizationalUnit | []string | Organizational unit | +| locality | []string | | +| province | []string | State or province | +| streetAddress | []string | Street address | +| postalCode | []string | Postal code | +| names | map[string]string | | +| extraNames | map[string]string | | diff --git a/docs/mql/resources/network-pack/pkix.sanextension.md b/docs/mql/resources/network-pack/pkix.sanextension.md new file mode 100644 index 000000000..d395f6792 --- /dev/null +++ b/docs/mql/resources/network-pack/pkix.sanextension.md @@ -0,0 +1,23 @@ +--- +title: pkix.sanExtension +id: pkix.sanExtension +sidebar_label: pkix.sanExtension +displayed_sidebar: MQL +description: x509 certificate PKIX Subject Alternative Name (SAN) extension +--- + +# pkix.sanExtension + +**Description** + +x509 certificate PKIX Subject Alternative Name (SAN) extension + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ----------------------------------- | ------------------------------- | +| extension | [pkix.extension](pkix.extension.md) | x509 certificate PKIX extension | +| dnsNames | []string | DNS names | +| ipAddresses | []string | IP addresses | +| emailAddresses | []string | Email addresses | +| uris | []string | URIs | diff --git a/docs/mql/resources/network-pack/socket.md b/docs/mql/resources/network-pack/socket.md new file mode 100644 index 000000000..0477e5d49 --- /dev/null +++ b/docs/mql/resources/network-pack/socket.md @@ -0,0 +1,21 @@ +--- +title: socket +id: socket +sidebar_label: socket +displayed_sidebar: MQL +description: Socket +--- + +# socket + +**Description** + +Socket + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ------------------------ | +| protocol | string | Protocol for this socket | +| port | int | Port number | +| address | string | Target address | diff --git a/docs/mql/resources/network-pack/tls.md b/docs/mql/resources/network-pack/tls.md new file mode 100644 index 000000000..1efafff7f --- /dev/null +++ b/docs/mql/resources/network-pack/tls.md @@ -0,0 +1,30 @@ +--- +title: tls +id: tls +sidebar_label: tls +displayed_sidebar: MQL +description: TLS +--- + +# tls + +**Description** + +TLS + +**Init** + +tls(target string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | --------------------------------------- | ---------------------------------------------------------- | +| socket | [socket](socket.md) | Socket of this connection | +| domainName | string | An optional domain name to test | +| params | dict | List of all parameters for this TLS/SSL connection | +| versions | []string | Version of TLS/SSL that is being used | +| ciphers | []string | Ciphers supported by this TLS/SSL connection | +| extensions | []string | Extensions supported by this TLS/SSL connection | +| certificates | [][certificate](certificate.md) | Certificates provided in this TLS/SSL connection | +| nonSniCertificates | [][certificate](certificate.md) | Certificates provided without server name indication (SNI) | diff --git a/docs/mql/resources/network-pack/url.md b/docs/mql/resources/network-pack/url.md new file mode 100644 index 000000000..a4ab75984 --- /dev/null +++ b/docs/mql/resources/network-pack/url.md @@ -0,0 +1,32 @@ +--- +title: url +id: url +sidebar_label: url +displayed_sidebar: MQL +description: URL resource, generally represented as +--- + +# url + +**Description** + +URL resource, generally represented as: + +**Init** + +url(raw string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------- | ---------------------------------------------------------------------------- | +| string | string | The full URL as a string | +| scheme | string | Scheme (e.g., http, https, ssh) | +| user | string | User component (can contain username or token but no password) | +| password | string | Password, an additional optional component of the user info | +| host | string | Host, either registered name or IP (e.g., mondoo.com) | +| port | int | Port, optional decimal number (e.g., 80) | +| path | string | Path, consisting of segments separated by '/' | +| query | map[string]string | Query, optional, attached to path via '?', parsed via '&' and ';' delimiters | +| rawQuery | string | Raw query, optional raw string attached to path after '?' | +| rawFragment | string | Fragment, optional raw string attached to path after '#' | diff --git a/docs/mql/resources/oci-pack/README.md b/docs/mql/resources/oci-pack/README.md new file mode 100644 index 000000000..6ca5c54c7 --- /dev/null +++ b/docs/mql/resources/oci-pack/README.md @@ -0,0 +1,33 @@ +--- +title: Oracle Cloud Infrastructure (OCI) Resource Pack - MQL Resources +id: oracle.cloud.infrastructure.oci.pack +sidebar_label: Oracle Cloud Infrastructure (OCI) Resource Pack +displayed_sidebar: MQL +description: The Oracle Cloud Infrastructure (OCI) resource pack lets you use MQL to query and assess the security of your OCI cloud services. +--- + +# Mondoo Oracle Cloud Infrastructure (OCI) Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| [oci](oci.md) | Oracle Cloud Infrastructure (OCI) tenancy | +| [oci.compartment](oci.compartment.md) | Oracle Cloud Infrastructure (OCI) compartment | +| [oci.compute](oci.compute.md) | Oracle Cloud Infrastructure (OCI) Compute | +| [oci.compute.image](oci.compute.image.md) | Oracle Cloud Infrastructure (OCI) Compute image | +| [oci.compute.instance](oci.compute.instance.md) | Oracle Cloud Infrastructure (OCI) Compute instance | +| [oci.identity](oci.identity.md) | Oracle Cloud Infrastructure (OCI) identity | +| [oci.identity.apiKey](oci.identity.apikey.md) | Oracle Cloud Infrastructure (OCI) API key (a PEM-format RSA credential) | +| [oci.identity.authToken](oci.identity.authtoken.md) | Oracle Cloud Infrastructure (OCI) token string | +| [oci.identity.customerSecretKey](oci.identity.customersecretkey.md) | Oracle Cloud Infrastructure (OCI) customer secret key for OCI Object Storage service | +| [oci.identity.group](oci.identity.group.md) | Oracle Cloud Infrastructure (OCI) collection of users | +| [oci.identity.policy](oci.identity.policy.md) | Policy that specifies the type of access a group has to the resources in a compartment | +| [oci.identity.user](oci.identity.user.md) | Oracle Cloud Infrastructure (OCI) identity user | +| [oci.network](oci.network.md) | Oracle Cloud Infrastructure (OCI) Networking | +| [oci.network.securityList](oci.network.securitylist.md) | Oracle Cloud Infrastructure (OCI) VCN security list virtual firewall rules | +| [oci.network.vcn](oci.network.vcn.md) | Oracle Cloud Infrastructure (OCI) virtual cloud network (VCN) | +| [oci.objectStorage](oci.objectstorage.md) | Oracle Cloud Infrastructure (OCI) Object Storage | +| [oci.objectStorage.bucket](oci.objectstorage.bucket.md) | Oracle Cloud Infrastructure (OCI) Object Storage bucket | +| [oci.region](oci.region.md) | Oracle Cloud Infrastructure (OCI) region | +| [oci.tenancy](oci.tenancy.md) | Oracle Cloud Infrastructure (OCI) tenancy | diff --git a/docs/mql/resources/oci-pack/oci.compartment.md b/docs/mql/resources/oci-pack/oci.compartment.md new file mode 100644 index 000000000..8a03ad80e --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.compartment.md @@ -0,0 +1,23 @@ +--- +title: oci.compartment +id: oci.compartment +sidebar_label: oci.compartment +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) compartment +--- + +# oci.compartment + +**Description** + +Oracle Cloud Infrastructure (OCI) compartment + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------------- | +| id | string | Compartment ID | +| name | string | Compartment name | +| description | string | Description of the compartment | +| created | time | Time when the compartment was created | +| state | string | Compartment state | diff --git a/docs/mql/resources/oci-pack/oci.compute.image.md b/docs/mql/resources/oci-pack/oci.compute.image.md new file mode 100644 index 000000000..db71e4f83 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.compute.image.md @@ -0,0 +1,23 @@ +--- +title: oci.compute.image +id: oci.compute.image +sidebar_label: oci.compute.image +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) Compute image +--- + +# oci.compute.image + +**Description** + +Oracle Cloud Infrastructure (OCI) Compute image + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------------------- | ------------------------------- | +| id | string | Image ID | +| name | string | Image name | +| region | [oci.region](oci.region.md) | Region | +| created | time | Time when the image was created | +| state | string | Image state | diff --git a/docs/mql/resources/oci-pack/oci.compute.instance.md b/docs/mql/resources/oci-pack/oci.compute.instance.md new file mode 100644 index 000000000..de7a37b08 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.compute.instance.md @@ -0,0 +1,23 @@ +--- +title: oci.compute.instance +id: oci.compute.instance +sidebar_label: oci.compute.instance +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) Compute instance +--- + +# oci.compute.instance + +**Description** + +Oracle Cloud Infrastructure (OCI) Compute instance + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------------------- | ---------------------------------- | +| id | string | Instance ID | +| name | string | Instance name | +| region | [oci.region](oci.region.md) | Region | +| created | time | Time when the instance was created | +| state | string | Instance state | diff --git a/docs/mql/resources/oci-pack/oci.compute.md b/docs/mql/resources/oci-pack/oci.compute.md new file mode 100644 index 000000000..51d917e5e --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.compute.md @@ -0,0 +1,20 @@ +--- +title: oci.compute +id: oci.compute +sidebar_label: oci.compute +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) Compute +--- + +# oci.compute + +**Description** + +Oracle Cloud Infrastructure (OCI) Compute + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------------------------------------------------- | ----------- | +| instances | [][oci.compute.instance](oci.compute.instance.md) | Instances | +| images | [][oci.compute.image](oci.compute.image.md) | Images | diff --git a/docs/mql/resources/oci-pack/oci.identity.apikey.md b/docs/mql/resources/oci-pack/oci.identity.apikey.md new file mode 100644 index 000000000..a53e3b30a --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.identity.apikey.md @@ -0,0 +1,23 @@ +--- +title: oci.identity.apiKey +id: oci.identity.apiKey +sidebar_label: oci.identity.apiKey +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) API key (a PEM-format RSA credential) +--- + +# oci.identity.apiKey + +**Description** + +Oracle Cloud Infrastructure (OCI) API key (a PEM-format RSA credential) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ----------------------------- | +| id | string | Key ID | +| value | string | Key value | +| fingerprint | string | Key fingerprint | +| created | time | Time when the key was created | +| state | string | Key state | diff --git a/docs/mql/resources/oci-pack/oci.identity.authtoken.md b/docs/mql/resources/oci-pack/oci.identity.authtoken.md new file mode 100644 index 000000000..cca650204 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.identity.authtoken.md @@ -0,0 +1,23 @@ +--- +title: oci.identity.authToken +id: oci.identity.authToken +sidebar_label: oci.identity.authToken +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) token string +--- + +# oci.identity.authToken + +**Description** + +Oracle Cloud Infrastructure (OCI) token string + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------- | +| id | string | Token ID | +| description | string | Token description | +| created | time | Time when the token was created | +| expires | time | Time when the token will expire | +| state | string | Key state | diff --git a/docs/mql/resources/oci-pack/oci.identity.customersecretkey.md b/docs/mql/resources/oci-pack/oci.identity.customersecretkey.md new file mode 100644 index 000000000..3c82b0294 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.identity.customersecretkey.md @@ -0,0 +1,22 @@ +--- +title: oci.identity.customerSecretKey +id: oci.identity.customerSecretKey +sidebar_label: oci.identity.customerSecretKey +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) customer secret key for OCI Object Storage service +--- + +# oci.identity.customerSecretKey + +**Description** + +Oracle Cloud Infrastructure (OCI) customer secret key for OCI Object Storage service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | ----------------------------- | +| id | string | Key ID | +| name | string | Key name | +| created | time | Time when the key was created | +| state | string | Key state | diff --git a/docs/mql/resources/oci-pack/oci.identity.group.md b/docs/mql/resources/oci-pack/oci.identity.group.md new file mode 100644 index 000000000..993b84571 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.identity.group.md @@ -0,0 +1,24 @@ +--- +title: oci.identity.group +id: oci.identity.group +sidebar_label: oci.identity.group +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) collection of users +--- + +# oci.identity.group + +**Description** + +Oracle Cloud Infrastructure (OCI) collection of users + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------ | ------------------------------ | +| id | string | User ID | +| compartmentID | string | Tenancy containing the user | +| name | string | Name of the user | +| description | string | Description of the user | +| created | time | Time when the user was created | +| state | string | Instance state | diff --git a/docs/mql/resources/oci-pack/oci.identity.md b/docs/mql/resources/oci-pack/oci.identity.md new file mode 100644 index 000000000..23d0dfad3 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.identity.md @@ -0,0 +1,21 @@ +--- +title: oci.identity +id: oci.identity +sidebar_label: oci.identity +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) identity +--- + +# oci.identity + +**Description** + +Oracle Cloud Infrastructure (OCI) identity + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------------------------------------------------------- | ----------- | +| users | [][oci.identity.user](oci.identity.user.md) | Users | +| groups | [][oci.identity.group](oci.identity.group.md) | Groups | +| policies | [][oci.identity.policy](oci.identity.policy.md) | Policies | diff --git a/docs/mql/resources/oci-pack/oci.identity.policy.md b/docs/mql/resources/oci-pack/oci.identity.policy.md new file mode 100644 index 000000000..0d7a5d0e1 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.identity.policy.md @@ -0,0 +1,25 @@ +--- +title: oci.identity.policy +id: oci.identity.policy +sidebar_label: oci.identity.policy +displayed_sidebar: MQL +description: Policy that specifies the type of access a group has to the resources in a compartment +--- + +# oci.identity.policy + +**Description** + +Policy that specifies the type of access a group has to the resources in a compartment + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ---------------- | -------------------------------- | +| id | string | User ID | +| compartmentID | string | Tenancy containing the policy | +| name | string | Name of the policy | +| description | string | Description of the policy | +| created | time | Time when the policy was created | +| state | string | Instance state | +| statements | []string | Policy statements | diff --git a/docs/mql/resources/oci-pack/oci.identity.user.md b/docs/mql/resources/oci-pack/oci.identity.user.md new file mode 100644 index 000000000..bfd9a6164 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.identity.user.md @@ -0,0 +1,34 @@ +--- +title: oci.identity.user +id: oci.identity.user +sidebar_label: oci.identity.user +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) identity user +--- + +# oci.identity.user + +**Description** + +Oracle Cloud Infrastructure (OCI) identity user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------- | +| id | string | User ID | +| compartmentID | string | Tenancy containing the user | +| name | string | Name of the user | +| description | string | Description of the user | +| created | time | Time when the user was created | +| state | string | Instance state | +| mfaActivated | bool | Whether MFA is activated | +| email | string | User email address | +| emailVerified | bool | Whether email is verified | +| capabilities | map[string]bool | Properties indicating how the user is allowed to authenticate | +| lastLogin | time | Most recent login | +| previousLogin | time | Previous login | +| apiKeys | [][oci.identity.apiKey](oci.identity.apikey.md) | API keys | +| customerSecretKeys | [][oci.identity.customerSecretKey](oci.identity.customersecretkey.md) | Customer secret keys | +| authTokens | [][oci.identity.authToken](oci.identity.authtoken.md) | Auth tokens | +| groups | [][oci.identity.group](oci.identity.group.md) | User groups | diff --git a/docs/mql/resources/oci-pack/oci.md b/docs/mql/resources/oci-pack/oci.md new file mode 100644 index 000000000..e8784c1e6 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.md @@ -0,0 +1,20 @@ +--- +title: oci +id: oci +sidebar_label: oci +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) tenancy +--- + +# oci + +**Description** + +Oracle Cloud Infrastructure (OCI) tenancy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------------- | ------------ | +| regions | [][oci.region](oci.region.md) | Regions | +| compartments | [][oci.compartment](oci.compartment.md) | Compartments | diff --git a/docs/mql/resources/oci-pack/oci.network.md b/docs/mql/resources/oci-pack/oci.network.md new file mode 100644 index 000000000..391a149fc --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.network.md @@ -0,0 +1,20 @@ +--- +title: oci.network +id: oci.network +sidebar_label: oci.network +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) Networking +--- + +# oci.network + +**Description** + +Oracle Cloud Infrastructure (OCI) Networking + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------------------------------------- | ---------------------- | +| vcns | [][oci.network.vcn](oci.network.vcn.md) | Virtual Cloud Networks | +| securityLists | [][oci.network.securityList](oci.network.securitylist.md) | VCN Security List | diff --git a/docs/mql/resources/oci-pack/oci.network.securitylist.md b/docs/mql/resources/oci-pack/oci.network.securitylist.md new file mode 100644 index 000000000..77e9493b1 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.network.securitylist.md @@ -0,0 +1,25 @@ +--- +title: oci.network.securityList +id: oci.network.securityList +sidebar_label: oci.network.securityList +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) VCN security list virtual firewall rules +--- + +# oci.network.securityList + +**Description** + +Oracle Cloud Infrastructure (OCI) VCN security list virtual firewall rules + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | -------------- | ------------------------------------- | +| id | string | SecurityList ID | +| compartmentID | string | Tenancy containing the VCN | +| name | string | VCN name | +| created | time | Time when the VCN was created | +| state | string | VCN state | +| egressSecurityRules | []dict | Rules for allowing egress IP packets | +| ingressSecurityRules | []dict | Rules for allowing ingress IP packets | diff --git a/docs/mql/resources/oci-pack/oci.network.vcn.md b/docs/mql/resources/oci-pack/oci.network.vcn.md new file mode 100644 index 000000000..213c24f90 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.network.vcn.md @@ -0,0 +1,25 @@ +--- +title: oci.network.vcn +id: oci.network.vcn +sidebar_label: oci.network.vcn +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) virtual cloud network (VCN) +--- + +# oci.network.vcn + +**Description** + +Oracle Cloud Infrastructure (OCI) virtual cloud network (VCN) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ---------------- | ----------------------------- | +| id | string | VCN ID | +| compartmentID | string | Tenancy containing the VCN | +| name | string | VCN name | +| created | time | Time when the VCN was created | +| state | string | VCN state | +| cidrBlock | string | Deprecated | +| cidrBlocks | []string | List of IPv4 CIDR blocks | diff --git a/docs/mql/resources/oci-pack/oci.objectstorage.bucket.md b/docs/mql/resources/oci-pack/oci.objectstorage.bucket.md new file mode 100644 index 000000000..20f76e05b --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.objectstorage.bucket.md @@ -0,0 +1,29 @@ +--- +title: oci.objectStorage.bucket +id: oci.objectStorage.bucket +sidebar_label: oci.objectStorage.bucket +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) Object Storage bucket +--- + +# oci.objectStorage.bucket + +**Description** + +Oracle Cloud Infrastructure (OCI) Object Storage bucket + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | --------------------------- | --------------------------------------------------- | +| namespace | string | Bucket namespace | +| name | string | Bucket name | +| compartmentID | string | Tenancy containing the bucket | +| created | time | Time when the vcn was created | +| region | [oci.region](oci.region.md) | Region | +| publicAccessType | string | Type of public access enabled | +| storageTier | string | Storage tier type | +| autoTiering | string | auto tiering status | +| versioning | string | Bucket versioning | +| objectEventsEnabled | bool | Whether events are emitted for object state changes | +| replicationEnabled | bool | Whether the bucket is a replication source | diff --git a/docs/mql/resources/oci-pack/oci.objectstorage.md b/docs/mql/resources/oci-pack/oci.objectstorage.md new file mode 100644 index 000000000..5a1b56d88 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.objectstorage.md @@ -0,0 +1,20 @@ +--- +title: oci.objectStorage +id: oci.objectStorage +sidebar_label: oci.objectStorage +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) Object Storage +--- + +# oci.objectStorage + +**Description** + +Oracle Cloud Infrastructure (OCI) Object Storage + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ----------------------------------------------------------------- | ----------- | +| namespace | string | Namespace | +| buckets | [][oci.objectStorage.bucket](oci.objectstorage.bucket.md) | Buckets | diff --git a/docs/mql/resources/oci-pack/oci.region.md b/docs/mql/resources/oci-pack/oci.region.md new file mode 100644 index 000000000..aacb6ce37 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.region.md @@ -0,0 +1,22 @@ +--- +title: oci.region +id: oci.region +sidebar_label: oci.region +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) region +--- + +# oci.region + +**Description** + +Oracle Cloud Infrastructure (OCI) region + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ------------------------------------- | +| id | string | Region's key | +| name | string | Region name | +| isHomeRegion | bool | Whether the region is the home region | +| status | string | Region subscription status | diff --git a/docs/mql/resources/oci-pack/oci.tenancy.md b/docs/mql/resources/oci-pack/oci.tenancy.md new file mode 100644 index 000000000..852c5bf97 --- /dev/null +++ b/docs/mql/resources/oci-pack/oci.tenancy.md @@ -0,0 +1,22 @@ +--- +title: oci.tenancy +id: oci.tenancy +sidebar_label: oci.tenancy +displayed_sidebar: MQL +description: Oracle Cloud Infrastructure (OCI) tenancy +--- + +# oci.tenancy + +**Description** + +Oracle Cloud Infrastructure (OCI) tenancy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------ | ------------------------------ | +| id | string | Compartment ID | +| name | string | Compartment name | +| description | string | Description of the compartment | +| retentionPeriod | time | Retention period duration | diff --git a/docs/mql/resources/okta-pack/README.md b/docs/mql/resources/okta-pack/README.md new file mode 100644 index 000000000..f959f3bf7 --- /dev/null +++ b/docs/mql/resources/okta-pack/README.md @@ -0,0 +1,29 @@ +--- +title: Okta Resource Pack - MQL Resources +id: okta.pack +sidebar_label: Okta Resource Pack +displayed_sidebar: MQL +description: The Okta resource pack lets you use MQL to query and assess the security of your Okta identities and configuration. +--- + +# Mondoo Okta Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| --------------------------------------------------------- | --------------------------- | +| [okta](okta.md) | Okta | +| [okta.application](okta.application.md) | Okta application | +| [okta.customRole](okta.customrole.md) | Okta custom role | +| [okta.domain](okta.domain.md) | Okta domain | +| [okta.group](okta.group.md) | Okta group | +| [okta.groupRule](okta.grouprule.md) | Okta group rule | +| [okta.network](okta.network.md) | Okta network zone | +| [okta.organization](okta.organization.md) | Okta organization | +| [okta.policies](okta.policies.md) | Okta policy | +| [okta.policy](okta.policy.md) | Okta policy | +| [okta.policyRule](okta.policyrule.md) | Okta policy rule | +| [okta.role](okta.role.md) | Okta role | +| [okta.threatsConfiguration](okta.threatsconfiguration.md) | Okta ThreatInsight settings | +| [okta.trustedOrigin](okta.trustedorigin.md) | Okta trusted origin | +| [okta.user](okta.user.md) | Okta user | diff --git a/docs/mql/resources/okta-pack/okta.application.md b/docs/mql/resources/okta-pack/okta.application.md new file mode 100644 index 000000000..6e08bcec9 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.application.md @@ -0,0 +1,31 @@ +--- +title: okta.application +id: okta.application +sidebar_label: okta.application +displayed_sidebar: MQL +description: Okta application +--- + +# okta.application + +**Description** + +Okta application + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ---------------- | ----------------------------------------------- | +| id | string | Unique key for the application | +| name | string | Unique key that defines the application | +| label | string | User-defined display name for the application | +| created | time | Timestamp when the application was created | +| lastUpdated | time | Timestamp when the application was last updated | +| credentials | dict | Credentials for the specified sign-on mode | +| features | []string | Enabled app features | +| licensing | dict | Okta licensing information | +| profile | dict | Valid JSON schema for specifying properties | +| settings | dict | Settings for the application | +| signOnMode | string | Authentication mode of the application | +| status | string | Status of the application | +| visibility | dict | Visibility settings for the application | diff --git a/docs/mql/resources/okta-pack/okta.customrole.md b/docs/mql/resources/okta-pack/okta.customrole.md new file mode 100644 index 000000000..bc62868e1 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.customrole.md @@ -0,0 +1,22 @@ +--- +title: okta.customRole +id: okta.customRole +sidebar_label: okta.customRole +displayed_sidebar: MQL +description: Okta custom role +--- + +# okta.customRole + +**Description** + +Okta custom role + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ---------------- | ------------------------------ | +| id | string | Identifier for the custom role | +| label | string | Name of the custom role | +| description | string | Description of the custom role | +| permissions | []string | Role permissions | diff --git a/docs/mql/resources/okta-pack/okta.domain.md b/docs/mql/resources/okta-pack/okta.domain.md new file mode 100644 index 000000000..cb7bedbd8 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.domain.md @@ -0,0 +1,23 @@ +--- +title: okta.domain +id: okta.domain +sidebar_label: okta.domain +displayed_sidebar: MQL +description: Okta domain +--- + +# okta.domain + +**Description** + +Okta domain + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | -------------- | ---------------------------------------------------------------------- | +| id | string | Domain ID | +| domain | string | Domain name | +| validationStatus | string | Status of the domain: NOT_STARTED, IN_PROGRESS, VERIFIED, or COMPLETED | +| dnsRecords | []dict | TXT and CNAME records to be registered for the domain | +| publicCertificate | dict | Certificate metadata for the domain | diff --git a/docs/mql/resources/okta-pack/okta.group.md b/docs/mql/resources/okta-pack/okta.group.md new file mode 100644 index 000000000..f12702eec --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.group.md @@ -0,0 +1,28 @@ +--- +title: okta.group +id: okta.group +sidebar_label: okta.group +displayed_sidebar: MQL +description: Okta group +--- + +# okta.group + +**Description** + +Okta group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ----------------------------------- | ------------------------------------------------------------ | +| id | string | Unique key for the group | +| name | string | Group name | +| description | string | Group description | +| type | dict | Determines how a group's profile and memberships are managed | +| created | time | Timestamp when group was created | +| lastMembershipUpdated | time | Timestamp when group's memberships were last updated | +| lastUpdated | time | Timestamp when group's profile was last updated | +| profile | dict | The group's profile properties | +| members | [][okta.user](okta.user.md) | Group members | +| roles | [][okta.role](okta.role.md) | Group roles | diff --git a/docs/mql/resources/okta-pack/okta.grouprule.md b/docs/mql/resources/okta-pack/okta.grouprule.md new file mode 100644 index 000000000..b82c2dfbe --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.grouprule.md @@ -0,0 +1,22 @@ +--- +title: okta.groupRule +id: okta.groupRule +sidebar_label: okta.groupRule +displayed_sidebar: MQL +description: Okta group rule +--- + +# okta.groupRule + +**Description** + +Okta group rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | ----------------------------- | +| id | string | Unique key for the group rule | +| name | string | Group rule name | +| status | string | Group rule status | +| type | string | Group rule type | diff --git a/docs/mql/resources/okta-pack/okta.md b/docs/mql/resources/okta-pack/okta.md new file mode 100644 index 000000000..dbf890f24 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.md @@ -0,0 +1,26 @@ +--- +title: okta +id: okta +sidebar_label: okta +displayed_sidebar: MQL +description: Okta +--- + +# okta + +**Description** + +Okta + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ----------------------------------------------------- | -------------------- | +| users | [][okta.user](okta.user.md) | Okta users | +| groups | [][okta.group](okta.group.md) | Okta groups | +| groupRules | [][okta.groupRule](okta.grouprule.md) | Okta group rules | +| domains | [][okta.domain](okta.domain.md) | Okta domains | +| applications | [][okta.application](okta.application.md) | Okta applications | +| trustedOrigins | [][okta.trustedOrigin](okta.trustedorigin.md) | Okta trusted origins | +| networks | [][okta.network](okta.network.md) | Okta networks | +| customRoles | [][okta.customRole](okta.customrole.md) | Okta custom roles | diff --git a/docs/mql/resources/okta-pack/okta.network.md b/docs/mql/resources/okta-pack/okta.network.md new file mode 100644 index 000000000..2ab3a51c3 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.network.md @@ -0,0 +1,31 @@ +--- +title: okta.network +id: okta.network +sidebar_label: okta.network +displayed_sidebar: MQL +description: Okta network zone +--- + +# okta.network + +**Description** + +Okta network zone + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ---------------- | ------------------------------------------------------------------- | +| id | string | Unique identifier for the network zone | +| name | string | Name for the network zone | +| type | string | Type of the network zone | +| created | time | Timestamp when the network zone was created | +| lastUpdated | time | Timestamp when the network zone was last updated | +| status | string | Status of the network zone | +| system | bool | Whether the network zone is system-defined | +| asns | []string | ISP ASNs for the network zone | +| usage | string | Usage of zone: POLICY or BLOCKLIST | +| proxyType | string | IP type | +| proxies | []dict | IP addresses that are allowed to forward a request from the gateway | +| locations | []dict | Locations for the network zone | +| gateways | []dict | IP addresses of this zone | diff --git a/docs/mql/resources/okta-pack/okta.organization.md b/docs/mql/resources/okta-pack/okta.organization.md new file mode 100644 index 000000000..26f1c2d2c --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.organization.md @@ -0,0 +1,40 @@ +--- +title: okta.organization +id: okta.organization +sidebar_label: okta.organization +displayed_sidebar: MQL +description: Okta organization +--- + +# okta.organization + +**Description** + +Okta organization + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------- | +| id | string | ID of organization | +| companyName | string | Name of the company | +| status | string | Status of organization. Accepted values: ACTIVE, INACTIVE | +| subdomain | string | Subdomain of organization | +| address1 | string | Primary address of organization | +| address2 | string | Secondary address of organization | +| city | string | City of organization | +| state | string | State of organization | +| phoneNumber | string | Phone number of organization | +| postalCode | string | Postal code of organization | +| country | string | Country code of organization | +| supportPhoneNumber | string | Support help phone of organization | +| website | string | The organization's website | +| endUserSupportHelpURL | string | Support link of organization | +| created | time | Timestamp when organization was created | +| lastUpdated | time | Timestamp when org was last updated | +| expiresAt | time | Expiration of organization | +| optOutCommunicationEmails | bool | Indicates whether the organization's users receive Okta communication email | +| billingContact | [okta.user](okta.user.md) | Billing contact of organization | +| technicalContact | [okta.user](okta.user.md) | Technical contact of organization | +| securityNotificationEmails | dict | Security notification email | +| threatInsightSettings | [okta.threatsConfiguration](okta.threatsconfiguration.md) | Okta ThreatInsight settings | diff --git a/docs/mql/resources/okta-pack/okta.policies.md b/docs/mql/resources/okta-pack/okta.policies.md new file mode 100644 index 000000000..f263f96f1 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.policies.md @@ -0,0 +1,25 @@ +--- +title: okta.policies +id: okta.policies +sidebar_label: okta.policies +displayed_sidebar: MQL +description: Okta policy +--- + +# okta.policies + +**Description** + +Okta policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | --------------------------------------- | ---------------------------- | +| password | [][okta.policy](okta.policy.md) | Password policies | +| mfaEnroll | [][okta.policy](okta.policy.md) | MFA policies | +| signOn | [][okta.policy](okta.policy.md) | Sign-on policies | +| oauthAuthorizationPolicy | [][okta.policy](okta.policy.md) | OAuth authorization policies | +| idpDiscovery | [][okta.policy](okta.policy.md) | IDP discovery policies | +| accessPolicy | [][okta.policy](okta.policy.md) | Access policies | +| profileEnrollment | [][okta.policy](okta.policy.md) | Profile enforcement policies | diff --git a/docs/mql/resources/okta-pack/okta.policy.md b/docs/mql/resources/okta-pack/okta.policy.md new file mode 100644 index 000000000..a9a518c98 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.policy.md @@ -0,0 +1,30 @@ +--- +title: okta.policy +id: okta.policy +sidebar_label: okta.policy +displayed_sidebar: MQL +description: Okta policy +--- + +# okta.policy + +**Description** + +Okta policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------------------------- | ------------------------------------------- | +| id | string | Identifier of the policy | +| name | string | Name of the policy | +| description | string | Description of the policy | +| priority | int | Priority of the policy | +| status | string | Status of the policy: ACTIVE or INACTIVE | +| system | bool | Whether the policy is a system policy | +| type | string | Specifies the type of policy | +| conditions | dict | Conditions for policy | +| settings | dict | Settings for the policy | +| created | time | Timestamp when the policy was created | +| lastUpdated | time | Timestamp when the policy was last modified | +| rules | [][okta.policyRule](okta.policyrule.md) | Rules attached to the policy | diff --git a/docs/mql/resources/okta-pack/okta.policyrule.md b/docs/mql/resources/okta-pack/okta.policyrule.md new file mode 100644 index 000000000..f9efa2afb --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.policyrule.md @@ -0,0 +1,28 @@ +--- +title: okta.policyRule +id: okta.policyRule +sidebar_label: okta.policyRule +displayed_sidebar: MQL +description: Okta policy rule +--- + +# okta.policyRule + +**Description** + +Okta policy rule + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ----------------------------------------- | +| id | string | Identifier of the rule | +| name | string | Name of the rule | +| priority | int | Priority of the rule | +| status | string | Status of the rule: ACTIVE or INACTIVE | +| system | bool | Whether the rule is a system policy rule | +| type | string | Rule type | +| actions | dict | Actions for rule | +| conditions | dict | Conditions for a rule | +| created | time | Timestamp when the rule was created | +| lastUpdated | time | Timestamp when the rule was last modified | diff --git a/docs/mql/resources/okta-pack/okta.role.md b/docs/mql/resources/okta-pack/okta.role.md new file mode 100644 index 000000000..1bbf46735 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.role.md @@ -0,0 +1,25 @@ +--- +title: okta.role +id: okta.role +sidebar_label: okta.role +displayed_sidebar: MQL +description: Okta role +--- + +# okta.role + +**Description** + +Okta role + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | ---------------------------------------- | +| id | string | The identifier of the role | +| assignmentType | string | The assignment type of the role | +| created | time | Timestamp when the role was created | +| label | string | The label of the role | +| lastUpdated | time | Timestamp when the role was last updated | +| status | string | The status of the role | +| type | string | The type of the role | diff --git a/docs/mql/resources/okta-pack/okta.threatsconfiguration.md b/docs/mql/resources/okta-pack/okta.threatsconfiguration.md new file mode 100644 index 000000000..7ad34dd2b --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.threatsconfiguration.md @@ -0,0 +1,22 @@ +--- +title: okta.threatsConfiguration +id: okta.threatsConfiguration +sidebar_label: okta.threatsConfiguration +displayed_sidebar: MQL +description: Okta ThreatInsight settings +--- + +# okta.threatsConfiguration + +**Description** + +Okta ThreatInsight settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------- | ------------------------------------------------ | +| action | string | Action | +| excludeZones | [][okta.network](okta.network.md) | Exempt zones | +| created | time | Timestamp when the network zone was created | +| lastUpdated | time | Timestamp when the network zone was last updated | diff --git a/docs/mql/resources/okta-pack/okta.trustedorigin.md b/docs/mql/resources/okta-pack/okta.trustedorigin.md new file mode 100644 index 000000000..aec8857ae --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.trustedorigin.md @@ -0,0 +1,27 @@ +--- +title: okta.trustedOrigin +id: okta.trustedOrigin +sidebar_label: okta.trustedOrigin +displayed_sidebar: MQL +description: Okta trusted origin +--- + +# okta.trustedOrigin + +**Description** + +Okta trusted origin + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | -------------- | ---------------------------------------------------------- | +| id | string | Unique identifier for the trusted origin | +| name | string | Name for the trusted origin | +| origin | string | Unique origin URL for the trusted origin | +| created | time | Timestamp when the trusted origin was created | +| createdBy | string | ID of the entity that created the trusted origin | +| lastUpdated | time | Timestamp when the trusted origin was last updated | +| lastUpdatedBy | string | ID of entity that last updated the trusted origin | +| scopes | []dict | Array of scope types for which this trusted origin is used | +| status | string | Status of the trusted origin | diff --git a/docs/mql/resources/okta-pack/okta.user.md b/docs/mql/resources/okta-pack/okta.user.md new file mode 100644 index 000000000..6c4dcb779 --- /dev/null +++ b/docs/mql/resources/okta-pack/okta.user.md @@ -0,0 +1,32 @@ +--- +title: okta.user +id: okta.user +sidebar_label: okta.user +displayed_sidebar: MQL +description: Okta user +--- + +# okta.user + +**Description** + +Okta user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ----------------------------------- | -------------------------------------------------------------- | +| id | string | Unique key for user | +| typeId | string | User's type identifier | +| type | dict | User's type object | +| credentials | dict | User credentials | +| activated | time | Timestamp when the user was activated | +| created | time | Timestamp when user was created | +| lastLogin | time | Timestamp of last login | +| lastUpdated | time | Timestamp when user was last updated | +| passwordChanged | time | Timestamp when password last changed | +| profile | dict | User profile properties | +| status | string | Current status of user | +| statusChanged | time | Timestamp when status last changed | +| transitioningToStatus | string | Target status of an in-progress asynchronous status transition | +| roles | [][okta.role](okta.role.md) | The roles assigned to the user | diff --git a/docs/mql/resources/opcua-pack/README.md b/docs/mql/resources/opcua-pack/README.md new file mode 100644 index 000000000..f1b17f144 --- /dev/null +++ b/docs/mql/resources/opcua-pack/README.md @@ -0,0 +1,18 @@ +--- +title: OPC UA Resource Pack - MQL Resources +id: opc.ua.pack +sidebar_label: OPC UA Resource Pack +displayed_sidebar: MQL +description: The OPC-UA resource pack lets you use MQL to query and assess the security of your OPC-UA servers. +--- + +# Mondoo OPC UA Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------------- | ---------------- | +| [opcua](opcua.md) | OPC UA | +| [opcua.namespace](opcua.namespace.md) | OPC UA namespace | +| [opcua.node](opcua.node.md) | OPC UA node | +| [opcua.server](opcua.server.md) | Server object | diff --git a/docs/mql/resources/opcua-pack/opcua.md b/docs/mql/resources/opcua-pack/opcua.md new file mode 100644 index 000000000..fc3ac8924 --- /dev/null +++ b/docs/mql/resources/opcua-pack/opcua.md @@ -0,0 +1,21 @@ +--- +title: opcua +id: opcua +sidebar_label: opcua +displayed_sidebar: MQL +description: OPC UA +--- + +# opcua + +**Description** + +OPC UA + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------------------------------------- | ----------------- | +| namespaces | [][opcua.namespace](opcua.namespace.md) | Namespaces | +| root | [opcua.node](opcua.node.md) | Root node | +| nodes | [][opcua.node](opcua.node.md) | List of all nodes | diff --git a/docs/mql/resources/opcua-pack/opcua.namespace.md b/docs/mql/resources/opcua-pack/opcua.namespace.md new file mode 100644 index 000000000..72ce3e340 --- /dev/null +++ b/docs/mql/resources/opcua-pack/opcua.namespace.md @@ -0,0 +1,20 @@ +--- +title: opcua.namespace +id: opcua.namespace +sidebar_label: opcua.namespace +displayed_sidebar: MQL +description: OPC UA namespace +--- + +# opcua.namespace + +**Description** + +OPC UA namespace + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | -------------- | +| id | int | Namespace ID | +| name | string | Namespace name | diff --git a/docs/mql/resources/opcua-pack/opcua.node.md b/docs/mql/resources/opcua-pack/opcua.node.md new file mode 100644 index 000000000..88e03dbbe --- /dev/null +++ b/docs/mql/resources/opcua-pack/opcua.node.md @@ -0,0 +1,32 @@ +--- +title: opcua.node +id: opcua.node +sidebar_label: opcua.node +displayed_sidebar: MQL +description: OPC UA node +--- + +# opcua.node + +**Description** + +OPC UA node + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------------------------------------- | ------------------------------ | +| id | string | Node ID | +| name | string | Node browser name | +| namespace | [opcua.namespace](opcua.namespace.md) | Namespace | +| class | string | Node class | +| description | string | Node description | +| writeable | bool | Indicates if value is writable | +| dataType | string | Data type | +| min | string | Minimum value | +| max | string | Maximum value | +| unit | string | Node unit | +| accessLevel | string | Access level | +| properties | [][opcua.node](opcua.node.md) | Properties | +| components | [][opcua.node](opcua.node.md) | Components | +| organizes | [][opcua.node](opcua.node.md) | Organizes | diff --git a/docs/mql/resources/opcua-pack/opcua.server.md b/docs/mql/resources/opcua-pack/opcua.server.md new file mode 100644 index 000000000..a7c5f5542 --- /dev/null +++ b/docs/mql/resources/opcua-pack/opcua.server.md @@ -0,0 +1,23 @@ +--- +title: opcua.server +id: opcua.server +sidebar_label: opcua.server +displayed_sidebar: MQL +description: Server object +--- + +# opcua.server + +**Description** + +Server object + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------- | ---------------------------- | +| node | [opcua.node](opcua.node.md) | Reference to node | +| buildInfo | dict | Server build info | +| currentTime | time | Current time on server | +| startTime | time | Time when the server started | +| state | string | Server state | diff --git a/docs/mql/resources/os-pack/README.md b/docs/mql/resources/os-pack/README.md new file mode 100644 index 000000000..b03e5865e --- /dev/null +++ b/docs/mql/resources/os-pack/README.md @@ -0,0 +1,118 @@ +--- +title: Operating Systems (OS) Resource Pack - MQL Resources +id: operating.systems.os.pack +sidebar_label: Operating Systems (OS) Resource Pack +displayed_sidebar: MQL +description: The Operating Systems (OS) resource pack lets you use MQL to query and assess the security of your operating system packages and configuration. +--- + +# Mondoo Operating Systems (OS) Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------------------------------- | ---------------------------------------------------------- | +| [asset](asset.md) | | +| [asset.eol](asset.eol.md) | | +| [audit.advisory](audit.advisory.md) | Platform/package advisory | +| [audit.cve](audit.cve.md) | Common Vulnerabilities and Exposures (CVEs) | +| [audit.cvss](audit.cvss.md) | Common Vulnerability Scoring System (CVSS) score | +| [auditpol](auditpol.md) | Windows audit policies | +| [auditpol.entry](auditpol.entry.md) | Windows audit policy | +| [authorizedkeys](authorizedkeys.md) | List of SSH authorized keys | +| [authorizedkeys.entry](authorizedkeys.entry.md) | SSH authorized key | +| [command](command.md) | Results of running a command on the system | +| [container.image](container.image.md) | Container image | +| [container.repository](container.repository.md) | Container registry repository | +| [docker](docker.md) | Docker host resource | +| [docker.container](docker.container.md) | Docker container | +| [docker.image](docker.image.md) | Docker image | +| [file](file.md) | File on the system | +| [file.permissions](file.permissions.md) | Access permissions for a given file | +| [files](files.md) | | +| [files.find](files.find.md) | Find files on the system | +| [group](group.md) | Group on this system | +| [groups](groups.md) | Groups configured on this system | +| [ip6tables](ip6tables.md) | IPv6 tables | +| [iptables](iptables.md) | IPv4 tables | +| [iptables.entry](iptables.entry.md) | | +| [kernel](kernel.md) | System kernel information | +| [kernel.module](kernel.module.md) | System kernel module information | +| [kubelet](kubelet.md) | Kubernetes kubelet configuration | +| [logindefs](logindefs.md) | Shadow password suite configuration | +| [lsblk](lsblk.md) | Unix list block devices | +| [lsblk.entry](lsblk.entry.md) | Unix block device | +| [machine](machine.md) | | +| [machine.baseboard](machine.baseboard.md) | SMBIOS baseboard (or module) information | +| [machine.bios](machine.bios.md) | SMBIOS BIOS information | +| [machine.chassis](machine.chassis.md) | SMBIOS system enclosure or chassis | +| [machine.system](machine.system.md) | SMBIOS system information | +| [macos](macos.md) | macOS specific resources | +| [macos.alf](macos.alf.md) | macOS application layer firewall (ALF) service | +| [macos.systemsetup](macos.systemsetup.md) | macOS machine settings | +| [macos.timemachine](macos.timemachine.md) | macOS Time Machine | +| [mondoo.eol](mondoo.eol.md) | Platform end-of-life information | +| [mount](mount.md) | Unix mounted file system | +| [mount.point](mount.point.md) | Unix mount point | +| [npm.package](npm.package.md) | | +| [npm.packages](npm.packages.md) | npm packages | +| [ntp.conf](ntp.conf.md) | NTP service configuration | +| [os](os.md) | Operating system information | +| [os.base](os.base.md) | | +| [os.linux](os.linux.md) | | +| [os.rootCertificates](os.rootcertificates.md) | Operating system root certificates | +| [os.unix](os.unix.md) | | +| [os.update](os.update.md) | Operating system update information | +| [package](package.md) | Package on the platform or OS | +| [packages](packages.md) | List of packages on this system | +| [pam.conf](pam.conf.md) | PAM configuration (pluggable authentication module) | +| [pam.conf.serviceEntry](pam.conf.serviceentry.md) | | +| [parse.certificates](parse.certificates.md) | Parse certificates from files | +| [parse.ini](parse.ini.md) | Parse INI files | +| [parse.json](parse.json.md) | Parse JSON files | +| [parse.openpgp](parse.openpgp.md) | Parse OpenPGP from files | +| [parse.plist](parse.plist.md) | Parse plist files | +| [parse.yaml](parse.yaml.md) | Parse YAML files | +| [pkgFileInfo](pkgfileinfo.md) | | +| [platform](platform.md) | | +| [platform.advisories](platform.advisories.md) | All platform/package advisories | +| [platform.cves](platform.cves.md) | All platform/package CVEs | +| [platform.eol](platform.eol.md) | Deprecated; will be removed in version 10.0 | +| [port](port.md) | TCP/IP port on the system | +| [ports](ports.md) | TCP/IP ports on the system | +| [powershell](powershell.md) | Results of running a PowerShell script on the system | +| [privatekey](privatekey.md) | Private key resource | +| [process](process.md) | Process on this system | +| [processes](processes.md) | Processes available on this system | +| [python](python.md) | Python package details found on the operating system image | +| [python.package](python.package.md) | Python package information | +| [registrykey](registrykey.md) | Windows registry key | +| [registrykey.property](registrykey.property.md) | Windows registry key property | +| [rsyslog.conf](rsyslog.conf.md) | rsyslog service configuration | +| [secpol](secpol.md) | Windows local security policy | +| [service](service.md) | Service on this system | +| [services](services.md) | Services configured on this system | +| [shadow](shadow.md) | Shadowed password file | +| [shadow.entry](shadow.entry.md) | Shadowed password file entry | +| [sshd](sshd.md) | SSH server resource | +| [sshd.config](sshd.config.md) | SSH server configuration | +| [sshd.config.matchBlock](sshd.config.matchblock.md) | | +| [user](user.md) | User on this system | +| [users](users.md) | Users configured on this system | +| [vuln.advisory](vuln.advisory.md) | Advisory information | +| [vuln.cve](vuln.cve.md) | CVE information | +| [vuln.package](vuln.package.md) | Package information relevant for vulnerability management | +| [vulnmgmt](vulnmgmt.md) | Vulnerability Information | +| [windows](windows.md) | Windows-specific resource to get operating system details | +| [windows.bitlocker](windows.bitlocker.md) | Windows BitLocker | +| [windows.bitlocker.volume](windows.bitlocker.volume.md) | Windows BitLocker volume | +| [windows.feature](windows.feature.md) | Windows feature resource | +| [windows.firewall](windows.firewall.md) | Windows Firewall resource | +| [windows.firewall.profile](windows.firewall.profile.md) | Windows Firewall profile entry | +| [windows.firewall.rule](windows.firewall.rule.md) | Windows Firewall rule entry | +| [windows.hotfix](windows.hotfix.md) | Windows hotfix resource | +| [windows.security](windows.security.md) | | +| [windows.security.health](windows.security.health.md) | Health of the Windows security provider | +| [windows.security.product](windows.security.product.md) | Private Windows security product | +| [yum](yum.md) | Yum package manager resource | +| [yum.repo](yum.repo.md) | Yum repository resource | diff --git a/docs/mql/resources/os-pack/asset.eol.md b/docs/mql/resources/os-pack/asset.eol.md new file mode 100644 index 000000000..506d82551 --- /dev/null +++ b/docs/mql/resources/os-pack/asset.eol.md @@ -0,0 +1,16 @@ +--- +title: asset.eol +id: asset.eol +sidebar_label: asset.eol +displayed_sidebar: MQL +--- + +# asset.eol + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ----------------- | +| docsUrl | string | Documentation URL | +| productUrl | string | Product URL | +| date | time | End-of-Life date | diff --git a/docs/mql/resources/os-pack/asset.md b/docs/mql/resources/os-pack/asset.md new file mode 100644 index 000000000..8358a7754 --- /dev/null +++ b/docs/mql/resources/os-pack/asset.md @@ -0,0 +1,15 @@ +--- +title: asset +id: asset +sidebar_label: asset +displayed_sidebar: MQL +--- + +# asset + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------------------ | -------------------------------------------------------------------------------------------------- | +| cpes | []core.cpe | Common Platform Enumeration (CPE) for the asset | +| vulnerabilityReport | dict | Advisory & vulnerability report, Deprecated; will be removed in version 10.0, use vulnmgmt instead | diff --git a/docs/mql/resources/os-pack/audit.advisory.md b/docs/mql/resources/os-pack/audit.advisory.md new file mode 100644 index 000000000..0b7a725a6 --- /dev/null +++ b/docs/mql/resources/os-pack/audit.advisory.md @@ -0,0 +1,25 @@ +--- +title: audit.advisory +id: audit.advisory +sidebar_label: audit.advisory +displayed_sidebar: MQL +description: Platform/package advisory +--- + +# audit.advisory + +**Description** + +Platform/package advisory + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------- | ------------------------------------- | +| id | string | Advisory ID | +| mrn | string | Mondoo advisory identifier | +| title | string | Advisory title | +| description | string | Advisory description | +| published | time | Advisory publication date | +| modified | time | Last modification date | +| worstScore | [audit.cvss](audit.cvss.md) | Worst CVSS score of all assigned CVEs | diff --git a/docs/mql/resources/os-pack/audit.cve.md b/docs/mql/resources/os-pack/audit.cve.md new file mode 100644 index 000000000..0c7fcfaec --- /dev/null +++ b/docs/mql/resources/os-pack/audit.cve.md @@ -0,0 +1,26 @@ +--- +title: audit.cve +id: audit.cve +sidebar_label: audit.cve +displayed_sidebar: MQL +description: Common Vulnerabilities and Exposures (CVEs) +--- + +# audit.cve + +**Description** + +Common Vulnerabilities and Exposures (CVEs) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------------------- | ------------------------------------- | +| id | string | CVE ID | +| mrn | string | Mondoo CVE identifier | +| state | string | CVE state | +| summary | string | Summary description | +| unscored | bool | Whether the CVE has a CVSS score | +| published | time | Publication date | +| modified | time | Last modification date | +| worstScore | [audit.cvss](audit.cvss.md) | Worst CVSS score of all assigned CVEs | diff --git a/docs/mql/resources/os-pack/audit.cvss.md b/docs/mql/resources/os-pack/audit.cvss.md new file mode 100644 index 000000000..4a5077b73 --- /dev/null +++ b/docs/mql/resources/os-pack/audit.cvss.md @@ -0,0 +1,20 @@ +--- +title: audit.cvss +id: audit.cvss +sidebar_label: audit.cvss +displayed_sidebar: MQL +description: Common Vulnerability Scoring System (CVSS) score +--- + +# audit.cvss + +**Description** + +Common Vulnerability Scoring System (CVSS) score + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | ----------------------------------------- | +| score | float | CVSS score ranging from 0.0 to 10.0 | +| vector | string | CVSS score represented as a vector string | diff --git a/docs/mql/resources/os-pack/auditpol.entry.md b/docs/mql/resources/os-pack/auditpol.entry.md new file mode 100644 index 000000000..878cac83a --- /dev/null +++ b/docs/mql/resources/os-pack/auditpol.entry.md @@ -0,0 +1,24 @@ +--- +title: auditpol.entry +id: auditpol.entry +sidebar_label: auditpol.entry +displayed_sidebar: MQL +description: Windows audit policy +--- + +# auditpol.entry + +**Description** + +Windows audit policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------ | +| machinename | string | Machine name | +| policytarget | string | Policy target | +| subcategory | string | Subcategory | +| subcategoryguid | string | Subcategory GUID | +| inclusionsetting | string | Inclusive setting | +| exclusionsetting | string | Exclusive settings | diff --git a/docs/mql/resources/os-pack/auditpol.md b/docs/mql/resources/os-pack/auditpol.md new file mode 100644 index 000000000..8baeccafe --- /dev/null +++ b/docs/mql/resources/os-pack/auditpol.md @@ -0,0 +1,23 @@ +--- +title: auditpol +id: auditpol +sidebar_label: auditpol +displayed_sidebar: MQL +description: Windows audit policies +--- + +# auditpol + +**Description** + +Windows audit policies + +**List** + +[]auditpol.entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | --------------------------------------------- | ----------- | +| list | [][auditpol.entry](auditpol.entry.md) | | diff --git a/docs/mql/resources/os-pack/authorizedkeys.entry.md b/docs/mql/resources/os-pack/authorizedkeys.entry.md new file mode 100644 index 000000000..778f8d141 --- /dev/null +++ b/docs/mql/resources/os-pack/authorizedkeys.entry.md @@ -0,0 +1,24 @@ +--- +title: authorizedkeys.entry +id: authorizedkeys.entry +sidebar_label: authorizedkeys.entry +displayed_sidebar: MQL +description: SSH authorized key +--- + +# authorizedkeys.entry + +**Description** + +SSH authorized key + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ---------------- | --------------- | +| line | int | Line of the key | +| type | string | Type of key | +| key | string | Key | +| label | string | Key label | +| options | []string | Key options | +| file | [file](file.md) | Key file | diff --git a/docs/mql/resources/os-pack/authorizedkeys.md b/docs/mql/resources/os-pack/authorizedkeys.md new file mode 100644 index 000000000..a240ef68f --- /dev/null +++ b/docs/mql/resources/os-pack/authorizedkeys.md @@ -0,0 +1,30 @@ +--- +title: authorizedkeys +id: authorizedkeys +sidebar_label: authorizedkeys +displayed_sidebar: MQL +description: List of SSH authorized keys +--- + +# authorizedkeys + +**Description** + +List of SSH authorized keys + +**Init** + +authorizedkeys(path string) + +**List** + +[]authorizedkeys.entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------------------------------------------------- | -------------------- | +| path | string | Path to the key file | +| file | [file](file.md) | Key file | +| content | string | Key file content | +| list | [][authorizedkeys.entry](authorizedkeys.entry.md) | | diff --git a/docs/mql/resources/os-pack/command.md b/docs/mql/resources/os-pack/command.md new file mode 100644 index 000000000..c69675c34 --- /dev/null +++ b/docs/mql/resources/os-pack/command.md @@ -0,0 +1,26 @@ +--- +title: command +id: command +sidebar_label: command +displayed_sidebar: MQL +description: Results of running a command on the system +--- + +# command + +**Description** + +Results of running a command on the system + +**Init** + +command(command string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ---------------------------------------------- | +| command | string | Raw contents of the command | +| stdout | string | Standard output from running the command | +| stderr | string | Standard error output from running the command | +| exitcode | int | Exit code the command returned | diff --git a/docs/mql/resources/os-pack/container.image.md b/docs/mql/resources/os-pack/container.image.md new file mode 100644 index 000000000..704fcf6a3 --- /dev/null +++ b/docs/mql/resources/os-pack/container.image.md @@ -0,0 +1,23 @@ +--- +title: container.image +id: container.image +sidebar_label: container.image +displayed_sidebar: MQL +description: Container image +--- + +# container.image + +**Description** + +Container image + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ----------------------------------------------- | ---------------------------------------------------------- | +| reference | string | Image reference | +| name | string | Fully-qualified reference name | +| identifier | string | Identifier of type-specific portion of the image reference | +| identifierType | string | Identifier type: tag or digest | +| repository | [container.repository](container.repository.md) | Repository used for the container image | diff --git a/docs/mql/resources/os-pack/container.repository.md b/docs/mql/resources/os-pack/container.repository.md new file mode 100644 index 000000000..b707a31b7 --- /dev/null +++ b/docs/mql/resources/os-pack/container.repository.md @@ -0,0 +1,22 @@ +--- +title: container.repository +id: container.repository +sidebar_label: container.repository +displayed_sidebar: MQL +description: Container registry repository +--- + +# container.repository + +**Description** + +Container registry repository + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ---------------------------------- | +| name | string | Container registry repository name | +| scheme | string | URL scheme | +| fullName | string | Container registry repository URL | +| registry | string | Container registry URL | diff --git a/docs/mql/resources/os-pack/docker.container.md b/docs/mql/resources/os-pack/docker.container.md new file mode 100644 index 000000000..0e801858a --- /dev/null +++ b/docs/mql/resources/os-pack/docker.container.md @@ -0,0 +1,27 @@ +--- +title: docker.container +id: docker.container +sidebar_label: docker.container +displayed_sidebar: MQL +description: Docker container +--- + +# docker.container + +**Description** + +Docker container + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------------- | --------------------- | +| os | [os.linux](os.linux.md) | | +| id | string | Container ID | +| command | string | Container command | +| image | string | Container image | +| imageid | string | Image ID | +| names | []string | Container names | +| state | string | Container state | +| status | string | Status message | +| labels | map[string]string | Label key value pairs | diff --git a/docs/mql/resources/os-pack/docker.image.md b/docs/mql/resources/os-pack/docker.image.md new file mode 100644 index 000000000..d41c74b89 --- /dev/null +++ b/docs/mql/resources/os-pack/docker.image.md @@ -0,0 +1,23 @@ +--- +title: docker.image +id: docker.image +sidebar_label: docker.image +displayed_sidebar: MQL +description: Docker image +--- + +# docker.image + +**Description** + +Docker image + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------- | ------------------------------- | +| id | string | Image ID | +| size | int | Image size in kilobytes | +| virtualsize | int | Virtual image size in kilobytes | +| tags | []string | Tag key value pairs | +| labels | map[string]string | Labels key value pairs | diff --git a/docs/mql/resources/os-pack/docker.md b/docs/mql/resources/os-pack/docker.md new file mode 100644 index 000000000..05bb5bdab --- /dev/null +++ b/docs/mql/resources/os-pack/docker.md @@ -0,0 +1,20 @@ +--- +title: docker +id: docker +sidebar_label: docker +displayed_sidebar: MQL +description: Docker host resource +--- + +# docker + +**Description** + +Docker host resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------------- | -------------------------- | +| images | [][docker.image](docker.image.md) | List all Docker images | +| containers | [][docker.container](docker.container.md) | List all Docker containers | diff --git a/docs/mql/resources/os-pack/file.md b/docs/mql/resources/os-pack/file.md new file mode 100644 index 000000000..fd9d8021a --- /dev/null +++ b/docs/mql/resources/os-pack/file.md @@ -0,0 +1,32 @@ +--- +title: file +id: file +sidebar_label: file +displayed_sidebar: MQL +description: File on the system +--- + +# file + +**Description** + +File on the system + +**Init** + +file(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------- | ------------------------------------------- | +| path | string | Location of the file on the system | +| basename | string | Filename without path prefix of this file | +| dirname | string | Path to the folder containing this file | +| content | string | Contents of this file | +| exists | bool | Indicator if this file exists on the system | +| permissions | [file.permissions](file.permissions.md) | Permissions for this file | +| size | int | Size of this file on disk | +| user | [user](user.md) | Ownership information about the user | +| group | [group](group.md) | Ownership information about the group | +| empty | bool | Whether the path is empty | diff --git a/docs/mql/resources/os-pack/file.permissions.md b/docs/mql/resources/os-pack/file.permissions.md new file mode 100644 index 000000000..395f12cd2 --- /dev/null +++ b/docs/mql/resources/os-pack/file.permissions.md @@ -0,0 +1,35 @@ +--- +title: file.permissions +id: file.permissions +sidebar_label: file.permissions +displayed_sidebar: MQL +description: Access permissions for a given file +--- + +# file.permissions + +**Description** + +Access permissions for a given file + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ------------------------------------------------------ | +| mode | int | Raw POSIX mode for the permissions | +| user_readable | bool | Whether the file is readable by its owner | +| user_writeable | bool | Whether the file is writeable by its owner | +| user_executable | bool | Whether the file is executable by its owner | +| group_readable | bool | Whether the file is readable by members of the group | +| group_writeable | bool | Whether the file is writeable by members of the group | +| group_executable | bool | Whether the file is executable by members of the group | +| other_readable | bool | Whether the file is readable by others | +| other_writeable | bool | Whether the file is writeable by others | +| other_executable | bool | Whether the file is executable by others | +| suid | bool | SUID bit indicator | +| sgid | bool | SGID bit indicator | +| sticky | bool | Sticky bit indicator | +| isDirectory | bool | Whether the file describes a directory | +| isFile | bool | Whether the file describes a regular file | +| isSymlink | bool | Whether the file is a symlink | +| string | string | A simple printed string version of the permissions | diff --git a/docs/mql/resources/os-pack/files.find.md b/docs/mql/resources/os-pack/files.find.md new file mode 100644 index 000000000..1bc83c654 --- /dev/null +++ b/docs/mql/resources/os-pack/files.find.md @@ -0,0 +1,29 @@ +--- +title: files.find +id: files.find +sidebar_label: files.find +displayed_sidebar: MQL +description: Find files on the system +--- + +# files.find + +**Description** + +Find files on the system + +**List** + +[]file + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------------------------- | -------------------------------------------------------------- | +| from | string | Sets the starting point for the search operation | +| xdev | bool | Whether other devices to search | +| type | string | What types of files to list (directories, files, devices, etc) | +| regex | string | A regular expression for the file search | +| permissions | int | What permissions the file matches | +| name | string | Search name | +| list | [][file](file.md) | | diff --git a/docs/mql/resources/os-pack/files.md b/docs/mql/resources/os-pack/files.md new file mode 100644 index 000000000..a3a325503 --- /dev/null +++ b/docs/mql/resources/os-pack/files.md @@ -0,0 +1,8 @@ +--- +title: files +id: files +sidebar_label: files +displayed_sidebar: MQL +--- + +# files diff --git a/docs/mql/resources/os-pack/group.md b/docs/mql/resources/os-pack/group.md new file mode 100644 index 000000000..a6d712c98 --- /dev/null +++ b/docs/mql/resources/os-pack/group.md @@ -0,0 +1,26 @@ +--- +title: group +id: group +sidebar_label: group +displayed_sidebar: MQL +description: Group on this system +--- + +# group + +**Description** + +Group on this system + +**Init** + +group(id string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------- | ------------------------------------- | +| gid | int | Group ID | +| sid | string | Group's security identifier (Windows) | +| name | string | Name of this group | +| members | [][user](user.md) | Users who are members of this group | diff --git a/docs/mql/resources/os-pack/groups.md b/docs/mql/resources/os-pack/groups.md new file mode 100644 index 000000000..fd731b795 --- /dev/null +++ b/docs/mql/resources/os-pack/groups.md @@ -0,0 +1,23 @@ +--- +title: groups +id: groups +sidebar_label: groups +displayed_sidebar: MQL +description: Groups configured on this system +--- + +# groups + +**Description** + +Groups configured on this system + +**List** + +[]group + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | --------------------------- | ----------- | +| list | [][group](group.md) | | diff --git a/docs/mql/resources/os-pack/ip6tables.md b/docs/mql/resources/os-pack/ip6tables.md new file mode 100644 index 000000000..636400871 --- /dev/null +++ b/docs/mql/resources/os-pack/ip6tables.md @@ -0,0 +1,20 @@ +--- +title: ip6tables +id: ip6tables +sidebar_label: ip6tables +displayed_sidebar: MQL +description: IPv6 tables +--- + +# ip6tables + +**Description** + +IPv6 tables + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | --------------------------------------------- | ----------------------- | +| input | [][iptables.entry](iptables.entry.md) | IPv6 input chain stats | +| output | [][iptables.entry](iptables.entry.md) | IPv6 output chain stats | diff --git a/docs/mql/resources/os-pack/iptables.entry.md b/docs/mql/resources/os-pack/iptables.entry.md new file mode 100644 index 000000000..e4cbabfe9 --- /dev/null +++ b/docs/mql/resources/os-pack/iptables.entry.md @@ -0,0 +1,25 @@ +--- +title: iptables.entry +id: iptables.entry +sidebar_label: iptables.entry +displayed_sidebar: MQL +--- + +# iptables.entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ---------------------------------------------------------------------------------------------- | +| lineNumber | int | Line number of statistic, which is used to create the ID | +| packets | int | Packets from iptable | +| bytes | int | How large the packet is in octets, including headers and everything. | +| target | string | What to do with the packet if it matches a rule | +| protocol | string | Protocol of the next level layer (e.g., TCP, UDP, ICMP, etc) | +| opt | string | IP options | +| in | string | Input | +| out | string | Output | +| source | string | Source address field that tells the receiver where the packet came from | +| destination | string | The destination IP address of the traffic, subnet of the traffic, or anywhere | +| options | string | Optional settings within the header such as internet timestamps, SACK, or record route options | +| chain | string | Input or output, which is used to create the ID | diff --git a/docs/mql/resources/os-pack/iptables.md b/docs/mql/resources/os-pack/iptables.md new file mode 100644 index 000000000..8a09d2472 --- /dev/null +++ b/docs/mql/resources/os-pack/iptables.md @@ -0,0 +1,20 @@ +--- +title: iptables +id: iptables +sidebar_label: iptables +displayed_sidebar: MQL +description: IPv4 tables +--- + +# iptables + +**Description** + +IPv4 tables + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | --------------------------------------------- | ----------------------- | +| input | [][iptables.entry](iptables.entry.md) | IPv4 input chain stats | +| output | [][iptables.entry](iptables.entry.md) | IPv4 output chain stats | diff --git a/docs/mql/resources/os-pack/kernel.md b/docs/mql/resources/os-pack/kernel.md new file mode 100644 index 000000000..6979f9431 --- /dev/null +++ b/docs/mql/resources/os-pack/kernel.md @@ -0,0 +1,22 @@ +--- +title: kernel +id: kernel +sidebar_label: kernel +displayed_sidebar: MQL +description: System kernel information +--- + +# kernel + +**Description** + +System kernel information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------- | ------------------------- | +| info | dict | Active kernel information | +| parameters | map[string]string | Kernel parameters map | +| modules | [][kernel.module](kernel.module.md) | List of kernel modules | +| installed | []dict | Installed versions | diff --git a/docs/mql/resources/os-pack/kernel.module.md b/docs/mql/resources/os-pack/kernel.module.md new file mode 100644 index 000000000..806a5b17d --- /dev/null +++ b/docs/mql/resources/os-pack/kernel.module.md @@ -0,0 +1,25 @@ +--- +title: kernel.module +id: kernel.module +sidebar_label: kernel.module +displayed_sidebar: MQL +description: System kernel module information +--- + +# kernel.module + +**Description** + +System kernel module information + +**Init** + +kernel.module(name string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | ---------------------------- | +| name | string | Name of the kernel module | +| size | string | Size of the kernel module | +| loaded | bool | Whether the module is loaded | diff --git a/docs/mql/resources/os-pack/kubelet.md b/docs/mql/resources/os-pack/kubelet.md new file mode 100644 index 000000000..60f7a6904 --- /dev/null +++ b/docs/mql/resources/os-pack/kubelet.md @@ -0,0 +1,21 @@ +--- +title: kubelet +id: kubelet +sidebar_label: kubelet +displayed_sidebar: MQL +description: Kubernetes kubelet configuration +--- + +# kubelet + +**Description** + +Kubernetes kubelet configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------- | -------------------------------------------------------- | +| configFile | [file](file.md) | Kubelet config file | +| process | [process](process.md) | Kubelet process | +| configuration | dict | Combination of config file parameters and CLI parameters | diff --git a/docs/mql/resources/os-pack/logindefs.md b/docs/mql/resources/os-pack/logindefs.md new file mode 100644 index 000000000..5800a0b95 --- /dev/null +++ b/docs/mql/resources/os-pack/logindefs.md @@ -0,0 +1,25 @@ +--- +title: logindefs +id: logindefs +sidebar_label: logindefs +displayed_sidebar: MQL +description: Shadow password suite configuration +--- + +# logindefs + +**Description** + +Shadow password suite configuration + +**Init** + +logindefs(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------- | --------------------------------------- | +| file | [file](file.md) | Current configuration file for resource | +| content | string | Content of the configuration file | +| params | map[string]string | Parsed logindef parameter | diff --git a/docs/mql/resources/os-pack/lsblk.entry.md b/docs/mql/resources/os-pack/lsblk.entry.md new file mode 100644 index 000000000..eea87181d --- /dev/null +++ b/docs/mql/resources/os-pack/lsblk.entry.md @@ -0,0 +1,23 @@ +--- +title: lsblk.entry +id: lsblk.entry +sidebar_label: lsblk.entry +displayed_sidebar: MQL +description: Unix block device +--- + +# lsblk.entry + +**Description** + +Unix block device + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ---------------- | --------------------------- | +| name | string | Device name | +| fstype | string | File system type | +| label | string | Label for the file system | +| uuid | string | UUID for the file system | +| mountpoints | []string | Mount points for the device | diff --git a/docs/mql/resources/os-pack/lsblk.md b/docs/mql/resources/os-pack/lsblk.md new file mode 100644 index 000000000..8349ab00c --- /dev/null +++ b/docs/mql/resources/os-pack/lsblk.md @@ -0,0 +1,23 @@ +--- +title: lsblk +id: lsblk +sidebar_label: lsblk +displayed_sidebar: MQL +description: Unix list block devices +--- + +# lsblk + +**Description** + +Unix list block devices + +**List** + +[]lsblk.entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | --------------------------------------- | ----------- | +| list | [][lsblk.entry](lsblk.entry.md) | | diff --git a/docs/mql/resources/os-pack/machine.baseboard.md b/docs/mql/resources/os-pack/machine.baseboard.md new file mode 100644 index 000000000..3304ae7af --- /dev/null +++ b/docs/mql/resources/os-pack/machine.baseboard.md @@ -0,0 +1,23 @@ +--- +title: machine.baseboard +id: machine.baseboard +sidebar_label: machine.baseboard +displayed_sidebar: MQL +description: SMBIOS baseboard (or module) information +--- + +# machine.baseboard + +**Description** + +SMBIOS baseboard (or module) information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ------------- | +| manufacturer | string | Manufacturer | +| product | string | Product | +| version | string | Version | +| serial | string | Serial number | +| assetTag | string | Asset tag | diff --git a/docs/mql/resources/os-pack/machine.bios.md b/docs/mql/resources/os-pack/machine.bios.md new file mode 100644 index 000000000..6652e29e5 --- /dev/null +++ b/docs/mql/resources/os-pack/machine.bios.md @@ -0,0 +1,21 @@ +--- +title: machine.bios +id: machine.bios +sidebar_label: machine.bios +displayed_sidebar: MQL +description: SMBIOS BIOS information +--- + +# machine.bios + +**Description** + +SMBIOS BIOS information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ----------------- | +| vendor | string | BIOS vendor | +| version | string | BIOS version | +| releaseDate | string | BIOS release date | diff --git a/docs/mql/resources/os-pack/machine.chassis.md b/docs/mql/resources/os-pack/machine.chassis.md new file mode 100644 index 000000000..de18a759d --- /dev/null +++ b/docs/mql/resources/os-pack/machine.chassis.md @@ -0,0 +1,22 @@ +--- +title: machine.chassis +id: machine.chassis +sidebar_label: machine.chassis +displayed_sidebar: MQL +description: SMBIOS system enclosure or chassis +--- + +# machine.chassis + +**Description** + +SMBIOS system enclosure or chassis + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ---------------- | +| manufacturer | string | Manufacturer | +| version | string | Version | +| serial | string | Serial number | +| assetTag | string | Asset tag number | diff --git a/docs/mql/resources/os-pack/machine.md b/docs/mql/resources/os-pack/machine.md new file mode 100644 index 000000000..7d02701a8 --- /dev/null +++ b/docs/mql/resources/os-pack/machine.md @@ -0,0 +1,8 @@ +--- +title: machine +id: machine +sidebar_label: machine +displayed_sidebar: MQL +--- + +# machine diff --git a/docs/mql/resources/os-pack/machine.system.md b/docs/mql/resources/os-pack/machine.system.md new file mode 100644 index 000000000..17fb20c8e --- /dev/null +++ b/docs/mql/resources/os-pack/machine.system.md @@ -0,0 +1,25 @@ +--- +title: machine.system +id: machine.system +sidebar_label: machine.system +displayed_sidebar: MQL +description: SMBIOS system information +--- + +# machine.system + +**Description** + +SMBIOS system information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ------------- | +| manufacturer | string | Manufacturer | +| product | string | Product name | +| version | string | Version | +| serial | string | Serial number | +| uuid | string | UUID | +| sku | string | SKU number | +| family | string | Family | diff --git a/docs/mql/resources/os-pack/macos.alf.md b/docs/mql/resources/os-pack/macos.alf.md new file mode 100644 index 000000000..d57713154 --- /dev/null +++ b/docs/mql/resources/os-pack/macos.alf.md @@ -0,0 +1,29 @@ +--- +title: macos.alf +id: macos.alf +sidebar_label: macos.alf +displayed_sidebar: MQL +description: macOS application layer firewall (ALF) service +--- + +# macos.alf + +**Description** + +macOS application layer firewall (ALF) service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------- | +| allowDownloadSignedEnabled | int | Whether the firewall service allows downloaded software to receive incoming connections | +| allowSignedEnabled | int | Whether the firewall service allows built-in software to receive incoming connections for signed software | +| firewallUnload | int | Whether the firewall is unloaded | +| globalState | int | Whether the firewall is enabled | +| loggingEnabled | int | Whether alf.log is used | +| loggingOption | int | Logging flags | +| stealthEnabled | int | Whether the firewall service is in stealth mode | +| version | string | ALF version | +| exceptions | []dict | Service exceptions | +| explicitAuths | []string | Services explicitly allowed to perform networking | +| applications | []dict | Applications with exceptions for network blocking | diff --git a/docs/mql/resources/os-pack/macos.md b/docs/mql/resources/os-pack/macos.md new file mode 100644 index 000000000..5a9c94151 --- /dev/null +++ b/docs/mql/resources/os-pack/macos.md @@ -0,0 +1,21 @@ +--- +title: macos +id: macos +sidebar_label: macos +displayed_sidebar: MQL +description: macOS specific resources +--- + +# macos + +**Description** + +macOS specific resources + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | --------------- | ------------------------------------ | +| userPreferences | map[string]dict | macOS user defaults | +| userHostPreferences | map[string]dict | macOS user defaults for current host | +| globalAccountPolicies | dict | macOS global account policies | diff --git a/docs/mql/resources/os-pack/macos.systemsetup.md b/docs/mql/resources/os-pack/macos.systemsetup.md new file mode 100644 index 000000000..26e9b51b8 --- /dev/null +++ b/docs/mql/resources/os-pack/macos.systemsetup.md @@ -0,0 +1,38 @@ +--- +title: macos.systemsetup +id: macos.systemsetup +sidebar_label: macos.systemsetup +displayed_sidebar: MQL +description: macOS machine settings +--- + +# macos.systemsetup + +**Description** + +macOS machine settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------------------------- | ---------------- | ------------------------------------------------------------------------------ | +| date | string | Current date | +| time | string | Current time in 24-hour format | +| timeZone | string | Current time zone | +| usingNetworkTime | string | Whether network time is on or off | +| networkTimeServer | string | Configured network time server | +| sleep | []string | Amount of idle time until the machine sleeps | +| displaySleep | string | Amount of idle time until the display sleeps | +| harddiskSleep | string | Amount of idle time until the hard disk sleeps | +| wakeOnModem | string | Whether wake on modem is on or off | +| wakeOnNetworkAccess | string | Whether wake on network access is on or off | +| restartPowerFailure | string | Whether restart on power failure is on or off | +| restartFreeze | string | Whether restart on freeze is on or off | +| allowPowerButtonToSleepComputer | string | Whether the power button can sleep the computer | +| remoteLogin | string | Whether remote login (SSH) is on or off | +| remoteAppleEvents | string | Whether remote Apple events are on or off | +| computerName | string | Computer name | +| localSubnetName | string | Local subnet name | +| startupDisk | string | Current startup disk | +| waitForStartupAfterPowerFailure | string | Number of seconds after which the computer will start up after a power failure | +| disableKeyboardWhenEnclosureLockIsEngaged | string | Whether the keyboard is disabled when the X Serve enclosure lock is engaged | diff --git a/docs/mql/resources/os-pack/macos.timemachine.md b/docs/mql/resources/os-pack/macos.timemachine.md new file mode 100644 index 000000000..eac4cf767 --- /dev/null +++ b/docs/mql/resources/os-pack/macos.timemachine.md @@ -0,0 +1,19 @@ +--- +title: macos.timemachine +id: macos.timemachine +sidebar_label: macos.timemachine +displayed_sidebar: MQL +description: macOS Time Machine +--- + +# macos.timemachine + +**Description** + +macOS Time Machine + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ---- | ------------------------------ | +| preferences | dict | macOS Time Machine preferences | diff --git a/docs/mql/resources/os-pack/mondoo.eol.md b/docs/mql/resources/os-pack/mondoo.eol.md new file mode 100644 index 000000000..8f60d5e87 --- /dev/null +++ b/docs/mql/resources/os-pack/mondoo.eol.md @@ -0,0 +1,21 @@ +--- +title: mondoo.eol +id: mondoo.eol +sidebar_label: mondoo.eol +displayed_sidebar: MQL +description: Platform end-of-life information +--- + +# mondoo.eol + +**Description** + +Platform end-of-life information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------ | -------------------------------- | +| product | string | Product name | +| version | string | Product version | +| date | time | End-of-life date for the product | diff --git a/docs/mql/resources/os-pack/mount.md b/docs/mql/resources/os-pack/mount.md new file mode 100644 index 000000000..88d5067fd --- /dev/null +++ b/docs/mql/resources/os-pack/mount.md @@ -0,0 +1,23 @@ +--- +title: mount +id: mount +sidebar_label: mount +displayed_sidebar: MQL +description: Unix mounted file system +--- + +# mount + +**Description** + +Unix mounted file system + +**List** + +[]mount.point + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | --------------------------------------- | ----------- | +| list | [][mount.point](mount.point.md) | | diff --git a/docs/mql/resources/os-pack/mount.point.md b/docs/mql/resources/os-pack/mount.point.md new file mode 100644 index 000000000..194f81660 --- /dev/null +++ b/docs/mql/resources/os-pack/mount.point.md @@ -0,0 +1,27 @@ +--- +title: mount.point +id: mount.point +sidebar_label: mount.point +displayed_sidebar: MQL +description: Unix mount point +--- + +# mount.point + +**Description** + +Unix mount point + +**Init** + +mount.point(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------- | ---------------------------------- | +| device | string | Device | +| path | string | Path | +| fstype | string | File system type | +| options | map[string]string | Mount options | +| mounted | bool | Whether the mount point is mounted | diff --git a/docs/mql/resources/os-pack/npm.package.md b/docs/mql/resources/os-pack/npm.package.md new file mode 100644 index 000000000..4755ec03d --- /dev/null +++ b/docs/mql/resources/os-pack/npm.package.md @@ -0,0 +1,19 @@ +--- +title: npm.package +id: npm.package +sidebar_label: npm.package +displayed_sidebar: MQL +--- + +# npm.package + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------------------------------- | ------------------------------------------------- | +| id | string | ID is the npm.package unique identifier | +| name | string | Name of the package | +| version | string | Version of the package | +| purl | string | Package URL | +| cpes | []core.cpe | Common Platform Enumeration (CPE) for the package | +| files | [][pkgFileInfo](pkgfileinfo.md) | Package files | diff --git a/docs/mql/resources/os-pack/npm.packages.md b/docs/mql/resources/os-pack/npm.packages.md new file mode 100644 index 000000000..afcb092bf --- /dev/null +++ b/docs/mql/resources/os-pack/npm.packages.md @@ -0,0 +1,31 @@ +--- +title: npm.packages +id: npm.packages +sidebar_label: npm.packages +displayed_sidebar: MQL +description: npm packages +--- + +# npm.packages + +**Description** + +npm packages + +**Init** + +npm.packages(path string) + +**List** + +[]npm.package + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | --------------------------------------- | ------------------------------------ | +| path | string | optional path to search for packages | +| root | [npm.package](npm.package.md) | Root Package (may not exist) | +| directDependencies | [][npm.package](npm.package.md) | List of direct dependencies | +| files | [][pkgFileInfo](pkgfileinfo.md) | Files used to determine the packages | +| list | [][npm.package](npm.package.md) | | diff --git a/docs/mql/resources/os-pack/ntp.conf.md b/docs/mql/resources/os-pack/ntp.conf.md new file mode 100644 index 000000000..5d009de0a --- /dev/null +++ b/docs/mql/resources/os-pack/ntp.conf.md @@ -0,0 +1,28 @@ +--- +title: ntp.conf +id: ntp.conf +sidebar_label: ntp.conf +displayed_sidebar: MQL +description: NTP service configuration +--- + +# ntp.conf + +**Description** + +NTP service configuration + +**Init** + +ntp.conf(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ---------------- | ------------------------------------------------------- | +| file | [file](file.md) | File of the NTP service configuration | +| content | string | Raw contents of the NTP service configuration | +| settings | []string | List of settings for the NTP service | +| servers | []string | List of servers for the NTP service | +| restrict | []string | List of access control restrictions for the NTP service | +| fudge | []string | Additional information for clock drivers | diff --git a/docs/mql/resources/os-pack/os.base.md b/docs/mql/resources/os-pack/os.base.md new file mode 100644 index 000000000..5b2bd5b34 --- /dev/null +++ b/docs/mql/resources/os-pack/os.base.md @@ -0,0 +1,23 @@ +--- +title: os.base +id: os.base +sidebar_label: os.base +displayed_sidebar: MQL +--- + +# os.base + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------- | -------------------------------------------------------- | +| machine | [machine](machine.md) | | +| name | string | Pretty Hostname on macOS/Linux or device name on Windows | +| env | map[string]string | ENV variable contents | +| path | []string | PATH variable contents | +| uptime | time | Current uptime | +| updates | [][os.update](os.update.md) | List of available OS updates | +| rebootpending | bool | Whether a reboot is pending | +| hostname | string | Hostname for this OS | +| groups | [groups](groups.md) | User groups | +| users | [users](users.md) | Users | diff --git a/docs/mql/resources/os-pack/os.linux.md b/docs/mql/resources/os-pack/os.linux.md new file mode 100644 index 000000000..bb6ee2037 --- /dev/null +++ b/docs/mql/resources/os-pack/os.linux.md @@ -0,0 +1,16 @@ +--- +title: os.linux +id: os.linux +sidebar_label: os.linux +displayed_sidebar: MQL +--- + +# os.linux + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------- | -------------------------- | +| unix | [os.unix](os.unix.md) | | +| iptables | [iptables](iptables.md) | iptables firewall for IPv4 | +| ip6tables | [ip6tables](ip6tables.md) | iptables firewall for IPv6 | diff --git a/docs/mql/resources/os-pack/os.md b/docs/mql/resources/os-pack/os.md new file mode 100644 index 000000000..bd2b76495 --- /dev/null +++ b/docs/mql/resources/os-pack/os.md @@ -0,0 +1,26 @@ +--- +title: os +id: os +sidebar_label: os +displayed_sidebar: MQL +description: Operating system information +--- + +# os + +**Description** + +Operating system information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------- | -------------------------------------------------------- | +| name | string | Pretty hostname on macOS/Linux or device name on Windows | +| env | map[string]string | ENV variable contents | +| path | []string | PATH variable contents | +| uptime | time | Current uptime | +| updates | [][os.update](os.update.md) | List of available OS updates | +| rebootpending | bool | Whether a reboot is pending | +| hostname | string | Hostname for this OS | +| machineid | string | Machine ID for this OS | diff --git a/docs/mql/resources/os-pack/os.rootcertificates.md b/docs/mql/resources/os-pack/os.rootcertificates.md new file mode 100644 index 000000000..2f9d7df46 --- /dev/null +++ b/docs/mql/resources/os-pack/os.rootcertificates.md @@ -0,0 +1,25 @@ +--- +title: os.rootCertificates +id: os.rootCertificates +sidebar_label: os.rootCertificates +displayed_sidebar: MQL +description: Operating system root certificates +--- + +# os.rootCertificates + +**Description** + +Operating system root certificates + +**List** + +[]certificate + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------- | -------------------------------------------- | +| files | [][file](file.md) | List of files that define these certificates | +| content | []string | | +| list | []certificate | | diff --git a/docs/mql/resources/os-pack/os.unix.md b/docs/mql/resources/os-pack/os.unix.md new file mode 100644 index 000000000..3c5914b88 --- /dev/null +++ b/docs/mql/resources/os-pack/os.unix.md @@ -0,0 +1,14 @@ +--- +title: os.unix +id: os.unix +sidebar_label: os.unix +displayed_sidebar: MQL +--- + +# os.unix + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | --------------------- | ----------- | +| base | [os.base](os.base.md) | | diff --git a/docs/mql/resources/os-pack/os.update.md b/docs/mql/resources/os-pack/os.update.md new file mode 100644 index 000000000..fe1390d1e --- /dev/null +++ b/docs/mql/resources/os-pack/os.update.md @@ -0,0 +1,23 @@ +--- +title: os.update +id: os.update +sidebar_label: os.update +displayed_sidebar: MQL +description: Operating system update information +--- + +# os.update + +**Description** + +Operating system update information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | ------------------------------ | +| name | string | Name of the update | +| category | string | Category of the update | +| severity | string | Severity of the update | +| restart | bool | Whether a restart is required | +| format | string | Package format for this update | diff --git a/docs/mql/resources/os-pack/package.md b/docs/mql/resources/os-pack/package.md new file mode 100644 index 000000000..e2e5b0559 --- /dev/null +++ b/docs/mql/resources/os-pack/package.md @@ -0,0 +1,36 @@ +--- +title: package +id: package +sidebar_label: package +displayed_sidebar: MQL +description: Package on the platform or OS +--- + +# package + +**Description** + +Package on the platform or OS + +**Init** + +package(name string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------------------- | ------------------------------------------------- | +| name | string | Name of the package | +| description | string | Package description | +| version | string | Current version of the package | +| arch | string | Architecture of this package | +| epoch | string | Epoch of this package | +| format | string | Format of this package (e.g., rpm, deb) | +| status | string | Status of this package (e.g., if it is needed) | +| purl | string | Package URL | +| cpes | []core.cpe | Common Platform Enumeration (CPE) for the package | +| origin | string | Package origin (optional) | +| available | string | Available version | +| installed | bool | Whether the package is installed | +| outdated | bool | Whether the package is outdated | +| files | [][pkgFileInfo](pkgfileinfo.md) | Package files | diff --git a/docs/mql/resources/os-pack/packages.md b/docs/mql/resources/os-pack/packages.md new file mode 100644 index 000000000..21c6eb895 --- /dev/null +++ b/docs/mql/resources/os-pack/packages.md @@ -0,0 +1,23 @@ +--- +title: packages +id: packages +sidebar_label: packages +displayed_sidebar: MQL +description: List of packages on this system +--- + +# packages + +**Description** + +List of packages on this system + +**List** + +[]package + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------------------------------- | ----------- | +| list | [][package](package.md) | | diff --git a/docs/mql/resources/os-pack/pam.conf.md b/docs/mql/resources/os-pack/pam.conf.md new file mode 100644 index 000000000..ee553922c --- /dev/null +++ b/docs/mql/resources/os-pack/pam.conf.md @@ -0,0 +1,26 @@ +--- +title: pam.conf +id: pam.conf +sidebar_label: pam.conf +displayed_sidebar: MQL +description: PAM configuration (pluggable authentication module) +--- + +# pam.conf + +**Description** + +PAM configuration (pluggable authentication module) + +**Init** + +pam.conf(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------- | +| files | [][file](file.md) | List of files that make up the PAM configuration | +| content | string | The raw PAM configuration (across all files) | +| services | map[string][]string | Deprecated; list of services that are configured via PAM | +| entries | map[string][][pam.conf.serviceEntry](pam.conf.serviceentry.md) | List of services with parsed entries that are configured via PAM | diff --git a/docs/mql/resources/os-pack/pam.conf.serviceentry.md b/docs/mql/resources/os-pack/pam.conf.serviceentry.md new file mode 100644 index 000000000..d6f177ec4 --- /dev/null +++ b/docs/mql/resources/os-pack/pam.conf.serviceentry.md @@ -0,0 +1,19 @@ +--- +title: pam.conf.serviceEntry +id: pam.conf.serviceEntry +sidebar_label: pam.conf.serviceEntry +displayed_sidebar: MQL +--- + +# pam.conf.serviceEntry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ---------------- | --------------------------------------------------------- | +| service | string | Service file that the entry is from | +| lineNumber | int | Line number in service file (used for ID) | +| pamType | string | Type for PAM entry, (i.e., auth, password, etc) | +| control | string | Level of control, (i.e., required, requisite, sufficient) | +| module | string | PAM module used | +| options | []string | Configuration options for pam service entry | diff --git a/docs/mql/resources/os-pack/parse.certificates.md b/docs/mql/resources/os-pack/parse.certificates.md new file mode 100644 index 000000000..2f64c9267 --- /dev/null +++ b/docs/mql/resources/os-pack/parse.certificates.md @@ -0,0 +1,30 @@ +--- +title: parse.certificates +id: parse.certificates +sidebar_label: parse.certificates +displayed_sidebar: MQL +description: Parse certificates from files +--- + +# parse.certificates + +**Description** + +Parse certificates from files + +**Init** + +parse.certificates(path string) + +**List** + +[]network.certificate + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------------------- | ------------------------ | +| path | string | Certificate file path | +| file | [file](file.md) | Certificate file | +| content | string | Certificate file content | +| list | []network.certificate | | diff --git a/docs/mql/resources/os-pack/parse.ini.md b/docs/mql/resources/os-pack/parse.ini.md new file mode 100644 index 000000000..2454085d7 --- /dev/null +++ b/docs/mql/resources/os-pack/parse.ini.md @@ -0,0 +1,28 @@ +--- +title: parse.ini +id: parse.ini +sidebar_label: parse.ini +displayed_sidebar: MQL +description: Parse INI files +--- + +# parse.ini + +**Description** + +Parse INI files + +**Init** + +parse.ini(path string) +parse.ini(delimiter string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ---------------------------- | ----------------------------------------------- | +| delimiter | string | Symbol that separates keys and values | +| file | [file](file.md) | File that is parsed | +| content | string | Raw content of the file that is parsed | +| sections | map[string]map[string]string | Map of sections and key-value pairs | +| params | map[string]string | Map of parameters that don't belong to sections | diff --git a/docs/mql/resources/os-pack/parse.json.md b/docs/mql/resources/os-pack/parse.json.md new file mode 100644 index 000000000..af53abf1a --- /dev/null +++ b/docs/mql/resources/os-pack/parse.json.md @@ -0,0 +1,25 @@ +--- +title: parse.json +id: parse.json +sidebar_label: parse.json +displayed_sidebar: MQL +description: Parse JSON files +--- + +# parse.json + +**Description** + +Parse JSON files + +**Init** + +parse.json(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------- | ------------------------------------------ | +| file | [file](file.md) | File that is parsed | +| content | string | Raw content of the file that is parsed | +| params | dict | The parsed parameters defined in this file | diff --git a/docs/mql/resources/os-pack/parse.openpgp.md b/docs/mql/resources/os-pack/parse.openpgp.md new file mode 100644 index 000000000..7715f136f --- /dev/null +++ b/docs/mql/resources/os-pack/parse.openpgp.md @@ -0,0 +1,30 @@ +--- +title: parse.openpgp +id: parse.openpgp +sidebar_label: parse.openpgp +displayed_sidebar: MQL +description: Parse OpenPGP from files +--- + +# parse.openpgp + +**Description** + +Parse OpenPGP from files + +**Init** + +parse.openpgp(path string) + +**List** + +[]network.openpgp.entity + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | -------------------------------- | --------------------------------- | +| path | string | Deprecated; use file.path instead | +| file | [file](file.md) | OpenPGP file | +| content | string | OpenPGP file content | +| list | []network.openpgp.entity | | diff --git a/docs/mql/resources/os-pack/parse.plist.md b/docs/mql/resources/os-pack/parse.plist.md new file mode 100644 index 000000000..87638b26f --- /dev/null +++ b/docs/mql/resources/os-pack/parse.plist.md @@ -0,0 +1,25 @@ +--- +title: parse.plist +id: parse.plist +sidebar_label: parse.plist +displayed_sidebar: MQL +description: Parse plist files +--- + +# parse.plist + +**Description** + +Parse plist files + +**Init** + +parse.plist(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------- | --------------------------------------------------- | +| file | [file](file.md) | File that is parsed | +| content | string | Raw content of the file that is parsed | +| params | dict | The parsed parameters that are defined in this file | diff --git a/docs/mql/resources/os-pack/parse.yaml.md b/docs/mql/resources/os-pack/parse.yaml.md new file mode 100644 index 000000000..02eb8d963 --- /dev/null +++ b/docs/mql/resources/os-pack/parse.yaml.md @@ -0,0 +1,25 @@ +--- +title: parse.yaml +id: parse.yaml +sidebar_label: parse.yaml +displayed_sidebar: MQL +description: Parse YAML files +--- + +# parse.yaml + +**Description** + +Parse YAML files + +**Init** + +parse.yaml(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | --------------- | --------------------------------------------------- | +| file | [file](file.md) | File that is parsed | +| content | string | Raw content of the file that is parsed | +| params | dict | The parsed parameters that are defined in this file | diff --git a/docs/mql/resources/os-pack/pkgfileinfo.md b/docs/mql/resources/os-pack/pkgfileinfo.md new file mode 100644 index 000000000..12fa3edea --- /dev/null +++ b/docs/mql/resources/os-pack/pkgfileinfo.md @@ -0,0 +1,14 @@ +--- +title: pkgFileInfo +id: pkgFileInfo +sidebar_label: pkgFileInfo +displayed_sidebar: MQL +--- + +# pkgFileInfo + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------ | ---------------- | +| path | string | Path to the file | diff --git a/docs/mql/resources/os-pack/platform.advisories.md b/docs/mql/resources/os-pack/platform.advisories.md new file mode 100644 index 000000000..ce7e5d155 --- /dev/null +++ b/docs/mql/resources/os-pack/platform.advisories.md @@ -0,0 +1,25 @@ +--- +title: platform.advisories +id: platform.advisories +sidebar_label: platform.advisories +displayed_sidebar: MQL +description: All platform/package advisories +--- + +# platform.advisories + +**Description** + +All platform/package advisories + +**List** + +[]audit.advisory + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | --------------------------------------------- | -------------------------------------------------------------------------- | +| cvss | [audit.cvss](audit.cvss.md) | Worst CVSS score for all advisories | +| stats | dict | Statistical information: total, critical, high, medium, low, none, unknown | +| list | [][audit.advisory](audit.advisory.md) | | diff --git a/docs/mql/resources/os-pack/platform.cves.md b/docs/mql/resources/os-pack/platform.cves.md new file mode 100644 index 000000000..36a1bc083 --- /dev/null +++ b/docs/mql/resources/os-pack/platform.cves.md @@ -0,0 +1,25 @@ +--- +title: platform.cves +id: platform.cves +sidebar_label: platform.cves +displayed_sidebar: MQL +description: All platform/package CVEs +--- + +# platform.cves + +**Description** + +All platform/package CVEs + +**List** + +[]audit.cve + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | ----------------------------------- | -------------------------------------------------------------------------- | +| cvss | [audit.cvss](audit.cvss.md) | Worst CVSS score for all CVEs | +| stats | dict | Statistical information: total, critical, high, medium, low, none, unknown | +| list | [][audit.cve](audit.cve.md) | | diff --git a/docs/mql/resources/os-pack/platform.eol.md b/docs/mql/resources/os-pack/platform.eol.md new file mode 100644 index 000000000..520ac288e --- /dev/null +++ b/docs/mql/resources/os-pack/platform.eol.md @@ -0,0 +1,21 @@ +--- +title: platform.eol +id: platform.eol +sidebar_label: platform.eol +displayed_sidebar: MQL +description: Deprecated; will be removed in version 10.0 +--- + +# platform.eol + +**Description** + +Deprecated; will be removed in version 10.0 + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ----------------- | +| docsUrl | string | Documentation URL | +| productUrl | string | Product URL | +| date | time | End-of-life date | diff --git a/docs/mql/resources/os-pack/platform.md b/docs/mql/resources/os-pack/platform.md new file mode 100644 index 000000000..94e4c4f23 --- /dev/null +++ b/docs/mql/resources/os-pack/platform.md @@ -0,0 +1,14 @@ +--- +title: platform +id: platform +sidebar_label: platform +displayed_sidebar: MQL +--- + +# platform + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ---- | ----------------------------------------------------------------- | +| vulnerabilityReport | dict | Deprecated; will be removed in version 10.0, use vulnmgmt instead | diff --git a/docs/mql/resources/os-pack/port.md b/docs/mql/resources/os-pack/port.md new file mode 100644 index 000000000..7a263a529 --- /dev/null +++ b/docs/mql/resources/os-pack/port.md @@ -0,0 +1,27 @@ +--- +title: port +id: port +sidebar_label: port +displayed_sidebar: MQL +description: TCP/IP port on the system +--- + +# port + +**Description** + +TCP/IP port on the system + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | --------------------- | -------------------------------------- | +| protocol | string | Protocol of this port | +| port | int | Port number | +| address | string | Local address of this port | +| user | [user](user.md) | User configured for this port | +| process | [process](process.md) | Process that is connected to this port | +| state | string | State of this open port | +| remoteAddress | string | Remote address connected to this port | +| remotePort | int | Remote port connected to this port | +| tls | network.tls | TLS on this port, if it is available | diff --git a/docs/mql/resources/os-pack/ports.md b/docs/mql/resources/os-pack/ports.md new file mode 100644 index 000000000..645634d91 --- /dev/null +++ b/docs/mql/resources/os-pack/ports.md @@ -0,0 +1,24 @@ +--- +title: ports +id: ports +sidebar_label: ports +displayed_sidebar: MQL +description: TCP/IP ports on the system +--- + +# ports + +**Description** + +TCP/IP ports on the system + +**List** + +[]port + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------------------------- | ------------------- | +| listening | [][port](port.md) | All listening ports | +| list | [][port](port.md) | | diff --git a/docs/mql/resources/os-pack/powershell.md b/docs/mql/resources/os-pack/powershell.md new file mode 100644 index 000000000..76212bf16 --- /dev/null +++ b/docs/mql/resources/os-pack/powershell.md @@ -0,0 +1,26 @@ +--- +title: powershell +id: powershell +sidebar_label: powershell +displayed_sidebar: MQL +description: Results of running a PowerShell script on the system +--- + +# powershell + +**Description** + +Results of running a PowerShell script on the system + +**Init** + +powershell(script string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------ | --------------------------------------------- | +| script | string | Raw contents of the script | +| stdout | string | Standard output from running the script | +| stderr | string | Standard error output from running the script | +| exitcode | int | Exit code the script returned | diff --git a/docs/mql/resources/os-pack/privatekey.md b/docs/mql/resources/os-pack/privatekey.md new file mode 100644 index 000000000..bf7bfceed --- /dev/null +++ b/docs/mql/resources/os-pack/privatekey.md @@ -0,0 +1,22 @@ +--- +title: privatekey +id: privatekey +sidebar_label: privatekey +displayed_sidebar: MQL +description: Private key resource +--- + +# privatekey + +**Description** + +Private key resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | --------------- | --------------------------------- | +| pem | string | PEM data | +| path | string | Deprecated; use file instead | +| file | [file](file.md) | File on disk for this private key | +| encrypted | bool | Whether the file is encrypted | diff --git a/docs/mql/resources/os-pack/process.md b/docs/mql/resources/os-pack/process.md new file mode 100644 index 000000000..c88abdbb7 --- /dev/null +++ b/docs/mql/resources/os-pack/process.md @@ -0,0 +1,27 @@ +--- +title: process +id: process +sidebar_label: process +displayed_sidebar: MQL +description: Process on this system +--- + +# process + +**Description** + +Process on this system + +**Init** + +process(pid int) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------- | --------------------------------------------------- | +| pid | int | PID (process ID) | +| state | string | State of the process (i.e., sleeping, running, etc) | +| executable | string | Executable that is running this process | +| command | string | Full command used to run this process | +| flags | map[string]string | Map of additional flags | diff --git a/docs/mql/resources/os-pack/processes.md b/docs/mql/resources/os-pack/processes.md new file mode 100644 index 000000000..b637f9fa3 --- /dev/null +++ b/docs/mql/resources/os-pack/processes.md @@ -0,0 +1,23 @@ +--- +title: processes +id: processes +sidebar_label: processes +displayed_sidebar: MQL +description: Processes available on this system +--- + +# processes + +**Description** + +Processes available on this system + +**List** + +[]process + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------------------------------- | ----------- | +| list | [][process](process.md) | | diff --git a/docs/mql/resources/os-pack/python.md b/docs/mql/resources/os-pack/python.md new file mode 100644 index 000000000..f39e41232 --- /dev/null +++ b/docs/mql/resources/os-pack/python.md @@ -0,0 +1,25 @@ +--- +title: python +id: python +sidebar_label: python +displayed_sidebar: MQL +description: Python package details found on the operating system image +--- + +# python + +**Description** + +Python package details found on the operating system image + +**Init** + +python(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| path | string | Path to a specific site-packages location to exclusively scan (empty means scan default locations) | +| packages | [][python.package](python.package.md) | List of all discovered packages | +| toplevel | [][python.package](python.package.md) | List of all packages that were specifically installed (i.e., not auto-installed as a dependency) | diff --git a/docs/mql/resources/os-pack/python.package.md b/docs/mql/resources/os-pack/python.package.md new file mode 100644 index 000000000..5ca23efb4 --- /dev/null +++ b/docs/mql/resources/os-pack/python.package.md @@ -0,0 +1,33 @@ +--- +title: python.package +id: python.package +sidebar_label: python.package +displayed_sidebar: MQL +description: Python package information +--- + +# python.package + +**Description** + +Python package information + +**Init** + +python.package(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | --------------------------------------------- | ------------------------------------------------- | +| id | string | ID is the python.package unique identifier | +| name | string | Name of the package | +| file | [file](file.md) | File containing the package metadata | +| version | string | Version of the package | +| license | string | License of the package | +| author | string | Author of the package | +| authorEmail | string | Author email of the package | +| summary | string | Short package description | +| purl | string | Package URL | +| cpes | []core.cpe | Common Platform Enumeration (CPE) for the package | +| dependencies | [][python.package](python.package.md) | List of packages depended on | diff --git a/docs/mql/resources/os-pack/registrykey.md b/docs/mql/resources/os-pack/registrykey.md new file mode 100644 index 000000000..3e33ffaca --- /dev/null +++ b/docs/mql/resources/os-pack/registrykey.md @@ -0,0 +1,27 @@ +--- +title: registrykey +id: registrykey +sidebar_label: registrykey +displayed_sidebar: MQL +description: Windows registry key +--- + +# registrykey + +**Description** + +Windows registry key + +**Init** + +registrykey(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------------------------------------------------- | ------------------------------- | +| path | string | Registry key path | +| exists | bool | Whether the property exists | +| properties | map[string]string | Deprecated; use `items` instead | +| items | [][registrykey.property](registrykey.property.md) | Registry key items | +| children | []string | Registry key children | diff --git a/docs/mql/resources/os-pack/registrykey.property.md b/docs/mql/resources/os-pack/registrykey.property.md new file mode 100644 index 000000000..5f4e177e6 --- /dev/null +++ b/docs/mql/resources/os-pack/registrykey.property.md @@ -0,0 +1,29 @@ +--- +title: registrykey.property +id: registrykey.property +sidebar_label: registrykey.property +displayed_sidebar: MQL +description: Windows registry key property +--- + +# registrykey.property + +**Description** + +Windows registry key property + +**Init** + +registrykey.property(path string) +registrykey.property(name string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | ------------------------------ | +| path | string | Registry key path | +| name | string | Registry key name | +| exists | bool | Whether the property exists | +| value | string | Deprecated; use `data` instead | +| type | string | Registry key type | +| data | dict | Registry key data | diff --git a/docs/mql/resources/os-pack/rsyslog.conf.md b/docs/mql/resources/os-pack/rsyslog.conf.md new file mode 100644 index 000000000..b7ad1eac8 --- /dev/null +++ b/docs/mql/resources/os-pack/rsyslog.conf.md @@ -0,0 +1,26 @@ +--- +title: rsyslog.conf +id: rsyslog.conf +sidebar_label: rsyslog.conf +displayed_sidebar: MQL +description: rsyslog service configuration +--- + +# rsyslog.conf + +**Description** + +rsyslog service configuration + +**Init** + +rsyslog.conf(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ------------------------- | ----------------------------------------------------- | +| path | string | Path for the main rsyslog file and search | +| files | [][file](file.md) | Files that make up this rsyslog service configuration | +| content | string | Raw contents of this rsyslog service configuration | +| settings | []string | List of settings for this rsyslog service | diff --git a/docs/mql/resources/os-pack/secpol.md b/docs/mql/resources/os-pack/secpol.md new file mode 100644 index 000000000..94ccf9db1 --- /dev/null +++ b/docs/mql/resources/os-pack/secpol.md @@ -0,0 +1,22 @@ +--- +title: secpol +id: secpol +sidebar_label: secpol +displayed_sidebar: MQL +description: Windows local security policy +--- + +# secpol + +**Description** + +Windows local security policy + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | --------------------------- | ---------------- | +| systemaccess | map[string]string | System access | +| eventaudit | map[string]string | Event audit | +| registryvalues | map[string]string | Registry values | +| privilegerights | map[string][]string | Privilege rights | diff --git a/docs/mql/resources/os-pack/service.md b/docs/mql/resources/os-pack/service.md new file mode 100644 index 000000000..86a4b1dc2 --- /dev/null +++ b/docs/mql/resources/os-pack/service.md @@ -0,0 +1,29 @@ +--- +title: service +id: service +sidebar_label: service +displayed_sidebar: MQL +description: Service on this system +--- + +# service + +**Description** + +Service on this system + +**Init** + +service(name string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ---------------------------------------------- | +| name | string | Name of the service | +| description | string | Service description | +| installed | bool | Whether the service is installed | +| running | bool | Whether the service is running | +| enabled | bool | Whether the service is enabled (start at boot) | +| type | string | Type information | +| masked | bool | Whether the service is masked | diff --git a/docs/mql/resources/os-pack/services.md b/docs/mql/resources/os-pack/services.md new file mode 100644 index 000000000..b7e2dba71 --- /dev/null +++ b/docs/mql/resources/os-pack/services.md @@ -0,0 +1,23 @@ +--- +title: services +id: services +sidebar_label: services +displayed_sidebar: MQL +description: Services configured on this system +--- + +# services + +**Description** + +Services configured on this system + +**List** + +[]service + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------------------------------- | ----------- | +| list | [][service](service.md) | | diff --git a/docs/mql/resources/os-pack/shadow.entry.md b/docs/mql/resources/os-pack/shadow.entry.md new file mode 100644 index 000000000..38002cb28 --- /dev/null +++ b/docs/mql/resources/os-pack/shadow.entry.md @@ -0,0 +1,27 @@ +--- +title: shadow.entry +id: shadow.entry +sidebar_label: shadow.entry +displayed_sidebar: MQL +description: Shadowed password file entry +--- + +# shadow.entry + +**Description** + +Shadowed password file entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | ---------------------------------- | +| user | string | User | +| password | string | Password | +| lastchanged | time | Date of last password change | +| mindays | int | Minimum password age in days | +| maxdays | int | Maximum password age in days | +| warndays | int | Password warning period in days | +| inactivedays | int | Password inactivity period in days | +| expirydates | string | Account expiration date | +| reserved | string | Reserved field | diff --git a/docs/mql/resources/os-pack/shadow.md b/docs/mql/resources/os-pack/shadow.md new file mode 100644 index 000000000..1ca09a677 --- /dev/null +++ b/docs/mql/resources/os-pack/shadow.md @@ -0,0 +1,23 @@ +--- +title: shadow +id: shadow +sidebar_label: shadow +displayed_sidebar: MQL +description: Shadowed password file +--- + +# shadow + +**Description** + +Shadowed password file + +**List** + +[]shadow.entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ----------------------------------------- | ----------- | +| list | [][shadow.entry](shadow.entry.md) | | diff --git a/docs/mql/resources/os-pack/sshd.config.matchblock.md b/docs/mql/resources/os-pack/sshd.config.matchblock.md new file mode 100644 index 000000000..413233807 --- /dev/null +++ b/docs/mql/resources/os-pack/sshd.config.matchblock.md @@ -0,0 +1,15 @@ +--- +title: sshd.config.matchBlock +id: sshd.config.matchBlock +sidebar_label: sshd.config.matchBlock +displayed_sidebar: MQL +--- + +# sshd.config.matchBlock + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------- | ---------------------------------- | +| criteria | string | The match criteria for this block | +| params | map[string]string | Configuration values in this block | diff --git a/docs/mql/resources/os-pack/sshd.config.md b/docs/mql/resources/os-pack/sshd.config.md new file mode 100644 index 000000000..57f9bb287 --- /dev/null +++ b/docs/mql/resources/os-pack/sshd.config.md @@ -0,0 +1,32 @@ +--- +title: sshd.config +id: sshd.config +sidebar_label: sshd.config +displayed_sidebar: MQL +description: SSH server configuration +--- + +# sshd.config + +**Description** + +SSH server configuration + +**Init** + +sshd.config(path string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------- | +| file | [file](file.md) | File of this SSH server configuration | +| files | [][file](file.md) | A list of lexically sorted files making up the SSH server configuration | +| content | string | Raw content of this SSH server config | +| params | map[string]string | Configuration values of this SSH server | +| blocks | [][sshd.config.matchBlock](sshd.config.matchblock.md) | Blocks with match conditions in this SSH server config | +| ciphers | []string | Ciphers configured for this SSH server | +| macs | []string | MACs configured for this SSH server | +| kexs | []string | Key exchange algorithms configured for this SSH server | +| hostkeys | []string | Host keys configured for this SSH server | +| permitRootLogin | []string | PermitRootLogin setting in SSH server | diff --git a/docs/mql/resources/os-pack/sshd.md b/docs/mql/resources/os-pack/sshd.md new file mode 100644 index 000000000..4824a7301 --- /dev/null +++ b/docs/mql/resources/os-pack/sshd.md @@ -0,0 +1,13 @@ +--- +title: sshd +id: sshd +sidebar_label: sshd +displayed_sidebar: MQL +description: SSH server resource +--- + +# sshd + +**Description** + +SSH server resource diff --git a/docs/mql/resources/os-pack/user.md b/docs/mql/resources/os-pack/user.md new file mode 100644 index 000000000..51817af13 --- /dev/null +++ b/docs/mql/resources/os-pack/user.md @@ -0,0 +1,28 @@ +--- +title: user +id: user +sidebar_label: user +displayed_sidebar: MQL +description: User on this system +--- + +# user + +**Description** + +User on this system + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------- | ------------------------------------ | +| uid | int | User ID | +| gid | int | User's group ID | +| sid | string | User's security identifier (Windows) | +| name | string | Name of the user | +| home | string | Home folder | +| shell | string | Default shell configured | +| enabled | bool | Whether the user is enabled | +| authorizedkeys | [authorizedkeys](authorizedkeys.md) | List of authorized keys | +| sshkeys | [][privatekey](privatekey.md) | List of SSH keys | +| group | [group](group.md) | Group of which user is a member | diff --git a/docs/mql/resources/os-pack/users.md b/docs/mql/resources/os-pack/users.md new file mode 100644 index 000000000..cbc068107 --- /dev/null +++ b/docs/mql/resources/os-pack/users.md @@ -0,0 +1,23 @@ +--- +title: users +id: users +sidebar_label: users +displayed_sidebar: MQL +description: Users configured on this system +--- + +# users + +**Description** + +Users configured on this system + +**List** + +[]user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------------------------- | ----------- | +| list | [][user](user.md) | | diff --git a/docs/mql/resources/os-pack/vuln.advisory.md b/docs/mql/resources/os-pack/vuln.advisory.md new file mode 100644 index 000000000..c39edc833 --- /dev/null +++ b/docs/mql/resources/os-pack/vuln.advisory.md @@ -0,0 +1,24 @@ +--- +title: vuln.advisory +id: vuln.advisory +sidebar_label: vuln.advisory +displayed_sidebar: MQL +description: Advisory information +--- + +# vuln.advisory + +**Description** + +Advisory information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------- | ------------------------------------- | +| id | string | Advisory ID | +| title | string | Title of the advisory | +| description | string | Description of the advisory | +| published | time | Advisory publication date | +| modified | time | Last modification date | +| worstScore | [audit.cvss](audit.cvss.md) | Worst CVSS score of all assigned CVEs | diff --git a/docs/mql/resources/os-pack/vuln.cve.md b/docs/mql/resources/os-pack/vuln.cve.md new file mode 100644 index 000000000..855230229 --- /dev/null +++ b/docs/mql/resources/os-pack/vuln.cve.md @@ -0,0 +1,25 @@ +--- +title: vuln.cve +id: vuln.cve +sidebar_label: vuln.cve +displayed_sidebar: MQL +description: CVE information +--- + +# vuln.cve + +**Description** + +CVE information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------------------- | ------------------------------------- | +| id | string | CVE ID | +| state | string | CVE state | +| summary | string | Summary description | +| unscored | bool | Whether the CVE has a CVSS score | +| published | time | Publication date | +| modified | time | Last modification date | +| worstScore | [audit.cvss](audit.cvss.md) | Worst CVSS score of all assigned CVEs | diff --git a/docs/mql/resources/os-pack/vuln.package.md b/docs/mql/resources/os-pack/vuln.package.md new file mode 100644 index 000000000..1d147936d --- /dev/null +++ b/docs/mql/resources/os-pack/vuln.package.md @@ -0,0 +1,22 @@ +--- +title: vuln.package +id: vuln.package +sidebar_label: vuln.package +displayed_sidebar: MQL +description: Package information relevant for vulnerability management +--- + +# vuln.package + +**Description** + +Package information relevant for vulnerability management + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ---------------------------- | +| name | string | Package name | +| version | string | Package version | +| available | string | Available package version | +| arch | string | Architecture of this package | diff --git a/docs/mql/resources/os-pack/vulnmgmt.md b/docs/mql/resources/os-pack/vulnmgmt.md new file mode 100644 index 000000000..412e1b256 --- /dev/null +++ b/docs/mql/resources/os-pack/vulnmgmt.md @@ -0,0 +1,23 @@ +--- +title: vulnmgmt +id: vulnmgmt +sidebar_label: vulnmgmt +displayed_sidebar: MQL +description: Vulnerability Information +--- + +# vulnmgmt + +**Description** + +Vulnerability Information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------------- | --------------------------------------------------- | +| cves | [][vuln.cve](vuln.cve.md) | List of all CVEs affecting the asset | +| advisories | [][vuln.advisory](vuln.advisory.md) | List of all Advisories affecting the asset | +| packages | [][vuln.package](vuln.package.md) | List of all packages affected by vulnerabilities | +| lastAssessment | time | Last time the vulnerability information was updated | +| stats | [audit.cvss](audit.cvss.md) | Statistics about the vulnerabilities | diff --git a/docs/mql/resources/os-pack/windows.bitlocker.md b/docs/mql/resources/os-pack/windows.bitlocker.md new file mode 100644 index 000000000..f4d337119 --- /dev/null +++ b/docs/mql/resources/os-pack/windows.bitlocker.md @@ -0,0 +1,19 @@ +--- +title: windows.bitlocker +id: windows.bitlocker +sidebar_label: windows.bitlocker +displayed_sidebar: MQL +description: Windows BitLocker +--- + +# windows.bitlocker + +**Description** + +Windows BitLocker + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ----------------------------------------------------------------- | ----------- | +| volumes | [][windows.bitlocker.volume](windows.bitlocker.volume.md) | | diff --git a/docs/mql/resources/os-pack/windows.bitlocker.volume.md b/docs/mql/resources/os-pack/windows.bitlocker.volume.md new file mode 100644 index 000000000..41515e1ea --- /dev/null +++ b/docs/mql/resources/os-pack/windows.bitlocker.volume.md @@ -0,0 +1,26 @@ +--- +title: windows.bitlocker.volume +id: windows.bitlocker.volume +sidebar_label: windows.bitlocker.volume +displayed_sidebar: MQL +description: Windows BitLocker volume +--- + +# windows.bitlocker.volume + +**Description** + +Windows BitLocker volume + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| deviceID | string | Unique identifier for the volume | +| driveLetter | string | Drive letter of the volume | +| conversionStatus | dict | Status of the encryption or decryption on the volume | +| encryptionMethod | dict | Encryption algorithm and key size used on the volume | +| lockStatus | int | Whether the contents of the volume are accessible from Windows, 0 = Full contents of the volume are accessible, 1 = All or a portion of the contents of the volume are not accessible | +| persistentVolumeID | string | Persistent identifier for the volume on this system | +| protectionStatus | dict | Status of the volume, whether or not BitLocker is protecting the volume, 0 = Protection off, 1 = Protection on, 2 = Protection unknown | +| version | dict | BitLocker Full Volume Encryption metadata version of the volume | diff --git a/docs/mql/resources/os-pack/windows.feature.md b/docs/mql/resources/os-pack/windows.feature.md new file mode 100644 index 000000000..355288cfb --- /dev/null +++ b/docs/mql/resources/os-pack/windows.feature.md @@ -0,0 +1,28 @@ +--- +title: windows.feature +id: windows.feature +sidebar_label: windows.feature +displayed_sidebar: MQL +description: Windows feature resource +--- + +# windows.feature + +**Description** + +Windows feature resource + +**Init** + +windows.feature(name string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ------ | --------------------------------------------- | +| path | string | Feature full path | +| name | string | Command IDs of role, role service, or feature | +| displayName | string | Feature name | +| description | string | Feature description | +| installed | bool | Whether the feature is installed | +| installState | int | Feature installation state | diff --git a/docs/mql/resources/os-pack/windows.firewall.md b/docs/mql/resources/os-pack/windows.firewall.md new file mode 100644 index 000000000..088a37bb8 --- /dev/null +++ b/docs/mql/resources/os-pack/windows.firewall.md @@ -0,0 +1,21 @@ +--- +title: windows.firewall +id: windows.firewall +sidebar_label: windows.firewall +displayed_sidebar: MQL +description: Windows Firewall resource +--- + +# windows.firewall + +**Description** + +Windows Firewall resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| settings | dict | Global firewall settings | +| profiles | [][windows.firewall.profile](windows.firewall.profile.md) | Settings that apply to the per-profile configurations of the Windows Firewall with Advanced Security | +| rules | [][windows.firewall.rule](windows.firewall.rule.md) | Firewall rules | diff --git a/docs/mql/resources/os-pack/windows.firewall.profile.md b/docs/mql/resources/os-pack/windows.firewall.profile.md new file mode 100644 index 000000000..1a3da85f3 --- /dev/null +++ b/docs/mql/resources/os-pack/windows.firewall.profile.md @@ -0,0 +1,36 @@ +--- +title: windows.firewall.profile +id: windows.firewall.profile +sidebar_label: windows.firewall.profile +displayed_sidebar: MQL +description: Windows Firewall profile entry +--- + +# windows.firewall.profile + +**Description** + +Windows Firewall profile entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- | +| instanceID | string | | +| name | string | Name of the profile | +| enabled | int | Whether the firewall is enabled on this profile | +| defaultInboundAction | int | Default action for inbound traffic | +| defaultOutboundAction | int | Default action for outbound traffic | +| allowInboundRules | int | Whether administrators can create firewall rules that allow unsolicited inbound traffic (if 0, such rules are ignored) | +| allowLocalFirewallRules | int | Whether local firewall rules should merge into the effective policy along with group policy settings | +| allowLocalIPsecRules | int | Whether local IPsec rules should merge into the effective policy along with rules from group policy | +| allowUserApps | int | Whether to respect user allowed applications created in the legacy firewall | +| allowUserPorts | int | Whether to respect globally opened ports created in the legacy firewall | +| allowUnicastResponseToMulticast | int | Whether to allow unicast responses to multicast traffic | +| notifyOnListen | int | Whether to notify users when an application listens on a port that is closed | +| enableStealthModeForIPsec | int | Whether to use stealth mode for IPsec-protected traffic | +| logMaxSizeKilobytes | int | Maximum size the log file can reach before being rotated | +| logAllowed | int | Whether to log allowed packets | +| logBlocked | int | Whether to log blocked traffic | +| logIgnored | int | Whether to log an event when rules are ignored | +| logFileName | string | Filename in which to store the firewall log | diff --git a/docs/mql/resources/os-pack/windows.firewall.rule.md b/docs/mql/resources/os-pack/windows.firewall.rule.md new file mode 100644 index 000000000..42c48fa6e --- /dev/null +++ b/docs/mql/resources/os-pack/windows.firewall.rule.md @@ -0,0 +1,34 @@ +--- +title: windows.firewall.rule +id: windows.firewall.rule +sidebar_label: windows.firewall.rule +displayed_sidebar: MQL +description: Windows Firewall rule entry +--- + +# windows.firewall.rule + +**Description** + +Windows Firewall rule entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| instanceID | string | A string that uniquely identifies this instance within the policy store | +| name | string | Name of the rule | +| displayName | string | Localized name of this rule | +| description | string | Brief description of the rule | +| displayGroup | string | The group that this rule belongs to | +| enabled | int | Indicates whether this rule is administratively enabled or disabled, Values: enabled (1), disabled (2) | +| direction | int | Specifies which direction of traffic to match with this rule, Values: inbound (1), outbound (2) | +| action | int | Specifies the action to take on traffic that matches this rule | +| edgeTraversalPolicy | int | Specifies how this firewall rule will handle edge traversal cases, Values: block (0), allow (1), defer to user (2), defer to app (3) | +| looseSourceMapping | bool | Whether to group UDP packets into conversations based on the local address, local port, and remote port | +| localOnlyMapping | bool | Whether to group UDP packets into conversations based only on the local address and port | +| primaryStatus | int | PrimaryStatus provides a high level status value, Values: unknown (0), OK (1), degraded (2), error (3) | +| status | string | Detailed status of the rule | +| enforcementStatus | string | Whether this object is retrieved from the ActiveStore | +| policyStoreSource | string | Contains the path to the policy store where this rule originally came from | +| policyStoreSourceType | int | Describes the type of policy store where this rule originally came from | diff --git a/docs/mql/resources/os-pack/windows.hotfix.md b/docs/mql/resources/os-pack/windows.hotfix.md new file mode 100644 index 000000000..358aef851 --- /dev/null +++ b/docs/mql/resources/os-pack/windows.hotfix.md @@ -0,0 +1,27 @@ +--- +title: windows.hotfix +id: windows.hotfix +sidebar_label: windows.hotfix +displayed_sidebar: MQL +description: Windows hotfix resource +--- + +# windows.hotfix + +**Description** + +Windows hotfix resource + +**Init** + +windows.hotfix(hotfixId string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------------------------------ | +| hotfixId | string | Hotfix ID | +| description | string | Type of hotfix (e.g., Update or Security Update) | +| caption | string | Reference to knowledge base | +| installedOn | time | Date when the hotfix was installed | +| installedBy | string | User that installed the hotfix | diff --git a/docs/mql/resources/os-pack/windows.md b/docs/mql/resources/os-pack/windows.md new file mode 100644 index 000000000..1fd997b35 --- /dev/null +++ b/docs/mql/resources/os-pack/windows.md @@ -0,0 +1,21 @@ +--- +title: windows +id: windows +sidebar_label: windows +displayed_sidebar: MQL +description: Windows-specific resource to get operating system details +--- + +# windows + +**Description** + +Windows-specific resource to get operating system details + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| computerInfo | dict | A consolidated object of system and operating system properties, , see https://docs.microsoft.com/en-us/dotnet/api/microsoft.powershell.commands.computerinfo?view=powershellsdk-1.1.0 for more information | +| hotfixes | [][windows.hotfix](windows.hotfix.md) | Hotfixes installed on the computer | +| features | [][windows.feature](windows.feature.md) | Information about Windows Server roles, role services, and features that are available for installation and installed on a specified server. | diff --git a/docs/mql/resources/os-pack/windows.security.health.md b/docs/mql/resources/os-pack/windows.security.health.md new file mode 100644 index 000000000..8afecd5fa --- /dev/null +++ b/docs/mql/resources/os-pack/windows.security.health.md @@ -0,0 +1,25 @@ +--- +title: windows.security.health +id: windows.security.health +sidebar_label: windows.security.health +displayed_sidebar: MQL +description: Health of the Windows security provider +--- + +# windows.security.health + +**Description** + +Health of the Windows security provider + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------------- | ---- | ----------------------------------- | +| firewall | dict | Firewall information | +| autoUpdate | dict | Automatic update information | +| antiVirus | dict | Antivirus information | +| antiSpyware | dict | Spyware information | +| internetSettings | dict | Internet settings information | +| uac | dict | User account control information | +| securityCenterService | dict | Security Center service information | diff --git a/docs/mql/resources/os-pack/windows.security.md b/docs/mql/resources/os-pack/windows.security.md new file mode 100644 index 000000000..f88c60e71 --- /dev/null +++ b/docs/mql/resources/os-pack/windows.security.md @@ -0,0 +1,14 @@ +--- +title: windows.security +id: windows.security +sidebar_label: windows.security +displayed_sidebar: MQL +--- + +# windows.security + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ----------------------------------------------------------------- | ----------- | +| products | [][windows.security.product](windows.security.product.md) | | diff --git a/docs/mql/resources/os-pack/windows.security.product.md b/docs/mql/resources/os-pack/windows.security.product.md new file mode 100644 index 000000000..2cd637d1d --- /dev/null +++ b/docs/mql/resources/os-pack/windows.security.product.md @@ -0,0 +1,25 @@ +--- +title: windows.security.product +id: windows.security.product +sidebar_label: windows.security.product +displayed_sidebar: MQL +description: Private Windows security product +--- + +# windows.security.product + +**Description** + +Private Windows security product + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | --------------- | +| type | string | Type of product | +| guid | string | Product GUID | +| name | string | Product name | +| state | int | Product state | +| productState | string | Product state | +| signatureState | string | Signature state | +| timestamp | time | Time stamp | diff --git a/docs/mql/resources/os-pack/yum.md b/docs/mql/resources/os-pack/yum.md new file mode 100644 index 000000000..a438c56cb --- /dev/null +++ b/docs/mql/resources/os-pack/yum.md @@ -0,0 +1,20 @@ +--- +title: yum +id: yum +sidebar_label: yum +displayed_sidebar: MQL +description: Yum package manager resource +--- + +# yum + +**Description** + +Yum package manager resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | --------------------------------- | --------------------------------------------------------------------------------------------------------- | +| vars | map[string]string | Variables defined in Yum configuration files (/etc/yum.conf and all .repo files in the /etc/yum.repos.d/) | +| repos | [][yum.repo](yum.repo.md) | List of all configured Yum repositories | diff --git a/docs/mql/resources/os-pack/yum.repo.md b/docs/mql/resources/os-pack/yum.repo.md new file mode 100644 index 000000000..381110b02 --- /dev/null +++ b/docs/mql/resources/os-pack/yum.repo.md @@ -0,0 +1,34 @@ +--- +title: yum.repo +id: yum.repo +sidebar_label: yum.repo +displayed_sidebar: MQL +description: Yum repository resource +--- + +# yum.repo + +**Description** + +Yum repository resource + +**Init** + +yum.repo(id string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------- | ---------------- | ----------------------------------------------------------- | +| id | string | Repository ID | +| name | string | Human-readable repository name | +| status | string | Repository status | +| baseurl | []string | URL where the repodata directory of a repository is located | +| expire | string | Indicator when the repository will expire | +| filename | string | Deprecated; use file.path | +| file | [file](file.md) | Repository configuration file path | +| revision | string | Repository revision | +| pkgs | string | Packages in repository | +| size | string | File size of this repository | +| mirrors | string | Mirrors for this repository | +| enabled | bool | Whether the repository is used as package source | diff --git a/docs/mql/resources/slack-pack/README.md b/docs/mql/resources/slack-pack/README.md new file mode 100644 index 000000000..dd679c60c --- /dev/null +++ b/docs/mql/resources/slack-pack/README.md @@ -0,0 +1,23 @@ +--- +title: Slack Resource Pack - MQL Resources +id: slack.pack +sidebar_label: Slack Resource Pack +displayed_sidebar: MQL +description: The Slack resource pack lets you use MQL to query and assess the security of your Slack identities and configuration. +--- + +# Mondoo Slack Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ----------------------------------------------- | ------------------------------------------------------------------- | +| [slack](slack.md) | Slack | +| [slack.conversation](slack.conversation.md) | Slack conversation | +| [slack.conversations](slack.conversations.md) | Slack conversations (channels, direct messages, and group messages) | +| [slack.enterpriseUser](slack.enterpriseuser.md) | Slack Enterprise Grid user | +| [slack.login](slack.login.md) | Slack access log entry | +| [slack.team](slack.team.md) | Slack team | +| [slack.user](slack.user.md) | Slack user | +| [slack.userGroup](slack.usergroup.md) | Slack user groups | +| [slack.users](slack.users.md) | Slack users | diff --git a/docs/mql/resources/slack-pack/slack.conversation.md b/docs/mql/resources/slack-pack/slack.conversation.md new file mode 100644 index 000000000..4bba20818 --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.conversation.md @@ -0,0 +1,38 @@ +--- +title: slack.conversation +id: slack.conversation +sidebar_label: slack.conversation +displayed_sidebar: MQL +description: Slack conversation +--- + +# slack.conversation + +**Description** + +Slack conversation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------ | ------------------------------------- | ------------------------------------------------------------------------------- | +| id | string | Conversation ID | +| name | string | Name of the conversation | +| creator | [slack.user](slack.user.md) | User that created this conversation | +| created | time | Timestamp of when the conversation was created | +| locale | string | IETF language code that represents chosen language | +| topic | dict | Information about the channel topic | +| purpose | dict | Information about the channel purpose | +| isArchived | bool | Indicates that the conversation is archived | +| isOpen | bool | Indicates that the conversation is open | +| isPrivate | bool | Whether the conversation is privileged between two or more members | +| isIM | bool | Whether the conversation is a direct message | +| isMpim | bool | Whether the conversation is private between multiple users | +| isGroup | bool | Whether the conversation is a private channel created before March 2021 | +| isChannel | bool | Whether a conversation is a channel | +| isShared | bool | Whether the conversation is in some way shared between multiple workspaces | +| isExtShared | bool | Whether the conversation is part of a shared channel with a remote organization | +| isPendingExtShared | bool | Whether the conversation is to be shared with a remote organization | +| isOrgShared | bool | Whether the channel is shared between Enterprise Grid workspaces | +| priority | float | Priority of the conversation | +| members | [][slack.user](slack.user.md) | Members of the conversation | diff --git a/docs/mql/resources/slack-pack/slack.conversations.md b/docs/mql/resources/slack-pack/slack.conversations.md new file mode 100644 index 000000000..6f8bb516b --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.conversations.md @@ -0,0 +1,26 @@ +--- +title: slack.conversations +id: slack.conversations +sidebar_label: slack.conversations +displayed_sidebar: MQL +description: Slack conversations (channels, direct messages, and group messages) +--- + +# slack.conversations + +**Description** + +Slack conversations (channels, direct messages, and group messages) + +**List** + +[]slack.conversation + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------- | ---------------------------------------- | +| privateChannels | [][slack.conversation](slack.conversation.md) | List of private channels in a Slack team | +| publicChannels | [][slack.conversation](slack.conversation.md) | List of public channels in a Slack team | +| directMessages | [][slack.conversation](slack.conversation.md) | List of direct messages in a Slack team | +| list | [][slack.conversation](slack.conversation.md) | | diff --git a/docs/mql/resources/slack-pack/slack.enterpriseuser.md b/docs/mql/resources/slack-pack/slack.enterpriseuser.md new file mode 100644 index 000000000..e0f1afc70 --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.enterpriseuser.md @@ -0,0 +1,23 @@ +--- +title: slack.enterpriseUser +id: slack.enterpriseUser +sidebar_label: slack.enterpriseUser +displayed_sidebar: MQL +description: Slack Enterprise Grid user +--- + +# slack.enterpriseUser + +**Description** + +Slack Enterprise Grid user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------ | ---------------------------------------------------------------- | +| id | string | Enterprise user ID | +| enterpriseId | string | Unique ID for the Enterprise Grid organization | +| enterpriseName | string | Name for the Enterprise Grid organization. | +| isAdmin | bool | Whether the user is an admin of the Enterprise Grid organization | +| isOwner | bool | Whether the user is an owner of the Enterprise Grid organization | diff --git a/docs/mql/resources/slack-pack/slack.login.md b/docs/mql/resources/slack-pack/slack.login.md new file mode 100644 index 000000000..d3794dbff --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.login.md @@ -0,0 +1,28 @@ +--- +title: slack.login +id: slack.login +sidebar_label: slack.login +displayed_sidebar: MQL +description: Slack access log entry +--- + +# slack.login + +**Description** + +Slack access log entry + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ----------------------------------------------------------------------- | +| userID | string | User ID | +| username | string | User's handle | +| count | int | Total number of access log entries for that combination | +| ip | string | IP address of the device used | +| userAgent | string | User agent string from the browser or client application | +| isp | string | Best guess at the internet service provider | +| country | string | Best guesses at where the access originated, based on the IP address | +| region | string | Best guesses at where the access originated, based on the IP address | +| dateFirst | time | First access log entry for user, IP address, and user agent combination | +| dateLast | time | Most recent log entry for user, IP address, and user agent combination | diff --git a/docs/mql/resources/slack-pack/slack.md b/docs/mql/resources/slack-pack/slack.md new file mode 100644 index 000000000..a09fb3ab4 --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.md @@ -0,0 +1,20 @@ +--- +title: slack +id: slack +sidebar_label: slack +displayed_sidebar: MQL +description: Slack +--- + +# slack + +**Description** + +Slack + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ----------------------------------------------- | ------------------------- | +| accessLogs | [][slack.login](slack.login.md) | Slack access logs | +| userGroups | [][slack.userGroup](slack.usergroup.md) | List of Slack user groups | diff --git a/docs/mql/resources/slack-pack/slack.team.md b/docs/mql/resources/slack-pack/slack.team.md new file mode 100644 index 000000000..dfdf8377a --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.team.md @@ -0,0 +1,22 @@ +--- +title: slack.team +id: slack.team +sidebar_label: slack.team +displayed_sidebar: MQL +description: Slack team +--- + +# slack.team + +**Description** + +Slack team + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ------------------------ | +| id | string | ID of the team | +| name | string | Name of the team | +| domain | string | Domain of the team | +| emailDomain | string | Email domain of the team | diff --git a/docs/mql/resources/slack-pack/slack.user.md b/docs/mql/resources/slack-pack/slack.user.md new file mode 100644 index 000000000..2e37a8990 --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.user.md @@ -0,0 +1,43 @@ +--- +title: slack.user +id: slack.user +sidebar_label: slack.user +displayed_sidebar: MQL +description: Slack user +--- + +# slack.user + +**Description** + +Slack user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------------------------- | ---------------------------------------------------------------------- | +| id | string | ID of the workspace user | +| name | string | User name | +| teamId | string | Slack workspace ID | +| deleted | bool | Whether the user has been deactivated | +| color | string | Special user color | +| realName | string | User's first and last name | +| timeZone | string | Geographic timezone-related region | +| timeZoneLabel | string | Commonly used name of the timezone | +| timeZoneOffset | int | Number of seconds to offset UTC time | +| isBot | bool | Whether the user is a bot | +| isAdmin | bool | Whether the user is an admin of the current workspace | +| isOwner | bool | Whether the user is an owner of the current workspace | +| isPrimaryOwner | bool | Whether the user is the primary owner of the current workspace | +| isRestricted | bool | Whether the user is a guest user | +| isUltraRestricted | bool | Whether the user is a single-channel guest | +| isStranger | bool | Whether the user belongs to a different workspace | +| isAppUser | bool | Whether the user is an app bot | +| isInvitedUser | bool | Whether a user has been invited but has not yet signed in | +| has2FA | bool | Whether two-factor authentication is enabled for the user | +| twoFactorType | string | Type of two-factor authentication the user is using | +| hasFiles | bool | Whether the user owns files | +| presence | string | Presence of the user | +| locale | string | IETF language code that represents this user's chosen display language | +| profile | dict | User profile | +| enterpriseUser | [slack.enterpriseUser](slack.enterpriseuser.md) | Related Slack Enterprise Grid user | diff --git a/docs/mql/resources/slack-pack/slack.usergroup.md b/docs/mql/resources/slack-pack/slack.usergroup.md new file mode 100644 index 000000000..af9f032ac --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.usergroup.md @@ -0,0 +1,32 @@ +--- +title: slack.userGroup +id: slack.userGroup +sidebar_label: slack.userGroup +displayed_sidebar: MQL +description: Slack user groups +--- + +# slack.userGroup + +**Description** + +Slack user groups + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------------------------------------- | ------------------------------------ | +| id | string | Group ID | +| teamId | string | Slack workspace ID | +| name | string | Friendly name of the group | +| description | string | Purpose of the group | +| handle | string | Value used to notify group members | +| isExternal | bool | Whether the group is external | +| created | time | Timestamp when the group was created | +| updated | time | Timestamp when the group was updated | +| deleted | time | Timestamp when the group was deleted | +| createdBy | [slack.user](slack.user.md) | User that created the group | +| updatedBy | [slack.user](slack.user.md) | User that updated the group | +| deletedBy | [slack.user](slack.user.md) | User that deleted the group | +| userCount | int | Total number of users in a group | +| members | [][slack.user](slack.user.md) | Members of the group | diff --git a/docs/mql/resources/slack-pack/slack.users.md b/docs/mql/resources/slack-pack/slack.users.md new file mode 100644 index 000000000..751cd94a7 --- /dev/null +++ b/docs/mql/resources/slack-pack/slack.users.md @@ -0,0 +1,27 @@ +--- +title: slack.users +id: slack.users +sidebar_label: slack.users +displayed_sidebar: MQL +description: Slack users +--- + +# slack.users + +**Description** + +Slack users + +**List** + +[]slack.user + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------------------- | -------------------------- | +| bots | [][slack.user](slack.user.md) | Bot users in the workspace | +| members | [][slack.user](slack.user.md) | Members of the workspace | +| admins | [][slack.user](slack.user.md) | Admins of the workspace | +| owners | [][slack.user](slack.user.md) | Owner of the workspace | +| list | [][slack.user](slack.user.md) | | diff --git a/docs/mql/resources/terraform-pack/README.md b/docs/mql/resources/terraform-pack/README.md new file mode 100644 index 000000000..d1f33e6f6 --- /dev/null +++ b/docs/mql/resources/terraform-pack/README.md @@ -0,0 +1,28 @@ +--- +title: Terraform IaC Resource Pack - MQL Resources +id: terraform.iac.pack +sidebar_label: Terraform IaC Resource Pack +displayed_sidebar: MQL +description: The Terraform IaC resource pack lets you use MQL to query and assess the security of your Terraform HCL, plan and state resources. +--- + +# Mondoo Terraform IaC Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ----------------------------------------------------------------- | --------------------------------------------------------- | +| [terraform](terraform.md) | Terraform configuration files | +| [terraform.block](terraform.block.md) | Terraform resource block | +| [terraform.file](terraform.file.md) | Terraform configuration file (.tf or .tf.json file) | +| [terraform.fileposition](terraform.fileposition.md) | Position of the Terraform configuration block in the file | +| [terraform.module](terraform.module.md) | Terraform module block | +| [terraform.plan](terraform.plan.md) | Terraform plan | +| [terraform.plan.configuration](terraform.plan.configuration.md) | Terraform plan configuration | +| [terraform.plan.proposedChange](terraform.plan.proposedchange.md) | Terraform plan proposed change | +| [terraform.plan.resourceChange](terraform.plan.resourcechange.md) | Terraform plan resource change | +| [terraform.settings](terraform.settings.md) | Terraform settings | +| [terraform.state](terraform.state.md) | Terraform state | +| [terraform.state.module](terraform.state.module.md) | Terraform state module | +| [terraform.state.output](terraform.state.output.md) | Terraform state output values | +| [terraform.state.resource](terraform.state.resource.md) | Terraform state resource | diff --git a/docs/mql/resources/terraform-pack/terraform.block.md b/docs/mql/resources/terraform-pack/terraform.block.md new file mode 100644 index 000000000..28fd2620c --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.block.md @@ -0,0 +1,44 @@ +--- +title: terraform.block +id: terraform.block +sidebar_label: terraform.block +displayed_sidebar: MQL +description: Terraform resource block +--- + +# terraform.block + +**Supported platform** + +- terraform-hcl + +**Maturity** + +experimental + +**Description** + +Terraform resource block + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------------------------------------------- | -------------------- | +| type | string | Block type | +| labels | []string | Block Labels | +| nameLabel | string | Block name label | +| start | [terraform.fileposition](terraform.fileposition.md) | Block start position | +| end | [terraform.fileposition](terraform.fileposition.md) | Block end position | +| arguments | dict | Block arguments | +| attributes | dict | Raw block attributes | +| blocks | [][terraform.block](terraform.block.md) | Child blocks | +| related | [][terraform.block](terraform.block.md) | Related blocks | +| snippet | string | Block snippet | + +**Examples** + +Display all Terraform blocks and their arguments + +```coffee +terraform.blocks { nameLabel arguments } +``` diff --git a/docs/mql/resources/terraform-pack/terraform.file.md b/docs/mql/resources/terraform-pack/terraform.file.md new file mode 100644 index 000000000..bd7112b83 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.file.md @@ -0,0 +1,36 @@ +--- +title: terraform.file +id: terraform.file +sidebar_label: terraform.file +displayed_sidebar: MQL +description: Terraform configuration file (.tf or .tf.json file) +--- + +# terraform.file + +**Supported platform** + +- terraform-hcl + +**Maturity** + +experimental + +**Description** + +Terraform configuration file (.tf or .tf.json file) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ----------------------------------------------- | ------------------------------- | +| path | string | Terraform (.tf or tf.json file) | +| blocks | [][terraform.block](terraform.block.md) | All blocks within the file | + +**Examples** + +Display all files and their blocks + +```coffee +terraform.files { path blocks { nameLabel } } +``` diff --git a/docs/mql/resources/terraform-pack/terraform.fileposition.md b/docs/mql/resources/terraform-pack/terraform.fileposition.md new file mode 100644 index 000000000..f573e95a4 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.fileposition.md @@ -0,0 +1,30 @@ +--- +title: terraform.fileposition +id: terraform.fileposition +sidebar_label: terraform.fileposition +displayed_sidebar: MQL +description: Position of the Terraform configuration block in the file +--- + +# terraform.fileposition + +**Supported platform** + +- terraform-hcl + +**Maturity** + +experimental + +**Description** + +Position of the Terraform configuration block in the file + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | --------------------------------------------- | +| path | string | File path to the Terraform configuration file | +| line | int | Line of the block | +| column | int | Column of the block | +| byte | int | Size of the file | diff --git a/docs/mql/resources/terraform-pack/terraform.md b/docs/mql/resources/terraform-pack/terraform.md new file mode 100644 index 000000000..ed0b0bd10 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.md @@ -0,0 +1,55 @@ +--- +title: terraform +id: terraform +sidebar_label: terraform +displayed_sidebar: MQL +description: Terraform configuration files +--- + +# terraform + +**Supported platform** + +- terraform-hcl + +**Maturity** + +experimental + +**Description** + +Terraform configuration files + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------------------------------------------------- | ----------------------------------------------------------- | +| files | [][terraform.file](terraform.file.md) | Access to individual files including .tf and .tf.json files | +| tfvars | dict | The attributes defined in .tfvars and .tfvars.json | +| modules | [][terraform.module](terraform.module.md) | All referenced Terraform modules | +| blocks | [][terraform.block](terraform.block.md) | Raw HCL blocks | +| providers | [][terraform.block](terraform.block.md) | Provider blocks | +| datasources | [][terraform.block](terraform.block.md) | Data sources blocks | +| resources | [][terraform.block](terraform.block.md) | All blocks with the type resource | +| variables | [][terraform.block](terraform.block.md) | Variable blocks | +| outputs | [][terraform.block](terraform.block.md) | Output blocks | + +**Examples** + +Display all Terraform blocks and their arguments + +```coffee +terraform.blocks { nameLabel arguments } +``` + +Display all data blocks + +```coffee +terraform.datasources { nameLabel arguments } +``` + +Display all resource blocks + +```coffee +terraform.resources { nameLabel arguments } +``` diff --git a/docs/mql/resources/terraform-pack/terraform.module.md b/docs/mql/resources/terraform-pack/terraform.module.md new file mode 100644 index 000000000..f6828e229 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.module.md @@ -0,0 +1,39 @@ +--- +title: terraform.module +id: terraform.module +sidebar_label: terraform.module +displayed_sidebar: MQL +description: Terraform module block +--- + +# terraform.module + +**Supported platform** + +- terraform-hcl + +**Maturity** + +experimental + +**Description** + +Terraform module block + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------- | ------------------------------------- | ------------------------------------------------ | +| key | string | Unique identifier for the module | +| source | string | Source from which the module was loaded | +| version | string | Module version | +| dir | string | Path to the directory where the module is stored | +| block | [terraform.block](terraform.block.md) | Block (including the configuration) | + +**Examples** + +Display all loaded Terraform modules + +```coffee +terraform.modules { key version source} +``` diff --git a/docs/mql/resources/terraform-pack/terraform.plan.configuration.md b/docs/mql/resources/terraform-pack/terraform.plan.configuration.md new file mode 100644 index 000000000..df1559377 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.plan.configuration.md @@ -0,0 +1,24 @@ +--- +title: terraform.plan.configuration +id: terraform.plan.configuration +sidebar_label: terraform.plan.configuration +displayed_sidebar: MQL +description: Terraform plan configuration +--- + +# terraform.plan.configuration + +**Supported platform** + +- terraform-plan + +**Description** + +Terraform plan configuration + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | -------------- | ---------------------------------- | +| providerConfig | []dict | Provider configuration | +| resources | []dict | Root module resource configuration | diff --git a/docs/mql/resources/terraform-pack/terraform.plan.md b/docs/mql/resources/terraform-pack/terraform.plan.md new file mode 100644 index 000000000..2058cd816 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.plan.md @@ -0,0 +1,25 @@ +--- +title: terraform.plan +id: terraform.plan +sidebar_label: terraform.plan +displayed_sidebar: MQL +description: Terraform plan +--- + +# terraform.plan + +**Supported platform** + +- terraform-plan + +**Description** + +Terraform plan + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | --------------------------------------------------------------------------- | ------------------------------ | +| formatVersion | string | Terraform plan format version | +| terraformVersion | string | Generated by Terraform version | +| resourceChanges | [][terraform.plan.resourceChange](terraform.plan.resourcechange.md) | Resource changes | diff --git a/docs/mql/resources/terraform-pack/terraform.plan.proposedchange.md b/docs/mql/resources/terraform-pack/terraform.plan.proposedchange.md new file mode 100644 index 000000000..f7fb5f2d4 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.plan.proposedchange.md @@ -0,0 +1,30 @@ +--- +title: terraform.plan.proposedChange +id: terraform.plan.proposedChange +sidebar_label: terraform.plan.proposedChange +displayed_sidebar: MQL +description: Terraform plan proposed change +--- + +# terraform.plan.proposedChange + +**Supported platform** + +- terraform-plan + +**Description** + +Terraform plan proposed change + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ---------------- | ------------------------------------------- | +| address | string | Resource address | +| actions | []string | Actions that wil be taken for on the object | +| before | dict | Resource before values | +| after | dict | Resource after values | +| afterUnknown | dict | | +| beforeSensitive | dict | | +| afterSensitive | dict | | +| replacePaths | dict | | diff --git a/docs/mql/resources/terraform-pack/terraform.plan.resourcechange.md b/docs/mql/resources/terraform-pack/terraform.plan.resourcechange.md new file mode 100644 index 000000000..f1d8ac012 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.plan.resourcechange.md @@ -0,0 +1,32 @@ +--- +title: terraform.plan.resourceChange +id: terraform.plan.resourceChange +sidebar_label: terraform.plan.resourceChange +displayed_sidebar: MQL +description: Terraform plan resource change +--- + +# terraform.plan.resourceChange + +**Supported platform** + +- terraform-plan + +**Description** + +Terraform plan resource change + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ----------------------------------------------------------------- | ---------------------------------------------- | +| address | string | Resource address | +| previousAddress | string | Resource previous address | +| moduleAddress | string | Resource module address | +| mode | string | Resource mode | +| type | string | Resource type | +| name | string | Resource name | +| providerName | string | Provider name | +| deposed | string | Whether the action applies to a deposed object | +| change | [terraform.plan.proposedChange](terraform.plan.proposedchange.md) | Change to make to this object | +| actionReason | string | Resource action reason | diff --git a/docs/mql/resources/terraform-pack/terraform.settings.md b/docs/mql/resources/terraform-pack/terraform.settings.md new file mode 100644 index 000000000..5d880e566 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.settings.md @@ -0,0 +1,25 @@ +--- +title: terraform.settings +id: terraform.settings +sidebar_label: terraform.settings +displayed_sidebar: MQL +description: Terraform settings +--- + +# terraform.settings + +**Supported platform** + +- terraform-hcl + +**Description** + +Terraform settings + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ------------------------------------- | --------------------- | +| block | [terraform.block](terraform.block.md) | Settings block | +| requiredProviders | dict | Provider requirements | +| backend | dict | Backend configuration | diff --git a/docs/mql/resources/terraform-pack/terraform.state.md b/docs/mql/resources/terraform-pack/terraform.state.md new file mode 100644 index 000000000..8a8c92300 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.state.md @@ -0,0 +1,28 @@ +--- +title: terraform.state +id: terraform.state +sidebar_label: terraform.state +displayed_sidebar: MQL +description: Terraform state +--- + +# terraform.state + +**Supported platform** + +- terraform-state + +**Description** + +Terraform state + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------------------------------------------------------- | --------------------------------------------------------- | +| formatVersion | string | Terraform state format version | +| terraformVersion | string | Generated by Terraform version | +| outputs | [][terraform.state.output](terraform.state.output.md) | Output values | +| rootModule | [terraform.state.module](terraform.state.module.md) | Root module which consists resources defined in .tf files | +| modules | [][terraform.state.module](terraform.state.module.md) | flat list of all modules | +| resources | [][terraform.state.resource](terraform.state.resource.md) | A flat list of all resources across all modules | diff --git a/docs/mql/resources/terraform-pack/terraform.state.module.md b/docs/mql/resources/terraform-pack/terraform.state.module.md new file mode 100644 index 000000000..e4f8134fc --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.state.module.md @@ -0,0 +1,29 @@ +--- +title: terraform.state.module +id: terraform.state.module +sidebar_label: terraform.state.module +displayed_sidebar: MQL +description: Terraform state module +--- + +# terraform.state.module + +**Supported platform** + +- terraform-state + +**Description** + +Terraform state module + +**Init** + +terraform.state.module(identifier string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------ | ----------------------------------------------------------------- | ---------------------------------------------- | +| address | string | Module identifier address | +| resources | [][terraform.state.resource](terraform.state.resource.md) | Resources that describe infrastructure objects | +| childModules | [][terraform.state.module](terraform.state.module.md) | Child modules called from this module | diff --git a/docs/mql/resources/terraform-pack/terraform.state.output.md b/docs/mql/resources/terraform-pack/terraform.state.output.md new file mode 100644 index 000000000..58ad7eb61 --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.state.output.md @@ -0,0 +1,30 @@ +--- +title: terraform.state.output +id: terraform.state.output +sidebar_label: terraform.state.output +displayed_sidebar: MQL +description: Terraform state output values +--- + +# terraform.state.output + +**Supported platform** + +- terraform-state + +**Description** + +Terraform state output values + +**Init** + +terraform.state.output(identifier string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------ | ------------------------------- | +| identifier | string | Output identifier | +| sensitive | bool | Whether the output is sensitive | +| value | dict | Output value | +| type | dict | Output value type | diff --git a/docs/mql/resources/terraform-pack/terraform.state.resource.md b/docs/mql/resources/terraform-pack/terraform.state.resource.md new file mode 100644 index 000000000..7a277fabf --- /dev/null +++ b/docs/mql/resources/terraform-pack/terraform.state.resource.md @@ -0,0 +1,32 @@ +--- +title: terraform.state.resource +id: terraform.state.resource +sidebar_label: terraform.state.resource +displayed_sidebar: MQL +description: Terraform state resource +--- + +# terraform.state.resource + +**Supported platform** + +- terraform-state + +**Description** + +Terraform state resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ---------------- | --------------------------------------------------------------------------- | +| address | string | Address is the absolute resource address | +| mode | string | Mode: managed or data | +| type | string | Resource type | +| name | string | Resource name | +| providerName | string | Terraform provider | +| schemaVersion | int | Which version of the resource type schema the `values` property conforms to | +| values | dict | Attribute values | +| dependsOn | []string | List of the resource's dependencies | +| tainted | bool | Whether the resource is tainted in the Terraform state | +| deposedKey | string | Whether the resource is deposed in the Terraform state | diff --git a/docs/mql/resources/vcd-pack/README.md b/docs/mql/resources/vcd-pack/README.md new file mode 100644 index 000000000..34eb820d9 --- /dev/null +++ b/docs/mql/resources/vcd-pack/README.md @@ -0,0 +1,26 @@ +--- +title: VMware Cloud Director Resource Pack - MQL Resources +id: vmware.cloud.director.pack +sidebar_label: VMware Cloud Director Resource Pack +displayed_sidebar: MQL +description: The VMware Cloud Director resource pack lets you use MQL to query and assess the security of your VMware Cloud Director configuration. +--- + +# Mondoo VMware Cloud Director Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ----------------------------------------------------------------- | ----------------------------------------------- | +| [vcd](vcd.md) | VMware Cloud Director | +| [vcd.externalNetwork](vcd.externalnetwork.md) | VMware Cloud Director external network | +| [vcd.networkPool](vcd.networkpool.md) | VMware Cloud Director network pools | +| [vcd.organization](vcd.organization.md) | VMware Cloud Director organization resource | +| [vcd.organization.ldapSettings](vcd.organization.ldapsettings.md) | VMware Cloud Director LDAP setting | +| [vcd.right](vcd.right.md) | VMware Cloud Director available rights | +| [vcd.role](vcd.role.md) | VMware Cloud Director role | +| [vcd.serverInstance](vcd.serverinstance.md) | vCenter server attached to VCD | +| [vcd.vdc](vcd.vdc.md) | VMware Cloud Director organization VDC resource | +| [vcd.vdcGroup](vcd.vdcgroup.md) | VMware Cloud Director NSX-T VDC groups | +| [vcd.vdcProvider](vcd.vdcprovider.md) | VMware Cloud Director provider VDC | +| [vcd.vm](vcd.vm.md) | VMware Cloud Director VM resource | diff --git a/docs/mql/resources/vcd-pack/vcd.externalnetwork.md b/docs/mql/resources/vcd-pack/vcd.externalnetwork.md new file mode 100644 index 000000000..2941f7d1c --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.externalnetwork.md @@ -0,0 +1,23 @@ +--- +title: vcd.externalNetwork +id: vcd.externalNetwork +sidebar_label: vcd.externalNetwork +displayed_sidebar: MQL +description: VMware Cloud Director external network +--- + +# vcd.externalNetwork + +**Description** + +VMware Cloud Director external network + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------ | ------------------------------ | +| id | string | Deprecated; use urn instead | +| name | string | Unique name for the network | +| urn | string | URN of the network | +| description | string | Network description | +| configuration | dict | External network configuration | diff --git a/docs/mql/resources/vcd-pack/vcd.md b/docs/mql/resources/vcd-pack/vcd.md new file mode 100644 index 000000000..88796510b --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.md @@ -0,0 +1,23 @@ +--- +title: vcd +id: vcd +sidebar_label: vcd +displayed_sidebar: MQL +description: VMware Cloud Director +--- + +# vcd + +**Description** + +VMware Cloud Director + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------------------------------------------------------- | -------------------------------------------- | +| organizations | [][vcd.organization](vcd.organization.md) | VMware Cloud Director organization resources | +| providerVDCs | [][vcd.vdcProvider](vcd.vdcprovider.md) | VMware Cloud Director provider VDC | +| networkPools | [][vcd.networkPool](vcd.networkpool.md) | VMware Cloud Director network pools | +| externalNetworks | [][vcd.externalNetwork](vcd.externalnetwork.md) | VMware Cloud Director external networks | +| serverInstances | [][vcd.serverInstance](vcd.serverinstance.md) | vCenter server attached to VCD | diff --git a/docs/mql/resources/vcd-pack/vcd.networkpool.md b/docs/mql/resources/vcd-pack/vcd.networkpool.md new file mode 100644 index 000000000..fde95d050 --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.networkpool.md @@ -0,0 +1,21 @@ +--- +title: vcd.networkPool +id: vcd.networkPool +sidebar_label: vcd.networkPool +displayed_sidebar: MQL +description: VMware Cloud Director network pools +--- + +# vcd.networkPool + +**Description** + +VMware Cloud Director network pools + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------ | ------------------------------------------------------------------------------------------------------------ | +| name | string | Network pool name | +| isBusy | bool | Whether the network pool is busy | +| networkPoolType | int | Type of network pool (0=Vlan backed network pool; 1=vNI backed network pool;2=Portgroup backed network pool) | diff --git a/docs/mql/resources/vcd-pack/vcd.organization.ldapsettings.md b/docs/mql/resources/vcd-pack/vcd.organization.ldapsettings.md new file mode 100644 index 000000000..f7e9cabc5 --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.organization.ldapsettings.md @@ -0,0 +1,24 @@ +--- +title: vcd.organization.ldapSettings +id: vcd.organization.ldapSettings +sidebar_label: vcd.organization.ldapSettings +displayed_sidebar: MQL +description: VMware Cloud Director LDAP setting +--- + +# vcd.organization.ldapSettings + +**Description** + +VMware Cloud Director LDAP setting + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------ | ----------------------------------------------------------------- | +| id | string | URI of the entity | +| customUsersOu | string | LDAP attribute-value pair to use for the OU (organizational unit) | +| orgLdapMode | string | Whether the organization is connected to an LDAP service | +| hostname | string | Hostname of the LDAP server | +| username | string | Username to use when logging in to LDAP | +| realm | string | LDAP realm | diff --git a/docs/mql/resources/vcd-pack/vcd.organization.md b/docs/mql/resources/vcd-pack/vcd.organization.md new file mode 100644 index 000000000..46e4699fd --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.organization.md @@ -0,0 +1,30 @@ +--- +title: vcd.organization +id: vcd.organization +sidebar_label: vcd.organization +displayed_sidebar: MQL +description: VMware Cloud Director organization resource +--- + +# vcd.organization + +**Description** + +VMware Cloud Director organization resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------------------------------------------- | ------------------------------------ | +| id | string | Organization ID | +| name | string | Organization name | +| fullName | string | Organization full name | +| isEnabled | bool | Whether this organization is enabled | +| description | string | Organization description | +| vms | [][vcd.vm](vcd.vm.md) | Virtual machines | +| rights | [][vcd.right](vcd.right.md) | Rights | +| vdcs | [][vcd.vdc](vcd.vdc.md) | Virtual data centers (VDCs) | +| vdcGroups | [][vcd.vdcGroup](vcd.vdcgroup.md) | VDC groups | +| roles | [][vcd.role](vcd.role.md) | Organization roles | +| settings | dict | Organization settings | +| ldapConfiguration | [vcd.organization.ldapSettings](vcd.organization.ldapsettings.md) | Organization LDAP configuration | diff --git a/docs/mql/resources/vcd-pack/vcd.right.md b/docs/mql/resources/vcd-pack/vcd.right.md new file mode 100644 index 000000000..07441d13e --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.right.md @@ -0,0 +1,25 @@ +--- +title: vcd.right +id: vcd.right +sidebar_label: vcd.right +displayed_sidebar: MQL +description: VMware Cloud Director available rights +--- + +# vcd.right + +**Description** + +VMware Cloud Director available rights + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ----------------- | +| id | string | Right ID | +| name | string | Right name | +| description | string | Right description | +| bundleKey | string | Bundle key | +| category | string | Category | +| serviceNamespace | string | Service namespace | +| rightType | string | Right type | diff --git a/docs/mql/resources/vcd-pack/vcd.role.md b/docs/mql/resources/vcd-pack/vcd.role.md new file mode 100644 index 000000000..5722190a0 --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.role.md @@ -0,0 +1,21 @@ +--- +title: vcd.role +id: vcd.role +sidebar_label: vcd.role +displayed_sidebar: MQL +description: VMware Cloud Director role +--- + +# vcd.role + +**Description** + +VMware Cloud Director role + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | -------------------- | +| id | string | ID of the role | +| name | string | Name of the role | +| description | string | Optional description | diff --git a/docs/mql/resources/vcd-pack/vcd.serverinstance.md b/docs/mql/resources/vcd-pack/vcd.serverinstance.md new file mode 100644 index 000000000..0d6e6f29b --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.serverinstance.md @@ -0,0 +1,28 @@ +--- +title: vcd.serverInstance +id: vcd.serverInstance +sidebar_label: vcd.serverInstance +displayed_sidebar: MQL +description: vCenter server attached to VCD +--- + +# vcd.serverInstance + +**Description** + +vCenter server attached to VCD + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ------ | ---------------------------------------- | +| name | string | Name of vCenter server | +| isBusy | bool | Indicates if vCenter server is busy | +| isEnabled | bool | Indicates if vCenter server is enabled | +| isSupported | bool | Indicates if vCenter server is supported | +| listenerState | string | vCenter listener state | +| status | string | vCenter status | +| userName | string | User name to connect to the server | +| vcVersion | string | Version of the vCenter server | +| uuid | string | Instance UUID of the vCenter server | +| vsmIP | string | VSM IP | diff --git a/docs/mql/resources/vcd-pack/vcd.vdc.md b/docs/mql/resources/vcd-pack/vcd.vdc.md new file mode 100644 index 000000000..3b238f8be --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.vdc.md @@ -0,0 +1,28 @@ +--- +title: vcd.vdc +id: vcd.vdc +sidebar_label: vcd.vdc +displayed_sidebar: MQL +description: VMware Cloud Director organization VDC resource +--- + +# vcd.vdc + +**Description** + +VMware Cloud Director organization VDC resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ------ | ---------------------------------------------------------- | +| id | string | ID of the VDC | +| name | string | Name of the VDC | +| status | int | Creation status of the VDC (0=creating, 1=ready, -1=error) | +| description | string | Optional description | +| allocationModel | string | Used allocation model | +| nicQuota | int | Maximum number of virtual NICs allowed (0=unlimited) | +| networkQuota | int | Maximum number of network objects allowed (0=unlimited) | +| usedNetworkCount | int | Number of networks in use for/by this VDC | +| vmQuota | int | Quota of VMs that can be created in this VDC | +| isEnabled | bool | Indicates if VDC is enabled for use | diff --git a/docs/mql/resources/vcd-pack/vcd.vdcgroup.md b/docs/mql/resources/vcd-pack/vcd.vdcgroup.md new file mode 100644 index 000000000..ed02dd7e3 --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.vdcgroup.md @@ -0,0 +1,25 @@ +--- +title: vcd.vdcGroup +id: vcd.vdcGroup +sidebar_label: vcd.vdcGroup +displayed_sidebar: MQL +description: VMware Cloud Director NSX-T VDC groups +--- + +# vcd.vdcGroup + +**Description** + +VMware Cloud Director NSX-T VDC groups + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------------- | ------ | ----------------------------------------------------------------------------------------- | +| name | string | Name of VDC group | +| description | string | Description of the VDC group | +| localEgress | bool | Whether local egress is enabled for a universal router belonging to a universal VDC group | +| status | string | Status of the VDC group | +| type | string | VDC group type (LOCAL or UNIVERSAL) | +| universalNetworkingEnabled | bool | Whether a VDC group router has been created | +| dfwEnabled | bool | Whether distributed firewall is enabled for the VDC group | diff --git a/docs/mql/resources/vcd-pack/vcd.vdcprovider.md b/docs/mql/resources/vcd-pack/vcd.vdcprovider.md new file mode 100644 index 000000000..e7ffe5f0e --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.vdcprovider.md @@ -0,0 +1,39 @@ +--- +title: vcd.vdcProvider +id: vcd.vdcProvider +sidebar_label: vcd.vdcProvider +displayed_sidebar: MQL +description: VMware Cloud Director provider VDC +--- + +# vcd.vdcProvider + +**Description** + +VMware Cloud Director provider VDC + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------------- | ----------------- | ----------------------------------------- | +| name | string | Name of the provider VDC | +| status | string | Status of the provider VDC | +| isBusy | bool | Whether the provider VDC is busy | +| isDeleted | bool | Whether the provider VDC is deleted | +| isEnabled | bool | Whether the provider VDC is enabled | +| cpuAllocationMhz | int | CPU allocation in MHz | +| cpuLimitMhz | int | CPU limit in MHz | +| cpuUsedMhz | int | CPU used in MHz | +| numberOfDatastores | int | Number of datastores | +| numberOfStorageProfiles | int | Number of storage profiles | +| numberOfVdcs | int | Number of VDCs | +| memoryAllocationMB | int | Memory allocation in MB | +| memoryLimitMB | int | Memory limit in MB | +| memoryUsedMB | int | Memory used in MB | +| storageAllocationMB | int | Storage allocation in MB | +| storageLimitMB | int | Storage limit in MB | +| storageUsedMB | int | Storage used in MB | +| cpuOverheadMhz | int | CPU overhead in MHz | +| storageOverheadMB | int | Storage overhead in MB | +| memoryOverheadMB | int | Memory overhead in MB | +| metadata | map[string]string | Key-value pairs for provider VDC metadata | diff --git a/docs/mql/resources/vcd-pack/vcd.vm.md b/docs/mql/resources/vcd-pack/vcd.vm.md new file mode 100644 index 000000000..4f6d57a63 --- /dev/null +++ b/docs/mql/resources/vcd-pack/vcd.vm.md @@ -0,0 +1,46 @@ +--- +title: vcd.vm +id: vcd.vm +sidebar_label: vcd.vm +displayed_sidebar: MQL +description: VMware Cloud Director VM resource +--- + +# vcd.vm + +**Description** + +VMware Cloud Director VM resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------------ | ------ | --------------------------------------------------- | +| id | string | ID for the standalone VM in the VDC | +| name | string | Name of the standalone VM in the VDC | +| containerName | string | The name of the containing vApp or vApp template | +| containerID | string | vApp or vApp template ID | +| ownerId | string | Owner ID of the VM | +| ownerName | string | Owner name of the VM | +| isDeleted | bool | Whether the entity is deleted | +| guestOs | string | Guest operating system | +| numberOfCpus | int | Number of CPUs | +| memoryMB | int | Memory in MB | +| status | string | Status | +| networkName | string | Network name | +| ipAddress | string | IP Address of the VM on the primary network | +| isBusy | bool | Whether the VM is busy | +| isDeployed | bool | Whether the VM is deployed | +| isPublished | bool | Whether the VM is in a published catalog | +| catalogName | string | Catalog name | +| hardwareVersion | int | Hardware version | +| vmToolsStatus | string | VM tools status | +| isInMaintenanceMode | bool | Whether the VM is in maintenance mode | +| isAutoNature | bool | Whether the parent vApp is a managed vApp | +| storageProfileName | string | Storage profile name | +| gcStatus | string | GC status of this VM | +| isComputePolicyCompliant | bool | Whether the VM is compliant with the compute policy | +| encrypted | bool | Whether the VM is encrypted | +| totalStorageAllocatedMb | int | Total storage allocation in MB | +| isExpired | bool | Whether the VM's storage lease has expired | +| hostName | string | ESXi host for this VM | diff --git a/docs/mql/resources/vsphere-pack/README.md b/docs/mql/resources/vsphere-pack/README.md new file mode 100644 index 000000000..87905f5a6 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/README.md @@ -0,0 +1,38 @@ +--- +title: VMware vSphere Resource Pack - MQL Resources +id: vmware.vsphere.pack +sidebar_label: VMware vSphere Resource Pack +displayed_sidebar: MQL +description: The VMware vSphere resource pack lets you use MQL to query and assess the security of your VMware vSphere hosts and services. +--- + +# Mondoo VMware vSphere Resource Pack Reference + +In this pack: + +| ID | DESCRIPTION | +| ------------------------------------------------------- | --------------------------------------------------------- | +| [asset](asset.md) | vSphere asset resource | +| [audit.cvss](audit.cvss.md) | Common Vulnerability Scoring System (CVSS) score | +| [esxi](esxi.md) | VMware ESXi resource | +| [esxi.command](esxi.command.md) | Run a command on ESXi | +| [esxi.kernelmodule](esxi.kernelmodule.md) | vSphere ESXi kernel module resource | +| [esxi.ntpconfig](esxi.ntpconfig.md) | vSphere ESXi NTP configuration resource | +| [esxi.service](esxi.service.md) | vSphere ESXi management service resource | +| [esxi.timezone](esxi.timezone.md) | vSphere ESXi timezone resource | +| [esxi.vib](esxi.vib.md) | vSphere installation bundle resource | +| [platform](platform.md) | vSphere platform resource (deprecated) | +| [vsphere](vsphere.md) | VMware vSphere resource | +| [vsphere.cluster](vsphere.cluster.md) | vSphere cluster resource | +| [vsphere.datacenter](vsphere.datacenter.md) | vSphere datacenter inventory | +| [vsphere.host](vsphere.host.md) | vSphere ESXi host resource | +| [vsphere.license](vsphere.license.md) | vSphere license information | +| [vsphere.vm](vsphere.vm.md) | vSphere VM resource | +| [vsphere.vmknic](vsphere.vmknic.md) | vSphere ESXi virtual network interface resource | +| [vsphere.vmnic](vsphere.vmnic.md) | vSphere ESXi physical network interface resource | +| [vsphere.vswitch.dvs](vsphere.vswitch.dvs.md) | vSphere distributed virtual switch | +| [vsphere.vswitch.standard](vsphere.vswitch.standard.md) | vSphere standard virtual switch | +| [vuln.advisory](vuln.advisory.md) | Advisory information | +| [vuln.cve](vuln.cve.md) | CVE information | +| [vuln.package](vuln.package.md) | Package information relevant for vulnerability management | +| [vulnmgmt](vulnmgmt.md) | Vulnerability Information | diff --git a/docs/mql/resources/vsphere-pack/asset.md b/docs/mql/resources/vsphere-pack/asset.md new file mode 100644 index 000000000..b22e2f96e --- /dev/null +++ b/docs/mql/resources/vsphere-pack/asset.md @@ -0,0 +1,20 @@ +--- +title: asset +id: asset +sidebar_label: asset +displayed_sidebar: MQL +description: vSphere asset resource +--- + +# asset + +**Description** + +vSphere asset resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------- | +| cpes | []core.cpe | Common Platform Enumeration (CPE) for the asset | +| vulnerabilityReport | dict | Advisory & vulnerability report, Will be deprecated in version 10.0; Full advisory & vulnerability report, use vulnmgmt instead | diff --git a/docs/mql/resources/vsphere-pack/audit.cvss.md b/docs/mql/resources/vsphere-pack/audit.cvss.md new file mode 100644 index 000000000..4a5077b73 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/audit.cvss.md @@ -0,0 +1,20 @@ +--- +title: audit.cvss +id: audit.cvss +sidebar_label: audit.cvss +displayed_sidebar: MQL +description: Common Vulnerability Scoring System (CVSS) score +--- + +# audit.cvss + +**Description** + +Common Vulnerability Scoring System (CVSS) score + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ------ | ----------------------------------------- | +| score | float | CVSS score ranging from 0.0 to 10.0 | +| vector | string | CVSS score represented as a vector string | diff --git a/docs/mql/resources/vsphere-pack/esxi.command.md b/docs/mql/resources/vsphere-pack/esxi.command.md new file mode 100644 index 000000000..27adccfaa --- /dev/null +++ b/docs/mql/resources/vsphere-pack/esxi.command.md @@ -0,0 +1,30 @@ +--- +title: esxi.command +id: esxi.command +sidebar_label: esxi.command +displayed_sidebar: MQL +description: Run a command on ESXi +--- + +# esxi.command + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +Run a command on ESXi + +**Init** + +esxi.command(command string) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | -------------- | ---------------------- | +| inventoryPath | string | vSphere inventory path | +| command | string | Raw command | +| result | []dict | Command result | diff --git a/docs/mql/resources/vsphere-pack/esxi.kernelmodule.md b/docs/mql/resources/vsphere-pack/esxi.kernelmodule.md new file mode 100644 index 000000000..307cdd938 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/esxi.kernelmodule.md @@ -0,0 +1,33 @@ +--- +title: esxi.kernelmodule +id: esxi.kernelmodule +sidebar_label: esxi.kernelmodule +displayed_sidebar: MQL +description: vSphere ESXi kernel module resource +--- + +# esxi.kernelmodule + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere ESXi kernel module resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------------- | ------ | ----------------------------- | +| name | string | Module name | +| modulefile | string | Module file location | +| version | string | Module version | +| loaded | bool | Flag if the module is loaded | +| license | string | Module license | +| enabled | bool | Flag if the module is enabled | +| signedStatus | string | Module signed status | +| signatureDigest | string | Module signed digest | +| signatureFingerprint | string | Module signed fingerprint | +| vibAcceptanceLevel | string | Module acceptance level | diff --git a/docs/mql/resources/vsphere-pack/esxi.md b/docs/mql/resources/vsphere-pack/esxi.md new file mode 100644 index 000000000..f538f1378 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/esxi.md @@ -0,0 +1,43 @@ +--- +title: esxi +id: esxi +sidebar_label: esxi +displayed_sidebar: MQL +description: VMware ESXi resource +--- + +# esxi + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Maturity** + +deprecated + +**Description** + +VMware ESXi resource + +The `esxi.host` and `esxi.vm` resource is deprecated. Please use `vsphere.host` and `vsphere.vm` instead. + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---- | ------------------------------- | -------------------------------- | +| host | [vsphere.host](vsphere.host.md) | Current targeted ESXi host | +| vm | [vsphere.vm](vsphere.vm.md) | Current targeted virtual machine | + +**Examples** + +Check that all kernel modules are signed + +```coffee +esxi.host { + kernelModules { + signedStatus == "Signed" + } +} +``` diff --git a/docs/mql/resources/vsphere-pack/esxi.ntpconfig.md b/docs/mql/resources/vsphere-pack/esxi.ntpconfig.md new file mode 100644 index 000000000..5de9cab11 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/esxi.ntpconfig.md @@ -0,0 +1,26 @@ +--- +title: esxi.ntpconfig +id: esxi.ntpconfig +sidebar_label: esxi.ntpconfig +displayed_sidebar: MQL +description: vSphere ESXi NTP configuration resource +--- + +# esxi.ntpconfig + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere ESXi NTP configuration resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------ | ---------------- | ---------------------------------------------------------------------------------------------- | +| id | string | NTP config ID | +| server | []string | List of time servers, specified as either IP addresses or fully qualified domain names (FQDNs) | +| config | []string | Content of ntp.conf host configuration file, split by lines | diff --git a/docs/mql/resources/vsphere-pack/esxi.service.md b/docs/mql/resources/vsphere-pack/esxi.service.md new file mode 100644 index 000000000..c2d5c76ee --- /dev/null +++ b/docs/mql/resources/vsphere-pack/esxi.service.md @@ -0,0 +1,30 @@ +--- +title: esxi.service +id: esxi.service +sidebar_label: esxi.service +displayed_sidebar: MQL +description: vSphere ESXi management service resource +--- + +# esxi.service + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere ESXi management service resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ---------------- | ---------------------------------------------------------------------- | +| key | string | Brief identifier for the service | +| label | string | Display label for the service | +| required | bool | Flag indicating whether the service is required and cannot be disabled | +| uninstallable | bool | Deprecated; always set to false | +| running | bool | Flag indicating whether the service is currently running | +| ruleset | []string | Firewall rulesets used by this service | +| policy | string | Service activation policy | diff --git a/docs/mql/resources/vsphere-pack/esxi.timezone.md b/docs/mql/resources/vsphere-pack/esxi.timezone.md new file mode 100644 index 000000000..86a8f5045 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/esxi.timezone.md @@ -0,0 +1,27 @@ +--- +title: esxi.timezone +id: esxi.timezone +sidebar_label: esxi.timezone +displayed_sidebar: MQL +description: vSphere ESXi timezone resource +--- + +# esxi.timezone + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere ESXi timezone resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ---------------------------- | +| key | string | Identifier for the time zone | +| name | string | Time zone name | +| description | string | Description of the time zone | +| offset | int | GMT offset | diff --git a/docs/mql/resources/vsphere-pack/esxi.vib.md b/docs/mql/resources/vsphere-pack/esxi.vib.md new file mode 100644 index 000000000..7f3b3e20c --- /dev/null +++ b/docs/mql/resources/vsphere-pack/esxi.vib.md @@ -0,0 +1,31 @@ +--- +title: esxi.vib +id: esxi.vib +sidebar_label: esxi.vib +displayed_sidebar: MQL +description: vSphere installation bundle resource +--- + +# esxi.vib + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere installation bundle resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------------- | ------ | ---------------- | +| id | string | VIB ID | +| name | string | Bundle name | +| acceptanceLevel | string | Acceptance level | +| creationDate | time | Creation date | +| installDate | time | Install date | +| status | string | Bundle status | +| vendor | string | Bundle vendor | +| version | string | Bundle version | diff --git a/docs/mql/resources/vsphere-pack/platform.md b/docs/mql/resources/vsphere-pack/platform.md new file mode 100644 index 000000000..dcc0bee97 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/platform.md @@ -0,0 +1,19 @@ +--- +title: platform +id: platform +sidebar_label: platform +displayed_sidebar: MQL +description: vSphere platform resource (deprecated) +--- + +# platform + +**Description** + +vSphere platform resource (deprecated) + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------------- | ---- | ------------------------------------------------- | +| vulnerabilityReport | dict | deprecated: use asset.vulnerabilityReport instead | diff --git a/docs/mql/resources/vsphere-pack/vsphere.cluster.md b/docs/mql/resources/vsphere-pack/vsphere.cluster.md new file mode 100644 index 000000000..3d5c774f3 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.cluster.md @@ -0,0 +1,28 @@ +--- +title: vsphere.cluster +id: vsphere.cluster +sidebar_label: vsphere.cluster +displayed_sidebar: MQL +description: vSphere cluster resource +--- + +# vsphere.cluster + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere cluster resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------------- | --------------------------------- | +| moid | string | vSphere managed object ID | +| name | string | vSphere resource name | +| inventoryPath | string | vSphere inventory path | +| properties | dict | Cluster properties | +| hosts | [][vsphere.host](vsphere.host.md) | ESXi hosts running in the cluster | diff --git a/docs/mql/resources/vsphere-pack/vsphere.datacenter.md b/docs/mql/resources/vsphere-pack/vsphere.datacenter.md new file mode 100644 index 000000000..7211f3031 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.datacenter.md @@ -0,0 +1,29 @@ +--- +title: vsphere.datacenter +id: vsphere.datacenter +sidebar_label: vsphere.datacenter +displayed_sidebar: MQL +description: vSphere datacenter inventory +--- + +# vsphere.datacenter + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere datacenter inventory + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ------------- | ----------------------------------------------- | -------------------------- | +| moid | string | vSphere managed object ID | +| name | string | vSphere datacenter name | +| inventoryPath | string | vSphere inventory path | +| hosts | [][vsphere.host](vsphere.host.md) | Hosts in the datacenter | +| vms | [][vsphere.vm](vsphere.vm.md) | VMs in the datacenter | +| clusters | [][vsphere.cluster](vsphere.cluster.md) | Clusters in the datacenter | diff --git a/docs/mql/resources/vsphere-pack/vsphere.host.md b/docs/mql/resources/vsphere-pack/vsphere.host.md new file mode 100644 index 000000000..171340214 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.host.md @@ -0,0 +1,67 @@ +--- +title: vsphere.host +id: vsphere.host +sidebar_label: vsphere.host +displayed_sidebar: MQL +description: vSphere ESXi host resource +--- + +# vsphere.host + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere ESXi host resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------------- | ----------------------------------------------------------------- | ---------------------------------------------------------- | +| moid | string | vSphere managed object ID | +| name | string | vSphere resource name | +| inventoryPath | string | vSphere inventory path | +| properties | dict | ESXi properties | +| standardSwitch | [][vsphere.vswitch.standard](vsphere.vswitch.standard.md) | Standard virtual switches | +| distributedSwitch | [][vsphere.vswitch.dvs](vsphere.vswitch.dvs.md) | Distributed virtual switches | +| adapters | [][vsphere.vmnic](vsphere.vmnic.md) | Physical NICs currently installed and loaded on the system | +| vmknics | [][vsphere.vmknic](vsphere.vmknic.md) | Virtual network interface that is used by the VMKernel | +| packages | [][esxi.vib](esxi.vib.md) | All VIBs installed on your ESXi host | +| acceptanceLevel | string | Host-level VIB acceptance level | +| kernelModules | [][esxi.kernelmodule](esxi.kernelmodule.md) | Kernel modules (drivers) on ESXi | +| advancedSettings | map[string]string | ESXi host advanced settings | +| services | [][esxi.service](esxi.service.md) | List of ESXi management services | +| timezone | [esxi.timezone](esxi.timezone.md) | Host timezone settings | +| ntp | [esxi.ntpconfig](esxi.ntpconfig.md) | Host NTP configuration | +| snmp | map[string]string | Host SNMP configuration | + +**Examples** + +Verify the Software AcceptanceLevel for ESXi host + +```coffee +// targeting a single ESXi host +esxi.host { + acceptanceLevel == 'VMwareCertified' || acceptanceLevel == 'VMwareAccepted' || acceptanceLevel == 'PartnerSupported' +} + +// targeting the vSphere API +vsphere.datacenters { + hosts { + acceptanceLevel == 'VMwareCertified' || acceptanceLevel == 'VMwareAccepted' || acceptanceLevel == 'PartnerSupported' + } +} +``` + +Verify that each vib is "VMwareCertified" or "VMwareAccepted" + +```coffee +esxi.host { + packages { + acceptanceLevel == 'VMwareCertified' || acceptanceLevel == 'VMwareAccepted' || acceptanceLevel == 'PartnerSupported' + } +} +``` diff --git a/docs/mql/resources/vsphere-pack/vsphere.license.md b/docs/mql/resources/vsphere-pack/vsphere.license.md new file mode 100644 index 000000000..41fd87eeb --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.license.md @@ -0,0 +1,26 @@ +--- +title: vsphere.license +id: vsphere.license +sidebar_label: vsphere.license +displayed_sidebar: MQL +description: vSphere license information +--- + +# vsphere.license + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere license information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----- | ------ | -------------- | +| name | string | License name | +| total | int | Total licenses | +| used | int | Used licenses | diff --git a/docs/mql/resources/vsphere-pack/vsphere.md b/docs/mql/resources/vsphere-pack/vsphere.md new file mode 100644 index 000000000..b6d8483c1 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.md @@ -0,0 +1,66 @@ +--- +title: vsphere +id: vsphere +sidebar_label: vsphere +displayed_sidebar: MQL +description: VMware vSphere resource +--- + +# vsphere + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +VMware vSphere resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ----------------------------------------------------- | ---------------------------------------------------------------------- | +| about | dict | System information including the name, type, version, and build number | +| licenses | [][vsphere.license](vsphere.license.md) | Configured licenses | +| datacenters | [][vsphere.datacenter](vsphere.datacenter.md) | List of available datacenter | + +**Examples** + +Display Information about the vSphere environment + +```coffee +vsphere.about +``` + +Display ESXi host moid and properties + +```coffee +vsphere.datacenters { hosts { moid properties } } +``` + +Display NTP server for all ESXi hosts + +```coffee +vsphere.datacenters { hosts { ntp.server } } +``` + +Ensure a specific NTP Server is set + +```coffee +vsphere.datacenters { hosts { ntp.server.any(_ == "10.31.21.2") } } +``` + +Ensure specific VmkNics properties for all management VmkNics + +```coffee +vsphere.datacenters { + hosts { + vmknics.where(tags == "Management") { + properties['Enabled'] == true + properties['MTU'] == 1500 + properties['VDSName'] != /(?i)storage/ + } + } +} +``` diff --git a/docs/mql/resources/vsphere-pack/vsphere.vm.md b/docs/mql/resources/vsphere-pack/vsphere.vm.md new file mode 100644 index 000000000..80940eb6b --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.vm.md @@ -0,0 +1,28 @@ +--- +title: vsphere.vm +id: vsphere.vm +sidebar_label: vsphere.vm +displayed_sidebar: MQL +description: vSphere VM resource +--- + +# vsphere.vm + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere VM resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------------- | ----------------- | ----------------------------------- | +| moid | string | vSphere managed object ID | +| name | string | vSphere resource name | +| inventoryPath | string | vSphere inventory path | +| properties | dict | Virtual machine properties | +| advancedSettings | map[string]string | Virtual machine advanced properties | diff --git a/docs/mql/resources/vsphere-pack/vsphere.vmknic.md b/docs/mql/resources/vsphere-pack/vsphere.vmknic.md new file mode 100644 index 000000000..d20dbfb6d --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.vmknic.md @@ -0,0 +1,28 @@ +--- +title: vsphere.vmknic +id: vsphere.vmknic +sidebar_label: vsphere.vmknic +displayed_sidebar: MQL +description: vSphere ESXi virtual network interface resource +--- + +# vsphere.vmknic + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere ESXi virtual network interface resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ---------------- | --------------------- | +| name | string | Interface name | +| properties | dict | Interface properties | +| ipv4 | []dict | IPv4 information | +| ipv6 | []dict | IPv6 information | +| tags | []string | Network interface tag | diff --git a/docs/mql/resources/vsphere-pack/vsphere.vmnic.md b/docs/mql/resources/vsphere-pack/vsphere.vmnic.md new file mode 100644 index 000000000..c927dd890 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.vmnic.md @@ -0,0 +1,27 @@ +--- +title: vsphere.vmnic +id: vsphere.vmnic +sidebar_label: vsphere.vmnic +displayed_sidebar: MQL +description: vSphere ESXi physical network interface resource +--- + +# vsphere.vmnic + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere ESXi physical network interface resource + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | ------ | ----------------------------------------- | +| name | string | NIC name | +| properties | dict | NIC properties | +| details | dict | Generic configuration of a network device | +| pauseParams | dict | NIC pause parameters | diff --git a/docs/mql/resources/vsphere-pack/vsphere.vswitch.dvs.md b/docs/mql/resources/vsphere-pack/vsphere.vswitch.dvs.md new file mode 100644 index 000000000..81e611582 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.vswitch.dvs.md @@ -0,0 +1,26 @@ +--- +title: vsphere.vswitch.dvs +id: vsphere.vswitch.dvs +sidebar_label: vsphere.vswitch.dvs +displayed_sidebar: MQL +description: vSphere distributed virtual switch +--- + +# vsphere.vswitch.dvs + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere distributed virtual switch + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | ------------------------------------------- | ----------------------------------------------------- | +| name | string | Virtual switch name | +| properties | dict | Virtual switch properties | +| uplinks | [][vsphere.vmnic](vsphere.vmnic.md) | List of physical NICs currently configured as uplinks | diff --git a/docs/mql/resources/vsphere-pack/vsphere.vswitch.standard.md b/docs/mql/resources/vsphere-pack/vsphere.vswitch.standard.md new file mode 100644 index 000000000..8173adcb8 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vsphere.vswitch.standard.md @@ -0,0 +1,29 @@ +--- +title: vsphere.vswitch.standard +id: vsphere.vswitch.standard +sidebar_label: vsphere.vswitch.standard +displayed_sidebar: MQL +description: vSphere standard virtual switch +--- + +# vsphere.vswitch.standard + +**Supported platform** + +- vmware-esxi +- vmware-vsphere + +**Description** + +vSphere standard virtual switch + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------------- | ----------------------------------------------------- | +| name | string | Virtual switch name | +| properties | dict | Virtual switch properties | +| failoverPolicy | dict | NIC teaming policy | +| securityPolicy | dict | Security policy | +| shapingPolicy | dict | Shaping policy | +| uplinks | [][vsphere.vmnic](vsphere.vmnic.md) | List of physical NICs currently configured as uplinks | diff --git a/docs/mql/resources/vsphere-pack/vuln.advisory.md b/docs/mql/resources/vsphere-pack/vuln.advisory.md new file mode 100644 index 000000000..c39edc833 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vuln.advisory.md @@ -0,0 +1,24 @@ +--- +title: vuln.advisory +id: vuln.advisory +sidebar_label: vuln.advisory +displayed_sidebar: MQL +description: Advisory information +--- + +# vuln.advisory + +**Description** + +Advisory information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ----------- | --------------------------- | ------------------------------------- | +| id | string | Advisory ID | +| title | string | Title of the advisory | +| description | string | Description of the advisory | +| published | time | Advisory publication date | +| modified | time | Last modification date | +| worstScore | [audit.cvss](audit.cvss.md) | Worst CVSS score of all assigned CVEs | diff --git a/docs/mql/resources/vsphere-pack/vuln.cve.md b/docs/mql/resources/vsphere-pack/vuln.cve.md new file mode 100644 index 000000000..855230229 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vuln.cve.md @@ -0,0 +1,25 @@ +--- +title: vuln.cve +id: vuln.cve +sidebar_label: vuln.cve +displayed_sidebar: MQL +description: CVE information +--- + +# vuln.cve + +**Description** + +CVE information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| ---------- | --------------------------- | ------------------------------------- | +| id | string | CVE ID | +| state | string | CVE state | +| summary | string | Summary description | +| unscored | bool | Whether the CVE has a CVSS score | +| published | time | Publication date | +| modified | time | Last modification date | +| worstScore | [audit.cvss](audit.cvss.md) | Worst CVSS score of all assigned CVEs | diff --git a/docs/mql/resources/vsphere-pack/vuln.package.md b/docs/mql/resources/vsphere-pack/vuln.package.md new file mode 100644 index 000000000..1d147936d --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vuln.package.md @@ -0,0 +1,22 @@ +--- +title: vuln.package +id: vuln.package +sidebar_label: vuln.package +displayed_sidebar: MQL +description: Package information relevant for vulnerability management +--- + +# vuln.package + +**Description** + +Package information relevant for vulnerability management + +**Fields** + +| ID | TYPE | DESCRIPTION | +| --------- | ------ | ---------------------------- | +| name | string | Package name | +| version | string | Package version | +| available | string | Available package version | +| arch | string | Architecture of this package | diff --git a/docs/mql/resources/vsphere-pack/vulnmgmt.md b/docs/mql/resources/vsphere-pack/vulnmgmt.md new file mode 100644 index 000000000..412e1b256 --- /dev/null +++ b/docs/mql/resources/vsphere-pack/vulnmgmt.md @@ -0,0 +1,23 @@ +--- +title: vulnmgmt +id: vulnmgmt +sidebar_label: vulnmgmt +displayed_sidebar: MQL +description: Vulnerability Information +--- + +# vulnmgmt + +**Description** + +Vulnerability Information + +**Fields** + +| ID | TYPE | DESCRIPTION | +| -------------- | ------------------------------------------- | --------------------------------------------------- | +| cves | [][vuln.cve](vuln.cve.md) | List of all CVEs affecting the asset | +| advisories | [][vuln.advisory](vuln.advisory.md) | List of all Advisories affecting the asset | +| packages | [][vuln.package](vuln.package.md) | List of all packages affected by vulnerabilities | +| lastAssessment | time | Last time the vulnerability information was updated | +| stats | [audit.cvss](audit.cvss.md) | Statistics about the vulnerabilities | diff --git a/docs/platform/compliance/customize/_category_.json b/docs/platform/compliance/customize/_category_.json new file mode 100644 index 000000000..27aa2d035 --- /dev/null +++ b/docs/platform/compliance/customize/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Customize Compliance", + "position": 3 +} diff --git a/docs/platform/compliance/customize/_custom-frameworks.mdx b/docs/platform/compliance/customize/_custom-frameworks.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/docs/platform/compliance/customize/exceptions-checks.mdx b/docs/platform/compliance/customize/exceptions-checks.mdx new file mode 100644 index 000000000..b088d3d47 --- /dev/null +++ b/docs/platform/compliance/customize/exceptions-checks.mdx @@ -0,0 +1,115 @@ +--- +title: Snooze or Disable Checks +sidebar_label: Snooze or Disable Checks +sidebar_position: 4 +description: Snooze or disable a check in a framework to customize how Mondoo evaluates your compliance with that framework +image: /img/featured_img/mondoo-feature.jpg +--- + +_Exceptions_ let you customize how Mondoo evaluates your compliance with a framework and communicate the reasons for that customization. They tell Mondoo to exclude certain [checks](/platform/compliance/monitor/frameworks/) when calculating your progress toward full compliance. There are two types of exceptions for checks: + +- _Snooze_ a check to temporarily or indefinitely exclude its results from your overall compliance progress percentage. Snoozing is useful when you intend to comply with a check eventually but don't want it distracting your team right now. + +- _Disable_ a check to instruct Mondoo to exclude it from your compliance score and explain this exclusion to your team. A check remains disabled unless you re-enable it. + +:::info + +When you snooze or disable a check, you snooze or disable it for the entire space. A check exception applies to the policy containing the check and impacts all compliance frameworks that use the check. + +To learn about frameworks, policies, controls, and checks, read [Enable Compliance Frameworks](/platform/compliance/monitor/frameworks/). + +::: + +:::tip + +You can also snooze or disable an entire control in a Framework. To learn more, read [Snooze or Disable Controls](/platform/compliance/customize/exceptions/). + +::: + +## Snooze or disable a check + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to customize. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to customize and scroll down to the list of controls. + + ![Controls in a compliance framework in the Mondoo Console](/img/platform/compliance/controls.png) + +4. Select the control containing the check you want to snooze or disable and then select the **Checks** tab. + +5. Select the box beside the check you want to snooze or disable. + + ![Check in the Mondoo Console](/img/platform/compliance/select-check.png) + +6. Select the **SET EXCEPTION** button. + + ![Mondoo compliance - set an exception](/img/platform/compliance/set-exception-check.png) + +7. Select whether to **Snooze** or **Disable** the checks. + + If you select Snooze, select how long to snooze the check. Select **Indefinitely** to keep the check snoozed unless you un-snooze it. + +8. Write a justification for the exception. + +9. Select the **SAVE EXCEPTION** button. + +## Approve or reject an exception + +Exceptions take effect the moment they're added. However, as an extra tracking step, a team member can approve or reject an exception: + +- Approving an exception allows it to remain. + +- Rejecting an exception removes it and re-enables/unsnoozes the check. + +To approve or reject an exception: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to work in. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, select **Compliance**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to work in and scroll down to the list of controls. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/controls.png) + +4. Select the control containing the check you want to snooze or disable and then select the **Exceptions** tab. + + ![Exception on a check in the Mondoo Console](/img/platform/compliance/checks-with-exception.png) + +5. Find the snoozed or disabled check you want to approve or reject. + + ![Accept or reject a check exception in the Mondoo Console](/img/platform/compliance/accept-reject.png) + +6. Select the **Reject** button to remove the exception, or select the **Approve** button to keep the exception with your approval. + +## Un-snooze or re-enable a check + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to work in. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, select **Compliance**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to work in and scroll down to the list of controls. + +4. Select the control containing the check you want to un-snooze or re-enable and select the **Checks** tab. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/checks-with-exception.png) + +5. Select the snoozed or disabled check you want to un-snooze or re-enable. + + ![Compliance check in the Mondoo Console](/img/platform/compliance/re-enable-check.png) + +6. Select the **REMOVE EXCEPTION AND ENABLE** button and then confirm the action by selecting the **YES, ENABLE THE CHECK** button. + +--- diff --git a/docs/platform/compliance/customize/exceptions.mdx b/docs/platform/compliance/customize/exceptions.mdx new file mode 100644 index 000000000..24d265a98 --- /dev/null +++ b/docs/platform/compliance/customize/exceptions.mdx @@ -0,0 +1,137 @@ +--- +title: Snooze or Disable Controls +sidebar_label: Snooze or Disable Controls +sidebar_position: 3 +description: Snooze or disable a control in a framework to customize how Mondoo evaluates your compliance with that framework +image: /img/featured_img/mondoo-feature.jpg +--- + +_Exceptions_ let you customize how Mondoo evaluates your compliance with a framework and communicate the reasons for that customization. + +Exceptions tell Mondoo to exclude certain [controls](/platform/compliance/monitor/frameworks/) when calculating your progress toward full compliance. There are two types of exceptions for controls: + +- _Snooze_ a control to temporarily or indefinitely exclude its results from your overall compliance progress percentage. Snoozing is useful when you intend to comply with a control eventually but don't want it distracting your team right now. You can write a note justifying the delay to your team and your auditor. + +- _Disable_ a control to instruct Mondoo to exclude it from your compliance score and explain this exclusion to team. A control remains disabled unless you re-enable it. + +:::tip + +To exclude a control entirely from the compliance report to your auditor, [set it out of scope](/platform/compliance/customize/scope/). + +::: + +:::tip + +You can also snooze or disable individual checks within a control. To learn more, read [Snooze or Disable Checks](/platform/compliance/customize/exceptions-checks/). + +::: + +## Snooze or disable a control + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to customize. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to customize and scroll down to the list of controls. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/controls.png) + +4. Select the control you want to snooze or disable. Mondoo displays a page with control details. + + ![Control in the Mondoo Console](/img/platform/compliance/control.png) + +5. In the top-right corner, select the **SET EXCEPTION** button. + + ![Mondoo compliance - set an exception](/img/platform/compliance/set-exception-2.png) + +6. Select whether to **Snooze** or **Disable** the controls. + + If you select Snooze, select how long to snooze the control. Select **Indefinitely** to keep the control snoozed unless you un-snooze it. + +7. Write a justification for the exception. + +8. Select the **SAVE EXCEPTION** button. + +## Snooze or disable multiple controls at once + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to customize. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to customize and scroll down to the list of controls. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/controls.png) + +4. Check the boxes to the left of the controls you want to snooze or disable. + + ![Mondoo compliance - select controls](/img/platform/compliance/select-controls.png) + +5. Select the **SET EXCEPTION** button. + + ![Mondoo compliance - set an exception](/img/platform/compliance/set-exception.png) + +6. Select whether to **Snooze** or **Disable** the controls. + + If you select Snooze, select how long to snooze the control. Select **Indefinitely** to keep the control snoozed unless you un-snooze it. + +7. Write a justification for the exception. + +8. Select the **SAVE EXCEPTION** button. + +## Approve or reject an exception + +Exceptions take effect the moment they're added. However, as an extra tracking step, a team member can approve or reject an exception: + +- Approving an exception allows it to remain. + +- Rejecting an exception removes it and re-enables/unsnoozes the control. + +To approve or reject an exception: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to work in. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, select **Compliance**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to work in and scroll down to the list of controls. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/controls.png) + +4. Select the snoozed or disabled control you want to approve or reject. + + ![Compliance control in the Mondoo Console](/img/platform/compliance/accept-reject.png) + +5. Select the **Reject** button to remove the exception, or select the **Approve** button to keep the exception with your approval. + +## Un-snooze or re-enable a control + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to work in. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, select **Compliance**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to work in and scroll down to the list of controls. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/controls.png) + +4. Select the snoozed or disabled control you want to un-snooze or re-enable. + + ![Compliance control in the Mondoo Console](/img/platform/compliance/control-snoozed.png) + +5. Select **Delete Exception and Enable**. + +--- diff --git a/docs/platform/compliance/customize/overview.mdx b/docs/platform/compliance/customize/overview.mdx new file mode 100644 index 000000000..ad70e1c39 --- /dev/null +++ b/docs/platform/compliance/customize/overview.mdx @@ -0,0 +1,15 @@ +--- +title: Customize Compliance - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Customize how Mondoo assesses your compliance with major frameworks +image: /img/featured_img/mondoo-feature.jpg +--- + +Because every business, organization, and space has unique needs and requirements, Mondoo lets you customize your compliance. + +- Define the [_scope_](/platform/compliance/customize/scope) of your compliance audit: If your auditor doesn't need data about a certain control, you can set the control out of scope. + +- Set an _exception_ to exclude a [control](/platform/compliance/customize/exceptions) or [check](/platform/compliance/customize/exceptions-checks) temporarily or indefinitely from your compliance score and communicate the decision with your team. To focus your team on complying with the highest priority benchmarks, snooze the lower priorities for now. Or if certain requirements in a framework don't make sense for your space, disable them and provide an explanation why. + +--- diff --git a/docs/platform/compliance/customize/scope.mdx b/docs/platform/compliance/customize/scope.mdx new file mode 100644 index 000000000..4adb6b82c --- /dev/null +++ b/docs/platform/compliance/customize/scope.mdx @@ -0,0 +1,61 @@ +--- +title: Define the Scope of Your Compliance Audit +sidebar_label: Define Scope +sidebar_position: 2 +description: Set a control in a framework out of scope if it's not a part of your compliance audit +image: /img/featured_img/mondoo-feature.jpg +--- + +If a certain control in a framework is not part of your compliance audit, you can set it _out of scope_. Mondoo excludes out-of-scope controls when calculating your overall progress toward compliance with the framework and when generating your [compliance report](/platform/compliance/monitor/progress/#generate-a-compliance-report). + +All controls in a framework are in scope by default. You set a control out of scope for a [space](/platform/start/organize/spaces/). In all other spaces, the control remains in scope. + +:::tip + +Setting a control out of scope hides it entirely from your auditor. To exclude a control from your compliance score but include it in the report to your auditor with a justification, [disable or snooze the control](/platform/compliance/customize/exceptions/). + +::: + +## Set a control out of scope + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to customize. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to customize and scroll down to the list of controls. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/controls.png) + +4. Check the box beside the control you want to set out of scope. + + ![Compliance framework in the Mondoo Console with a control selected](/img/platform/compliance/control-selected.png) + +5. Select the **SET OUT OF SCOPE** button. Mondoo removes the control from the scope of your compliance framework for the space. + + ![Compliance framework in the Mondoo Console with a control out of scope](/img/platform/compliance/out-of-scope.png) + +## Set an out-of-scope control back in scope + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space you want to customize. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to customize and scroll down to the list of controls. + + ![Compliance framework in the Mondoo Console with a control out of scope](/img/platform/compliance/out-of-scope.png) + +4. Check the box beside the out-of-scope control you want to set in scope. + + ![Compliance framework in the Mondoo Console with an out-of-scope control selected](/img/platform/compliance/set-in-scope.png) + +5. Select the **SET IN SCOPE** button. Mondoo restores the control to the scope of your compliance framework for the space. + +--- diff --git a/docs/platform/compliance/monitor/_category_.json b/docs/platform/compliance/monitor/_category_.json new file mode 100644 index 000000000..21f34f1a2 --- /dev/null +++ b/docs/platform/compliance/monitor/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Monitor Compliance", + "position": 2 +} diff --git a/docs/platform/compliance/monitor/frameworks.mdx b/docs/platform/compliance/monitor/frameworks.mdx new file mode 100644 index 000000000..68fbcbd1a --- /dev/null +++ b/docs/platform/compliance/monitor/frameworks.mdx @@ -0,0 +1,114 @@ +--- +title: Enable Compliance Frameworks +sidebar_label: Enable Frameworks +sidebar_position: 2 +description: Mondoo continuously assesses your compliance with major frameworks +image: /img/featured_img/mondoo-feature.jpg +--- + +import controlsChecks from "/img/platform/compliance/controls-checks.png"; +import controlsChecksPolicies from "/img/platform/compliance/controls-checks-policies.png"; + +To get started monitoring your infrastructure's compliance, you must choose the _frameworks_ you want to comply with. A framework is a set of published requirements (or guidelines) you want your organization to meet. These requirements are best practices and security measures that help make your systems secure. + +Some frameworks are required for organizations doing business in certain industries and nations or with government agencies. Examples: + +- BIS C5 is mandatory for public cloud services provided to German federal agencies. + +- HIPAA is a required framework for health care organizations in the USA. + +Other frameworks are voluntary but may be important to your customers or partners. Examples: + +- Many American businesses require SOC 2 compliance for all their partners and vendors. + +- PCI DSS is a globally accepted framework for protecting cardholders against misuse of personal information. Compliance with this framework is a worldwide standard. + +Frameworks are documents that describe the practices and guidelines that the publishing organization requires or recommends. For example, the Center for Internet Security (CIS) publishes the framework CIS Critical Security Controls (known as CIS Controls). Here is one example of the many requirements documented this framework: + +_Establish and maintain a secure network architecture. A secure network architecture must address segmentation, least privilege, and availability, at a minimum._ + +If you want your organization to reach CIS Controls compliance, you must meet this requirement. But how do you take a general guideline like this and demonstrate that all of the assets in your immense infrastructure follow the practice? How do you prove that every system complies with it? + +## Compliance frameworks in Mondoo + +Mondoo breaks down and codifies compliance frameworks in order to automate continuous evidence collection and reporting. Mondoo's security team makes this possible by: + +1. Analyzing each written requirement in the compliance framework to determine how the requirement applies to different platforms. + +2. Identifying the practices and settings that different types of assets must follow to meet the requirement. + +3. Codifying these practices into _Mondoo frameworks_, which are used to automatically collect evidence. + +Based on these codified frameworks, Mondoo programmatically collects the data needed to evaluate the compliance of every asset in your infrastructure. + +### Controls and checks + +In Mondoo, each overarching requirement is called a _control_. Some examples of controls are: + +- Establish and maintain a secure network architecture + +- Log sensitive data access + +- Configure trusted DNS servers on enterprise assets + +A Mondoo framework is made up of controls that match the broad guidelines in the published framework document. + +Each control maps to one or more _checks_, the individual practices and settings that assets must follow. Checks tell Mondoo's query engine what evidence to collect about individual assets. + + + +For example, the Center for Internet Security's CIS Controls framework includes this control: "Implement and manage a firewall on end-user devices." Mondoo's security team analyzed the control and identified nearly 200 checks for different types of end-user devices. These are just a few examples: + +- On Ubuntu devices, install Uncomplicated Firewall (UFW) + +- On Ubuntu devices, configure iptables to deny incoming traffic by default + +- On Windows 11 devices, set the Windows Firewall to block incoming connections by default + +- On Windows 12 devices, log when Windows Firewall drops an incoming packet + +- On macOS 12 devices, enable firewall stealth mode + +- On Red Hat 9 devices, employ a single firewall configuration utility + +When you enable a compliance framework, you tell Mondoo to verify all of the checks in all of the controls in that framework. + +## Enable a compliance framework + +By default, for every space in your organization, all frameworks are in _preview_. Preview means that Mondoo collects data for the controls in a framework but doesn't provide an overall score. + +Enable a framework to calculate a score that represents your progress toward 100% compliance with that framework. + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space for which you want to assess compliance progress. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework you want to comply with. + + ![Compliance framework in the Mondoo Console](/img/platform/compliance/preview.png) + +4. To enable the framework, select the large toggle near the top-right corner of the framework page. + +5. Follow the steps in the next section to enable the policies that the framework relies on. + +## Enable policies for a compliance framework + +Frameworks don't contain checks; they contain controls. Each control maps to one or more checks, which exist in Mondoo policies. For Mondoo to perform the many checks required by a framework, you must enable the [policies](/platform/security/posture/pac/) that contain the checks. + + + +The controls in a framework typically map to checks in many different policies. In the CIS Controls example in the previous section, the single control, _Implement and manage a firewall on end-user devices_, maps to checks in different Ubuntu policies, macOS policies, Windows policies, and more. For the CIS Controls framework to accurately assess the compliance of all these different types of devices, each of those policies must be enabled. + +After you enable a framework, Mondoo tells you which policies you must enable in order to measure compliance with that framework. + +![Recommended policies for a framework](/img/platform/compliance/recommended.png) + +To enable a policy, hover over the policy and select the Enable icon. + +![Enable a recommended policy for a framework](/img/platform/compliance/enable-recommended.png) + +--- diff --git a/docs/platform/compliance/monitor/overview.mdx b/docs/platform/compliance/monitor/overview.mdx new file mode 100644 index 000000000..fc9cebf04 --- /dev/null +++ b/docs/platform/compliance/monitor/overview.mdx @@ -0,0 +1,27 @@ +--- +title: Manage Compliance - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Mondoo continuously assesses your compliance with major frameworks +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo continuously evaluates your compliance with major frameworks, including SOC 2 Type II, PCI DSS, HIPAA, and many more. It assesses all of your assets based on the framework's requirements and provides real-time success and failure data. You always know: + +- How close your infrastructure is to 100% compliance + +- Which guidelines within the framework you currently do and don't meet + +- What changes you must make (to which assets) to reach compliance + +Because Mondoo automatically and continuously collects the data required to assess compliance, you don't face extra labor and frustrating surprises at audit time. Evidence of compliance is available to you at all times. + +Mondoo takes compliance framework documentation (the written requirements or guidelines) and translates it into code that evaluates the assets in your infrastructure. It checks whether each asset meets each applicable requirement and reports the results in real time. + +To evaluate your organization's compliance with industry-standard regulatory frameworks, you must: + +- [Enable the frameworks](/platform/compliance/monitor/frameworks/) you need to comply with and the policies they require + +- [Gather evidence](/platform/compliance/monitor/progress/) of compliance or identify the changes required + +--- diff --git a/docs/platform/compliance/monitor/progress.mdx b/docs/platform/compliance/monitor/progress.mdx new file mode 100644 index 000000000..a93e62260 --- /dev/null +++ b/docs/platform/compliance/monitor/progress.mdx @@ -0,0 +1,103 @@ +--- +title: Gather Evidence of Compliance +sidebar_label: Gather Evidence +sidebar_position: 3 +description: Mondoo always shows your level of compliance with major frameworks +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo continuously assesses your compliance. At any time, you can: + +- View up-to-date information on whether your infrastructure complies with your chosen [frameworks](/platform/compliance/monitor/frameworks/) + +- See a space's overall compliance and drill down into the details for different [controls, checks](/platform/compliance/monitor/frameworks/), and assets + +- Generate a report to export or print evidence of (or progress toward) compliance + +## View a space's compliance progress + +Mondoo expresses overall compliance as a percentage. A space is compliant with a framework only when it reaches 100%. Lower percentages show _progress_ toward full compliance. + +View a space's progress toward compliance with all available frameworks on the Compliance page: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space where you want to enable the policies. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + + The Compliance page shows all available frameworks and the space's progress toward compliance with each of them. + +## View evidence of compliance + +From the Compliance Frameworks page, you can select a framework to learn more about the space's compliance with that framework. + +![Compliance in the Mondoo Console](/img/platform/compliance/framework.png) + +**COMPLETION** shows overall progress toward compliance. + +**CONTROL DISTRIBUTION** shows a high-level view of the state of controls in the framework: enabled, snoozed, and disabled. To learn about control states, read [Customize Compliance](/platform/compliance/customize/overview/). + +Using the tabs in the lower portion of the framework page, you can drill down into different details. + +- The **Controls** tab lists all the controls in the framework. You can see your progress on each control and select a control to see details on the checks it maps to. + +- The **Policies** tab lists all the policies that contain the checks this framework maps to. You can enable, snooze, and disable policies. + +- The **Assets** tab shows the compliance progress of all the assets in the space. You can select an asset to view its details. + +- The **Exceptions** tab shows any customization you've created for the framework. To learn more, read [Customize Compliance](/platform/compliance/customize/overview/). + +## Generate a compliance report + +To provide evidence to auditors, you can generate a report on a space's compliance with an entire framework or an individual control. Mondoo creates reports in PDF format. + +![Mondoo compliance report - framework](/img/platform/compliance/report-framework.png) + +![Mondoo compliance report - controls](/img/platform/compliance/report-controls.png) + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space for which you want to generate a compliance report. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Frameworks**. + + ![Compliance in the Mondoo Console](/img/platform/compliance/home.png) + +3. Select the framework for which you want to create a compliance report. + + If you want to create a report on a single control, select the control in the **Controls** table. + +4. To the right of the framework or control title, select the **Generate Report** (download symbol) icon. + + ![Generate a Mondoo compliance report](/img/platform/compliance/report-icon.png) + +5. Enter a name for the report and select the **GENERATE REPORT** button. + + ![Name a Mondoo compliance report](/img/platform/compliance/report-dialog.png) + +6. Select the **VIEW REPORTS** button to go to the Compliance Reports page. It can take some time for Mondoo to generate a PDF with all the requested compliance data. If the new report is still in progress, you can leave and return to the Compliance Reports page later to retrieve it. + + ![Mondoo compliance reports](/img/platform/compliance/reports-page.png) + +## Delete compliance reports + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space for which you want to delete a compliance report. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Compliance**, select **Reports**. + + ![Mondoo compliance reports](/img/platform/compliance/reports-page.png) + +3. Select the trash can icon on the row of the report you want to delete. + +:::tip + +To delete multiple reports at once, check the boxes next to the reports and then select the **DELETE** button. + +::: + +--- diff --git a/docs/platform/compliance/overview.mdx b/docs/platform/compliance/overview.mdx new file mode 100644 index 000000000..60ecd9fa5 --- /dev/null +++ b/docs/platform/compliance/overview.mdx @@ -0,0 +1,19 @@ +--- +title: Continuous Compliance - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Rely on Mondoo to assess and customize your compliance with major frameworks +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo eases your path to compliance with standard frameworks like SOC 2 Type II, PCI DSS, HIPAA, ISO 270001, and many more. It automates the time-consuming labor of evidence collection and continuously monitors your progress toward 100% compliance. + +With Mondoo, you always have a real-time evaluation of your compliance. From a high-level view of overall success to detailed evidence, the information you need is at your fingertips. + +To learn more, read [Manage Compliance](/platform/compliance/monitor/overview/). + +Because every organization is different, Mondoo lets you customize your compliance evaluation. If certain requirements don't apply to you, set exceptions to ignore them. If your team isn't yet ready to meet certain requirements, snooze them while you concentrate on higher priorities. + +To learn more, read [Customize Compliance](/platform/compliance/customize/overview/). + +--- diff --git a/docs/platform/home.md b/docs/platform/home.md new file mode 100644 index 000000000..2302a3c0d --- /dev/null +++ b/docs/platform/home.md @@ -0,0 +1,49 @@ +--- +title: "Mondoo Platform Docs" +hide_title: true +description: Mondoo Platform documentation home +image: /img/featured_img/mondoo-feature.jpg +hide_table_of_contents: true +--- + +![Mondoo Platform Docs](/img/platform/mondoo-logo-plat.png) + +Mondoo's flagship SaaS platform provides full-stack security, compliance, and asset intelligence for your entire cloud and on-premises infrastructure. + +#### Get started + +- [What Is Mondoo?](/platform/start/plat-what-is/) + +- [Create a Mondoo Account](/platform/start/plat-start-acct/) + +- [Plan your Mondoo Organization](/platform/start/organize/overview/) + +#### [Integrate Your Infrastructure with Mondoo](/platform/infra/overview/) + +- [Cloud and Kubernetes](/platform/infra/cloud/overview/) + +- [SaaS](/platform/infra/saas/overview/) + +- [Software Supply Chain](/platform/infra/supply/overview/) + +- [Servers and Endpoints](/platform/infra/opsys/osoverview/) + +### [Secure Your Infrastructure](/platform/security/overview/) + +### [Reach Continuous Compliance](/platform/compliance/overview/) + +### [Gain Asset Intelligence](/platform/intel/overview/) + +### [Manage Mondoo](/platform/maintain/overview/) + +- [Manage Access to Mondoo](/platform/maintain/overview/) + +- [Export Mondoo Data](/platform/maintain/export/overview/) + +- [Create Jira Issues from the Mondoo Console](/platform/maintain/jira/) + +### Help + +Can't find what you need?​ Join our [community Slack channel](https://mondoo.link/slack) to chat with us and other Mondoo users. + +--- diff --git a/docs/platform/infra/cloud/_category_.json b/docs/platform/infra/cloud/_category_.json new file mode 100644 index 000000000..5d332a01c --- /dev/null +++ b/docs/platform/infra/cloud/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Cloud", + "position": 2 +} diff --git a/docs/platform/infra/cloud/aws/_aws-client-service.mdx b/docs/platform/infra/cloud/aws/_aws-client-service.mdx new file mode 100644 index 000000000..28789a822 --- /dev/null +++ b/docs/platform/infra/cloud/aws/_aws-client-service.mdx @@ -0,0 +1,6 @@ +--- +title: AWS Instance Scanning with cnspec +sidebar_label: Scanning with cnspec +sidebar_position: 6 +description: This document covers scanning AWS instances running cnspec running as a service +--- diff --git a/docs/platform/infra/cloud/aws/_aws-incl-ic.mdx b/docs/platform/infra/cloud/aws/_aws-incl-ic.mdx new file mode 100644 index 000000000..e4c936a87 --- /dev/null +++ b/docs/platform/infra/cloud/aws/_aws-incl-ic.mdx @@ -0,0 +1,12 @@ +cnspec lets you remotely scan EC2 instances using EC2 Instance Connect: + +1. Open a terminal. +2. Set the `AWS_REGION` environment variable where the instance is running. +3. Run: `cnspec scan aws ec2 instance-connect USER@HOST` + +| For... | Substitute... | +| ------ | --------------------------------------- | +| USER | Your user name for the AWS account | +| HOST | The instance's public IP address or DNS | + +To learn about configuring EC2 instances with EC2 Instance Connect, read [Connect to your Linux instance using EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) in the AWS documentation. diff --git a/docs/platform/infra/cloud/aws/_category_.json b/docs/platform/infra/cloud/aws/_category_.json new file mode 100644 index 000000000..8021aa3dc --- /dev/null +++ b/docs/platform/infra/cloud/aws/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "AWS", + "position": 2 +} diff --git a/docs/platform/infra/cloud/aws/aws-ebs-snapshot-scan.mdx b/docs/platform/infra/cloud/aws/aws-ebs-snapshot-scan.mdx new file mode 100644 index 000000000..e865e7e4d --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-ebs-snapshot-scan.mdx @@ -0,0 +1,119 @@ +--- +title: Scan an EBS Snapshot +sidebar_label: Scan an EBS Snapshot +sidebar_position: 9 +description: This document covers the configuration and use of the Mondoo AWS Integration to scan AWS accounts and EC2 Instances +--- + +Mondoo can scan your EBS volume snapshots to evaluate the security and compliance of Linux-based EC2 instances. It doesn't require an agent or any connection to the instance that could impact your business applications. + +Snapshot scanning with Mondoo relies on [cnspec](/cnspec/cnspec-about/), Mondoo's CLI security tool. + +## Scan EBS volumes + +### Create a VM for EBS volume scanning + +1. Spin up a small EC2 instance (for example an Amazon Linux instance with the type `t2.micro`) where you'll attach the EBS snapshot. + +![](/img/platform/infra/cloud/aws/aws-ec2-instance-for-ebs-volume-scan.png) + +2. [Install cnspec on the new instance](/cnspec/) and [register it in the Mondoo Console](/cnspec/cnspec-platform/). + +### Create an IAM policy for EBS volume scanning + +1. Log into the AWS console. +2. Navigate to **IAM**. +3. In the side navigation, select **Policies**. +4. Select the **Create policy** button. +5. Under **Specify permissions** select **JSON**, add the following block and select "Next": + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "ec2:AttachVolume", + "ec2:DetachVolume", + "ec2:DeleteVolume", + "ec2:DeleteSnapshot" + ], + "Resource": "*", + "Effect": "Allow" + }, + { + "Action": [ + "ec2:CreateSnapshot", + "ec2:CreateVolume", + "ec2:CopySnapshot", + "ec2:CreateTags", + "ec2:DescribeInstances", + "ec2:DescribeVolumes", + "ec2:DescribeSnapshots", + "kms:Decrypt", + "kms:ReEncryptTo", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:DescribeKey", + "kms:ReEncryptFrom" + ], + "Resource": "*", + "Effect": "Allow" + }, + { + "Condition": { + "Bool": { + "kms:GrantIsForAWSResource": "true" + } + }, + "Action": "kms:CreateGrant", + "Resource": "*", + "Effect": "Allow" + } + ] +} +``` + +6. Under **Policy details** -> **Policy name** give the policy a name such as **ebs-scanning-mondoo**, assign tags and a description to the role (if you want), and then select **Create policy**. + +![](/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-policy.png) + +### Create an IAM role for EBS volume scanning + +1. Log into the AWS console. +2. Navigate to **IAM**. +3. Select **Roles**. +4. Select **Create Role**. +5. For the **Trust entity type**, select **AWS service** and for the **Use case**, select **EC2**, the select the "Next" button. +6. Search for **ebs** in the **Filter policies** box, select the policy you just created **ebs-scanning-mondoo**, and then select the "Next" button. +7. Under **Role details** in the field "Role name" give the role a name **ebs**, assign tags and a description to the role (if you want), and then select **Create role**. + +![](/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-role.png) + +### Attach the new IAM role (`ebs`) to your new EC2 instance. + +Your new role is ready for use and can be attached to existing EC2 instances, or to new EC2 instances as an [instance profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) when launching new instances. + +![](/img/platform/infra/cloud/aws/aws-attach-ebs-iam-role.png) + +### Using your new EC2 instance for scanning + +1. Log into your new EC2 instance. + +2. Scan a snapshot from your new instance: + +```bash +cnspec scan aws ec2 ebs snapshot SNAPSHOT_ID +``` + +For SNAPSHOT_ID, substitute the ID of the snapshot, for example `snap-123456b123a123da2` . + +## Learn more + +| To learn about... | Read... | +| --------------------------- | -------------------------------------------------------------------------- | +| Scanning with AWS SSM | [Scan Using AWS Systems Manager](/platform/infra/cloud/aws/aws-ssm-scan/) | +| Scanning from a workstation | [Scan from a Workstation](/platform/infra/cloud/aws/aws-workstation-scan/) | +| Continuous AWS scanning | [Continuously Scan AWS](/platform/infra/cloud/aws/aws-integration-scan/) | +| cnspec | [The cnspec documentation](/cnspec/cnspec-about/) | + +--- diff --git a/docs/platform/infra/cloud/aws/aws-ec2-ic-scan.mdx b/docs/platform/infra/cloud/aws/aws-ec2-ic-scan.mdx new file mode 100644 index 000000000..044437e61 --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-ec2-ic-scan.mdx @@ -0,0 +1,23 @@ +--- +title: Scan Using EC2 Instance Connect +sidebar_label: Scan Using EC2 Instance Connect +sidebar_position: 8 +image: /img/featured_img/mondoo-aws.jpg +description: This document covers the configuration and use of EC2 Instance Connect to scan EC2 instances. +--- + +import Partial from "./_aws-incl-ic.mdx"; + +{" "} + +## Learn more + +| To learn about... | Read... | +| --------------------------- | -------------------------------------------------------------------------- | +| Scanning with AWS SSM | [Scan Using AWS Systems Manager](/platform/infra/cloud/aws/aws-ssm-scan/) | +| Scanning from a workstation | [Scan from a Workstation](/platform/infra/cloud/aws/aws-workstation-scan/) | +| Snapshot scanning | [Scan an EBS Snapshot](/platform/infra/cloud/aws/aws-ebs-snapshot-scan/) | +| Continuous AWS scanning | [Continuously Scan AWS](/platform/infra/cloud/aws/aws-integration-scan/) | +| cnspec | [The cnspec documentation](/cnspec/cnspec-about/) | + +--- diff --git a/docs/platform/infra/cloud/aws/aws-integration-faq.mdx b/docs/platform/infra/cloud/aws/aws-integration-faq.mdx new file mode 100644 index 000000000..b31f10a96 --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-integration-faq.mdx @@ -0,0 +1,147 @@ +--- +title: AWS Integration FAQ +sidebar_label: Integration FAQ +image: /img/featured_img/mondoo-aws.jpg +description: This document covers how the Mondoo AWS integration works. It includes permissions and billing details. +sidebar_position: 3 +--- + +## How does the Mondoo AWS integration work? + +Mondoo Platform never has credentials to your AWS account. + +We install a Lambda function in your AWS account via the CloudFormation template, and communicate with that Lambda function over AWS EventBridge. The Lambda function communicates with Mondoo using service credentials stored in the SSM Parameter Store. + +## Why does the Mondoo integration need to create resources in my AWS account? + +The resources created in your AWS account are used to run and schedule configuration and EC2 instance scans. Those resources are low-cost, limited to a Lambda function, SNS topic, SQS Queues, some IAM roles, EventBridge rules, and SSM parameters. If using the EBS volume scanning feature, an Autoscaling Group and launch template will also be created. + +## How does the integration communicate from my AWS account to Mondoo Platform? + +On CloudFormation stack creation, a short-lived token is exchanged for Mondoo credentials. Those credentials are stored in the SSM Parameter store and used by the Lambda function and SSM instances in the AWS account to communicate with Mondoo Platform over HTTPS. + +## Choose to integrate an organization or an account + +If you've set up your AWS organization according to [AWS standard practices](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html), create an organization integration for ease of use. + +Before deploying, check the configuration of your AWS organization as described in [Requirements for deploying the Mondoo StackSet at the organization level](/platform/infra/cloud/aws/aws-integration-troubleshooting#requirements-for-deploying-the-mondoo-stackset-at-the-organization-level). + +## What information will leave my AWS Account? + +Scan report results only. + +## What information will Mondoo Platform store about my AWS resources? + +Mondoo Platform stores the latest report for all scanned assets in the AWS account (the reports viewable under **Inventory**) as well as the total counts of various resources in the AWS account, displayed on the Integration detail page. + +## Is the communication channel between Mondoo Platform and my AWS account secure? + +Yes, Mondoo communicates with your AWS account using [AWS EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html). The Eventbus policy and rule are created as part of the CloudFormation stack. + +## What permissions will the resources created by Mondoo request? + +There are three IAM roles created during the CloudFormation install: + +- MondooLambdaRole + Lambda function role enable AWS account scanning, includes: + + - managed policy: arn:aws:iam::aws:policy/ReadOnlyAccess + - managed policy: arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole + - managed policy: arn:aws:iam::aws:policy/AmazonEC2FullAccess + - limited to resources tagged with `Created By: Mondoo`: + - events:PutRule, + events:DeleteRule, + events:TagResource, + iam:CreateRole, + iam:CreateServiceLinkedRole, + iam:PutRolePolicy, + iam:AttachRolePolicy,iam:DetachRolePolicy,iam:DeleteRolePolicy,iam:TagRole + - unrestricted: cloudformation:UpdateStack,events:PutTargets, events:RemoveTargets,iam:PassRole,secretsmanager:GetSecretValue,ssm:GetParameter + - limited to RunShellScript and RunPowershellScript documents: ssm:SendCommand + - limited to Mondoo-\* SSM parameters: ssm:PutParameter,ssm:DeleteParameter,ssm:AddTagsToResource + - limited to Mondoo-created SQS queue:sqs:SendMessage,sqs:DeleteMessage,sqs:SetQueueAttributes + - limited to Mondoo-created SNS topic:sns:SetTopicAttributes,sns:TagResource + - limited to Mondoo Lambda function: lambda:UpdateFunctionConfiguration,lambda:GetFunctionConfiguration,lambda:AddPermission,lambda:UpdateFunctionCode,lambda:InvokeFunction + +- MondooEventBusRole + Eventbus role to allow Mondoo AWS account to send messages to your AWS account, includes: + + - events:PutEvents on the default event bus + - sts:AssumeRole on events.amazonaws.com + +- EBSVolumeScanningInstancePolicy + Role to be used by the scanner instances in the autoscaling group if EBS volume scanning is active, includes: + - limited to resources tagged with `Created By: Mondoo`: ec2:AttachVolume,ec2:DetachVolume,ec2:DeleteVolume,ec2:DeleteSnapshot + - unrestricted: ec2:CreateSnapshot,ec2:CreateVolume,ec2:CopySnapshot,ec2:CreateTags,ec2:DescribeInstances,ec2:DescribeVolumes,ec2:DescribeSnapshots,kms:Decrypt,kms:ReEncryptTo,kms:GenerateDataKeyWithoutPlaintext,kms:DescribeKey,kms:ReEncryptFrom + +## What specific resources will the Mondoo integration create in my AWS account? + +During install (CloudFormation): + +The Mondoo AWS CloudFormation stack creates these resources: + +- Lambda function +- SNS topic/subscription (tells Mondoo about CloudFormation stack status) +- EventBridge rule (lets Mondoo AWS talk to your AWS) +- IAM roles/policies (for the Lambda function, the ASG instances, and the EventBridge bus) +- SQS queue (for queueing scan jobs) + +All resources are tagged with: + +``` +Created By: Mondoo +Mondoo Integration Mrn: +``` + +Created by the Lambda function: + +- SSM parameters (to store the env configuration and credentials to communicate with Mondoo Platform) +- EventBridge rules (to track aws events and set up cron events) +- Launch configuration template & autoscaling group (only if using ebs volume scanning) + +## How do I update to the latest Lambda version? + +The Lambda function updates itself every 24 hours. It updates the AWS CloudFormation stack and the Lambda function code to the latest available from the Mondoo S3 bucket. + +There is a safeguard in place to ensure that the Lambda function only updates itself to the expected build: When new versions of the Lambda function and CloudFormation JSON files are uploaded to S3 during the release process, the SHA-256 of those files is recorded and stored in a place accessible to the Mondoo server. + +Every time the Lambda function updates, it first reads the SHA-256 of each file in the target S3 bucket and compares that to the expected (stored) hash. If the SHA-256 doesn't match, the Lambda doesn't update. Mondoo support receives an alert when this occurs. + +## What happens if I delete the CloudFormation stack? + +When the CloudFormation stack is deleted, the lambda function receives a notification and immediately deletes all AWS resources created by Mondoo. Mondoo Platform UI will display the integration as deleted. No data will be lost in Mondoo Platform. A CloudFormation stack can be deleted and recreated multiple times. + +## How much will operating the Mondoo AWS Integration cost? + +Most of the costs associated with the Mondoo AWS Integration fall into the free tier category. Over the course of a month, an example AWS Integration incurred this resource usage: + +- CloudWatch PutLogs: 1GB (First 5GB per month of log data ingested is free) +- CloudWatch TimedStorage: 0.16GB (First 5GB-mo per month of logs storage is free) +- CloudWatch Events: 8,000 64k chunk events ($1.00 per million EventBridge custom events received) +- Lambda-GB-Seconds: 76,000 seconds (Compute Free Tier - 400,000 GB-Seconds) +- Lambda Request: 11,000 requests (Requests Free Tier - 1,000,000 Requests) +- SNS HTTP: 2,000 notifications (First 100,000 Amazon SNS HTTP/HTTPS Notifications per month are free) +- SNS requests: 3,000 requests (First 1,000,000 Amazon SNS API Requests per month are free) +- SQS requests: 626,000 requests (First 1,000,000 Amazon SQS Requests per month are free) +- Simple Storage Service--Tier1: 257 requests ($0.00 per request - PUT, COPY, POST, or LIST requests under the monthly global free tier) +- Simple Storage Service--Tier2: 41 requests ($0.00 per request - GET and all other requests under the monthly global free tier) + +## What do you about rate limiting? + +We spread out scan jobs to prevent too many calls to the EC2 and SSM apis. If the Lambda function encounters a rate limiting error, it automatically pauses all scan jobs for 15 minutes. + +## Can I see what runs? + +The AWS CloudFormation JSON and Lambda zip are available as part of the Mondoo S3 bucket: + +- [Mondoo StackSet CloudFormation](https://s3.amazonaws.com/mondoo-dev.us-east-1/mondoo-lambda-stackset-cf.json) (applies only to AWS Organization-level installations) +- [Mondoo Stack CloudFormation](https://s3.amazonaws.com/mondoo.us-east-1/mondoo-root-cf.json) (applies only to single-account installations) +- [Nested Stack CloudFormation](https://s3.amazonaws.com/mondoo.us-east-1/mondoo-lambda-cf.json) (applies only to single-account installations) +- [Lambda Zip](https://s3.amazonaws.com/mondoo-dev.us-east-1/mondoo-lambda.zip) + +## Learn more + +- [AWS Integration Troubleshooting](/docs/platform/infra/cloud/aws/aws-integration-troubleshooting) +- [Scan Continuously with an AWS Integration](/docs/platform/infra/cloud/aws/aws-integration-scan) + +--- diff --git a/docs/platform/infra/cloud/aws/aws-integration-scan.mdx b/docs/platform/infra/cloud/aws/aws-integration-scan.mdx new file mode 100644 index 000000000..2f65f6cc3 --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-integration-scan.mdx @@ -0,0 +1,199 @@ +--- +title: Continuously Scan with an AWS Integration +sidebar_label: Scan Continuously +sidebar_position: 2 +description: This document covers the configuration and use of the Mondoo AWS Integration to scan AWS accounts and EC2 instances +--- + +The Mondoo AWS integration enables continuous cron-scheduled and [event-based](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html) scanning of your AWS account and EC2 instances. + +To learn about how an integration runs and its required permissions, read [AWS Integration FAQ](/platform/infra/cloud/aws/aws-integration-faq/). + +## Integrate with an entire organization or single account + +The Mondoo AWS integration supports scanning multiple AWS accounts. To do this, you install Mondoo across an AWS Organization using CloudFormation StackSets. All scan configuration options you choose apply to every AWS account in the AWS Organization. + +If you choose to integrate an entire Organization, be sure your AWS organization meets the requirements described in [AWS Integration Troubleshooting](/platform/infra/cloud/aws/aws-integration-troubleshooting/#requirements-for-deploying-the-mondoo-stackset-at-the-organization-level). + +You can also opt to scan a single AWS account only. Single account integrations rely on CloudFormation stacks. + +:::info +When you deploy an integration with Mondoo using a StackSet on the organizational level, the StackSet only creates an integration of the [target accounts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stacksets-concepts-accts). + +The [administrator account](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stacksets-concepts-accts) in which the StackSet for the target accounts resides needs its own separate [single account integration](/platform/infra/cloud/aws/aws-integration-scan/#integrate-with-an-entire-organization-or-single-account). + +This is intentional and reflects the [architectural concepts of AWS StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html). +::: + +## Set up a new AWS integration + +1. Access the Integrations > Add > AWS page in one of two ways: + + - **New space setup**: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Amazon AWS**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - **INTEGRATIONS page**: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Near the top of the page, select **Amazon AWS**. + + ![integration-create-image](/img/platform/infra/cloud/aws/add-aws-top.png) + +2. Select the type of integration: + + | Option | Description | + | -------------------------- | ------------------------------------------------- | + | **Organization install** | Integrate Mondoo with an entire AWS Organization. | + | **Single account install** | Integrate Mondoo with a single AWS account. | + +:::caution + +Before creating a Mondoo deployment on an AWS organization, make sure to check if the configuration of your AWS organization meets the [requirements](/platform/infra/cloud/aws/aws-integration-troubleshooting/#requirements-for-deploying-the-mondoo-stackset-at-the-organization-level). + +::: + +3. Identify the account or Organization and the region: + + | If you're integrating with... | Then... | + | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | + | An entire AWS Organization | In the **AWS Organization(s)** box, enter any name for the integration. Select the region in which you want to deploy the integration. | + | A single AWS account | In the **AWS account** box, enter your AWS account ID. Select the region in which you want to deploy the integration. | + +4. Set the account options: + + | Option | Description | + | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | **Schedule full scan** | Set the interval (in hours) at which to execute a full scan of the AWS account, independent of change [events](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html). The default is 12 hours. | + | **Trigger on AWS console sign-in event** | Trigger an account scan whenever a user logs into the AWS console. | + +5. Set the EC2 options: + + ![integration-create-image](/img/platform/infra/cloud/aws/add-aws-ec2.png) + + | Option | Description | + | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | + | **Discover EC2 instances** | Include EC2 instances in asset discovery. By default, this applies across all regions. | + | **Trigger on instance state change [events](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html)** | Trigger a scan of all EC2 instances whenever an instance changes state. | + | [**Use SSM for instance connectivity**](/docs/platform/infra/cloud/aws/aws-ssm-scan) | Use the AWS SSM service to trigger scans for EC2 instances (when it's available). | + | **Use EC2 Instance Connect for instance connectivity** | If an EC2 instance has a public IP, connect using EC2 Instance Connect. | + | **Use EBS volume scanning for instance connectivity** | Use _EBS volume scanning_ to scan the filesystems of instances that Mondoo otherwise can't reach. This includes stopped instances. | + +6. If you enable EBS volume scanning, you can customize these options: + + | Option | Description | + | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **EBS targets per scanner** | Customize the number of targets a single scanner instance is responsible for scanning. Setting a low number (such as 5) results in faster scans, but requires AWS to create more scanner instances. Setting a high number (such as 50) reduces the number of scanner instances, but results in slower scans. The default is 20. | + | **Max ASG instances** | Set your own limit for how many instances AWS can spin up in the AutoScalingGroup to perform the filesystem scans. The default is 50. | + +7. To scan EC2 instances using SSH, enable **Use SSH for instance connectivity**. You must use the vault secret query if you use SSH. Provide this information: + + | Option | Description | + | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | **Vault type** | Specify whether to read the secret from AWS Secrets Manager or AWS SSM Parameter store. | + | **Vault secret query** | Provide the query to match vault credentials to instances. To learn how to write the query, read [Secrets Management](/platform/infra/opsys/automation/vault.md). | + +8. If desired, limit the EC2 instances that Mondoo scans: + + | Option | Description | Example | + | -------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------- | + | **Filter by instance IDs** | Limit instance scanning to a subset of IDs, separated by commas. | `i-0d1f840578ca82600,i-07ae83fe5d22600a` | + | **Filter by regions** | Limit instance scanning to a subset of regions, separating values with commas. | `us-east-1,us-east-2` | + | **Filter by tags** | To Limit instance scanning to a subset of tags, separated with commas. | `Name:testname, env:test` | + +9. Set ECS, S3, and ECR options: + + ![integration-create-image](/img/platform/infra/cloud/aws/add-aws-bottom.png) + + | Option | Description | + | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | + | **Discover and scan ECS containers** | Use Amazon ECS Exec to scan Fargate containers. | + | **Trigger on S3 bucket [events](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html)** | Trigger a scan whenever a change is made to an S3 bucket. | + | **Discover and scan ECR images** | Include ECR images in asset discovery and scan them when found. | + +10. Select the **CREATE** button. + +11. Follow the instructions to launch the AWS CloudFormation stack (for an account) or StackSet (for an Organization). + +:::caution IMPORTANT + +Selecting **Create** does not finalize the integration between Mondoo and AWS. You must launch the AWS CloudFormation stack or StackSet to complete the setup. + +::: + +## Manage an AWS integration + +You can view the status of an AWS integration, change its configuration options, and more on its integration page. + +To access an existing integration: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate) to the space containing the integration. + +2. In the side navigation bar, under **Integrations**, select **AWS**. + + ![integration-list-image](/img/platform/infra/cloud/aws/list.png) + +3. Select the integration you want to view or manage. + + ![integration-detail-image](/img/platform/infra/cloud/aws/integration-overview.png) + +### View an integration's status + +Mondoo shows the status at the top of the integration page, beside the integration name. + +![Mondoo AWS integration status and actions](/img/platform/infra/cloud/aws/integration-scan-now.png) + +Theses are the possible statuses for an AWS integration: + +| Status | Meaning | +| --------------- | ---------------------------------------------------------------------------------------------------------------- | +| **configuring** | Mondoo is sending the scan configuration options to the integration and the integration is saving those options. | +| **active** | The integration is active and healthy. | +| **error** | Mondoo detected an error during installation. | +| **missing** | Mondoo hasn't received a check-in from the Lambda function for over an hour. | +| **deleted** | CloudFormation for the integration has been deleted. | + +### Ping an integration + +At the top of the integration page, below the integration name, Mondoo shows the time of the last ping. + +To ping the integration now, select the ping icon (a heartbeat to the left of the **SCAN NOW** button). + +### Request a fresh scan + +To see fresh scan results, select the **SCAN NOW** button. Mondoo retrieves new scan results as soon as possible. + +### Retry a failed integration setup + +If an error occurred during setup and the CloudFormation stack is now up and running but the integration is unhealthy, you can try to return it to a healthy state: Select the ellipsis to the right of the integration name and select **Retry Setup**. + +### Enable and disable policies for an AWS integration + +The **RECOMMENDED POLICIES** tab on the integration page lists policies that can help you protect your AWS environment. It shows which policies are enabled and disabled. + +![Policies for a Mondoo AWS integration](/img/platform/infra/cloud/aws/integration-policies.png) + +Use the toggle on the right side of each policy's row to enable or disable the policy. + +To learn more about policies, read [Policy as Code](/platform/security/posture/pac/). + +### Reconfigure an AWS integration + +The **CONFIGURATION** tab on the integration page shows the current settings and lets you make changes. + +![Reconfigure a Mondoo AWS integration](/img/platform/infra/cloud/aws/integration-config.png) + +To learn about individual settings, read the sections under the _Set up a new AWS integration_ section above. + +### Remove an integration + +To remove an integration, select the Remove (trash can) icon at the top of the integration page. + +![Remove an AWS Mondoo integration](/img/platform/infra/cloud/aws/integration-scan-now.png) + +A notification displays with a link to the CloudFormation Stacks list in the AWS console. Select the link and, in the AWS console, delete the stack. This removes the configured integration from Mondoo Platform and deletes the rule allowing the Mondoo AWS account to send events to the target account. + +## Learn more + +- [AWS Integration FAQ](/docs/platform/infra/cloud/aws/aws-integration-faq) + +- [AWS Integration Troubleshooting](/docs/platform/infra/cloud/aws/aws-integration-troubleshooting) + +--- diff --git a/docs/platform/infra/cloud/aws/aws-integration-troubleshooting.mdx b/docs/platform/infra/cloud/aws/aws-integration-troubleshooting.mdx new file mode 100644 index 000000000..cd0e94cb5 --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-integration-troubleshooting.mdx @@ -0,0 +1,175 @@ +--- +title: Mondoo AWS Integration Troubleshooting +sidebar_label: Integration Troubleshooting +sidebar_position: 4 +image: /img/featured_img/mondoo-aws.jpg +description: This document covers how to debug and troubleshoot problems that may come up with the AWS Integration. +--- + +Troubleshoot problems that may come up deploying, running, and updating the Mondoo AWS Integration. + +## CloudFormation + +### Create failure - single account + +If CloudFormation fails to complete a single stack for any reason, Mondoo reports that failure. + +To fix the problem: + +1. Check the AWS CloudFormation console for detailed information about the error. + +2. Resolve the error as instructed. + +3. Visit the Configuration tab of the integration detail view to re-launch the stack. + +### Create failure - StackSets org install + +If AWS performs an org install and fails to complete a StackSet for any reason, you see an incomplete list of AWS accounts. + +To fix the problem and force an update: + +1. Check the AWS CloudFormation console for detailed information about the error. + +2. Resolve the error as instructed. + +3. Open the StackSet in the AWS CloudFormation console. + +4. In the top-right corner of the console, select the Actions menu and select Edit StackSet details. + +5. Step through the wizard without actually changing any information. Some fields require you to re-enter values. + +6. At the end of the wizard, select the Submit button to update the StackSet. + +7. Select the Operations tab and select the Refresh icon to see the update progress. + +### Requirements for deploying the Mondoo StackSet at the organization level + +For an AWS Organization to successfully integrate Mondoo, it must be configured [following AWS core principles](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html). + +A common misconfiguration seen in AWS Organizations that interferes with successful Mondoo integration is the lack of [organizational units (OUs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html#tutorial-orgs-step2). + +To ensure your Organizations are configured as needed, go to the [AWS Organizations console](https://console.aws.amazon.com/organizations/v2) and check your structure: + +- The top level entity of the Organization is 'root', assigned an ID that uses this format: `r-ab12` + +- The 'root' spans a tree of one or more OUs with IDs that use this format: `ou-ab12-1234abcd` + +If the entities below your `root` node have IDs in the format `o-abcd5678`, this interferes with an Organization-level Mondoo integration. You can still deploy the Mondoo integration; just integrate with [single accounts](/platform/infra/cloud/aws/aws-integration-scan/#integrate-with-an-entire-organization-or-single-account). + +You can't integrate an improperly configured AWS Organization with Mondoo. The integration fails. + +The failed integration attempt creates artifacts (StackSets and roles) in the accounts below root that you must remove manually. Trying to delete those faulty StackSets in the AWS console can return an error like this: + +``` +An error occurred (ValidationError) when calling the DeleteStackInstances operation: +StackSets with SERVICE_MANAGED permission model can only have OrganizationalUnit as target +``` + +You must remove these StackSet instances manually from an account using the AWS CLI. + +### Remove a faulty StackSet from the Organization root using the AWS CLI + +To remove a faulty StackSet with the AWS CLI , use the `aws cloudformation delete-stack-instances` [command](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/delete-stack-instances.html). + +:::danger WARNING +Read the [full documentation on this command in the AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/delete-stack-instances.html) before you run it in your infrastructure. + +- **STACK-SET-NAME-USUALLY-MONDOO**: The name of your StackSet. By default, this is `Mondoo`. + +- **ROOT-OU-ID**: The ID of your Organization root, such as `r-85mw`. + +- **REGION**: The Organization's region, such as `us-central1`. + +```bash +aws cloudformation delete-stack-instances \ +--stack-set-name STACK-SET-NAME-USUALLY-MONDOO \ +--deployment-targets OrganizationUnitIds=ROOT-OU-ID \ +--regions REGION \ +--no-retain-stacks +``` + +::: + +### Manually remove roles from an AWS account + +If you manually remove a Mondoo integration from an AWS account, you must remove all of these roles: + +```bash +- ebs-volume-scan-instance +- ecs +- ecsInstanceRole +- ecsTaskExecutionRole +- MondooEventBusRole +- MondooLambdaRole +``` + +:::info + +Depending on how you configured your deployment, not all of the roles above may be present. + +::: + +### Updates + +The CloudFormation stack and Lambda function update themselves to the latest available every 8 hours. These updates are independent of each other, meaning that if the CloudFormation stack fails to update, the Lambda code will still be updated. + +On occasion, one of these CloudFormation updates may result in an `Update Failed` state on the stack. Sometimes this is a chicken/egg issue that will resolve on the next auto-update. In some cases, a stack will remain in `Update Failed` state until a user manually updates the stack to give it the required extra permissions. + +## VPC + +### Lambda VPC access + +The [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html#permissions-executionrole-features) is already attached to the Mondoo Lambda Role in order to discover assets, and run policies against those assets. + +Should your Lambda function require VPC access to be able to scan instances, please refer to AWS documentation on [Configuring a Lambda function to access resources in a VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-configuring) to grant the Lambda function access to the appropriate VPC. + +Security groups for all AWS SSM managed instances must include an egress rule to allow outbound traffic on port 443 (HTTPS) to [Mondoo Platform](https://console.mondoo.com) at IP address `34.98.71.94` to send results back to your account. + +## Logging + +All lambda logs are stored in CloudWatch Logs, under a log group calls `/aws/lambda/MondooLambda` in the region where the CloudFormation was installed. + +To search the logs in the log group, select it and choose "Search Log Group" from the upper right corner of the console. ![AWS CloudWatch Log Group Details Console](/img/platform/infra/cloud/aws/lambda-loggroup.png) +You can search for specific log messages or view a specific time frame of activity in one pane from this view. + +### Debug logging + +To enable debug logging, add the debug environment variable to the MondooLambda function: `DEBUG=1` by visiting the AWS Mondoo Lambda Console Configuration tab. ![Lambda Console](/img/platform/infra/cloud/aws/lambda-envvars.png) + +## 403 errors and Terraform + +A known restriction of the HashiCorp Terraform `aws_iam_policy_attachment` resource can result in 403 errors. According to [HashiCorp](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy_attachment): + +The `aws_iam_policy_attachment` resource creates exclusive attachments of IAM policies. Across the entire AWS account, all of the users/roles/groups to which a single policy is attached must be declared by a single `aws_iam_policy_attachment` resource. This means that even any users/roles/groups that have the attached policy via any other mechanism (including other Terraform resources) will have that attached policy revoked by this resource. Consider `aws_iam_role_policy_attachment`, `aws_iam_user_policy_attachment`, or `aws_iam_group_policy_attachment` instead. These resources do not enforce exclusive attachment of an IAM policy. + +If you use the `iam_policy_attachment` resource: Attaching a managed policy that Mondoo uses to a role you manage with Terraform detaches the policy from Mondoo's role. As recommended by HashiCorp, use a different resource to prevent this issue: + +- `aws_iam_role_policy_attachment` +- `aws_iam_user_policy_attachment` +- `aws_iam_group_policy_attachment` + +## Advanced debugging + +_Note: The AWS CloudFormation Stack can always be deleted and created without any data loss._ + +Mondoo Platform receives a check-in from the AWS integration every 10 minutes. If no ping is received, the status will update in the Mondoo Platform UI. + +If the status is _not_ `active` or `deleted`: + +- Try the "Retry Setup" button, which will ensure that the EventBridge rule to talk to your AWS account is present in the Mondoo AWS account and refresh the stored service credentials if it is. + +Check the CloudFormation stack status and the CloudWatch logs for any obvious errors. + +Check for missing infrastructure: + +- Are the Mondoo credentials present? check the SSM parameter store in the installed region, under `MondooAgentConfig` +- Is the EventBridge rule that allows Mondoo to talk to the integration present? check AWS EventBridge, rule named `mondoo-customevent-lambda-rule` + +And of course, please contact support@mondoo.com and join us in the [Mondoo Community Slack Channel](https://mondoo.link/slack). + +## Learn more + +- [AWS Integration FAQ](/docs/platform/infra/cloud/aws/aws-integration-faq) +- [Scan Continuously with an AWS Integration](/docs/platform/infra/cloud/aws/aws-integration-scan) + +--- diff --git a/docs/platform/infra/cloud/aws/aws-overview.mdx b/docs/platform/infra/cloud/aws/aws-overview.mdx new file mode 100644 index 000000000..c487a5ad7 --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-overview.mdx @@ -0,0 +1,32 @@ +--- +title: Overview of AWS and Mondoo +sidebar_label: Overview +sidebar_position: 1 +image: /img/featured_img/mondoo-aws.jpg +description: This page describes how you can use Mondoo to assess security configurations and risk for your infrastructure running in AWS. +--- + +Rely on Mondoo to secure all aspects of your Amazon cloud environment. Mondoo finds vulnerabilities and misconfigurations in instances, Kubernetes, buckets, APIs, and more. + +Mondoo offers a variety of approaches to evaluating your AWS infrastructure security. You can continuously scan your AWS accounts, evaluate builds before they go to production, and run ad hoc scans. + +## Continuously scan + +Continuously evaluate the security of your AWS accounts and resources, such as EC2 instances, so that you always have an up-to-date view of your environment's security posture. + +The [Mondoo AWS Integration](/platform/infra/cloud/aws/aws-integration-scan) provides cron-scheduled and [event-based](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html) continuous scanning of your AWS accounts and EC2 instances using a Lambda function. Deploy the integration once and always get the latest security assessments for new accounts and resources. + +## Scan during build time + +[Build Secure AMIs with cnspec and HashiCorp Packer](/cnspec/cnspec-aws/cnspec-aws-packer/): Scan Linux and Windows HashiCorp Packer builds for vulnerabilities and security misconfigurations. Mondoo's plugin works with any of the supported Packer builders, including containers. + +## Scan during run time + +Ad hoc, agentless scans are a great way to get started evaluating your AWS security with Mondoo. There's no agent to install or manage on instances in your infrastructure, so you can get started scanning in just minutes. + +- [Scan an AWS account from your workstation](/platform/infra/cloud/aws/aws-workstation-scan/): Scan your AWS accounts and instances using cnspec, the open source security scanning component of Mondoo. +- [Instance scan with AWS SSM](/platform/infra/cloud/aws/aws-ssm-scan/): Perform agentless scans of your instances using AWS Systems Manager. +- [Instance scan with EC2 Instance Connect](/platform/infra/cloud/aws/aws-ec2-ic-scan/): Use EC2 Instance Connect to assess configuration without an agent. +- [Instance scan with EBS snapshots](/platform/infra/cloud/aws/aws-ebs-snapshot-scan): To prevent impact on running instances, you can conduct a jump-host-based scan of EC2 instance EBS snapshots. + +--- diff --git a/docs/platform/infra/cloud/aws/aws-scan-details.mdx b/docs/platform/infra/cloud/aws/aws-scan-details.mdx new file mode 100644 index 000000000..4d4295cdf --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-scan-details.mdx @@ -0,0 +1,80 @@ +--- +title: Advanced AWS Integration Details +sidebar_label: Advanced Integration Details +sidebar_position: 5 +image: /img/featured_img/mondoo-aws.jpg +description: This document provides detailed information on how the Mondoo AWS integration works. +--- + +:::note + +This supplemental topic provides detailed information on how the Mondoo AWS integration works. It's not essential knowledge for using Mondoo. + +::: + +## What is an "account scan"? + +When an AWS account is integrated with a space in Mondoo Platform, Mondoo performs a configuration assessment of the AWS account by analyzing the configuration of the account (IAM settings), and discovering resources (EC2 instances, S3 buckets, RDS instances, etc) across all regions. The configuration of discovered resources are assessed according to which policies have been **ENABLED** in the **registry**. + +### Account scan schedule + +![Mondoo Platform - Configure AWS account scan interval](/img/platform/infra/cloud/aws/aws-configure-scan-schedule.png) + +Scanning happens every 12 hours by default, but the scan interval is configurable by going to **INTEGRATIONS** -> select the **AWS Account** you want to configure -> **CONFIGURATION**, under the **Account** section.. + +### Scan Now (Mondoo Platform) + +![](/img/platform/infra/cloud/aws/integration-scan-now.png) + +Additionally, on-demand scans can be triggered in **INTEGRATIONS** section by selecting the integrated AWS account, selecting the **Scan Now**" button in the upper right corner of the integration details. + +:::info + +You can also scan an AWS account by running `cnspec scan aws` from any workstation on which cnspec is installed and configured. To learn more, read [Scan AWS from your workstation](/platform/infra/cloud/aws/aws-workstation-scan/). + +::: + +## What methods are used for EC2 scanning? + +There are three different methods used by Mondoo for EC2 scanning: + +- [AWS Systems Manager](#aws-systems-manager-ssm) +- [SSH connection](#ssh) +- [EC2 snapshot scanning](#ec2-snapshot-scanning) + +### Discovery + +Mondoo starts by querying the AWS API to get a list of all the EC2 instances in the account, across all regions available to the account, and gathering basic information about the instances. + +### AWS Systems Manager (SSM) + +When gathering information about the instances, the Lambda function checks whether the SSM agent is installed and has a ping with the status `Online` to indicate the instance is configured to be managed by SSM. In the configuration options for an integrated AWS Account, if the **Activate SSM for Instance Connectivity** is switched to **On**, Mondoo triggers a job on all `Online` instances to run an SSM document that downloads the latest version of cnspec, executes the `cnspec scan` command, and sends the results to Mondoo Platform. The integration also uses Mondoo Platform API credentials stored in SSM parameter store to authenticate with your Mondoo account, and send results. Once the scan completes, cnspec is completely uninstalled from the instance. + +For more details about how to set up SSM machines in your AWS Account, see the [ssm documentation](https://docs.aws.amazon.com/systems-manager/index.html) + +### SSH + +In order to facilitate the scanning of multiple instances over ssh connectivity, Mondoo has provided users with a way to match groups of instances to stored credentials. When `Activate SSH for Instance Connectivity` is set to true, an input box appears for the `Vault Secret Query`. + +The `Vault Secret Query` leverages MQL to define a mapping between instance labels and credentials stores in AWS Secrets Manager or AWS SSM Parameter store. In the example above, any instance with a Name tag of `ssh` (in AWS) will be scanned using the credential stored in AWS Secrets Manager with arn `arn:aws:secretsmanager:us-east-2:172746783610:secret:vj/secret-lHvP9r`. + +_Note: this functionality is not restricted to the `Name` tag; it will work with any tag_ + +### EC2 snapshot scanning + +EC2 snapshot scanning offers a way to scan Linux EC2 instances without SSH credentials or an SSM agent. +With this option, Mondoo spins up an instance in the AWS account and uses that instance to scan the other instances in the account. This is done by triggering an SSM job on the scanner instance that creates a snapshot of the target instance volume, attaches it to the scanner instance, and performs a scan of the mounted filesystem. + +EC2 snapshot scanning involves spinning up instances in an AutoScaling Group as well as one-off instances. It creates scanner instances named `ebs-scanner` in the same region as the target instances. + +It cleans up the scanners shortly after completing all scans, and cleans up any created snapshots and volumes (that are more than twelve hours old) every 8 hours. All created resources have the `Created By: Mondoo` tag. + +Be aware that EC2 snapshot scanning causes a slight increase on your AWS bill (for the EC2 and EBS services). + +### AWS tags + +All resources created by the Mondoo AWS Integration have the `Created By: Mondoo` tag. The IAM role attached to the Lambda function lets the integration delete EC2 resources only if they have the `Created By: Mondoo` tag. + +For information about AWS tags, read [Tagging your AWS resources](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) in the AWS documentation. + +--- diff --git a/docs/platform/infra/cloud/aws/aws-ssm-scan.mdx b/docs/platform/infra/cloud/aws/aws-ssm-scan.mdx new file mode 100644 index 000000000..e705362c8 --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-ssm-scan.mdx @@ -0,0 +1,209 @@ +--- +title: Scan Using AWS Systems Manager +sidebar_label: Scan Using AWS SSM +sidebar_position: 6 +image: /img/featured_img/mondoo-aws.jpg +description: This document covers the configuration and use of AWS Systems Manager (SSM) to scan EC2 instances without agents. +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +Use AWS Systems Manager (SSM) to securely scan EC2 instances. You don't need to deploy [cnspec](/cnspec/cnspec-about/) to instances in your environment. Any time Mondoo scans an instance, it automatically installs cnspec for the duration of the scan and then uninstalls cnspec when the scan finishes. + +## How Mondoo scans with SSM + +When Mondoo performs an SSM scan, these steps occur: + +1. SSM Run Command calls the AWS-RunShellScript SSM document. +2. The latest version of cnspec is installed and configured to authenticate with your Mondoo Platform account. +3. The EC2 instance runs `cnspec scan` to execute policy checks. +4. cnspec publishes results of the scan to Mondoo Platform. +5. cnspec is uninstalled from the EC2 instance. + +## Configuring AWS SSM + +This section covers a new setup of AWS SSM to manage EC2 instances in AWS. If you are brand new to AWS SSM, read the [AWS documentation](https://aws.amazon.com/systems-manager/) for additional implementation details. + +### Create an IAM role and instance profile for SSM + +Before you can manage EC2 instances using SSM you need to perform these steps either in the AWS Console or the AWS CLI: + +1. Set up an IAM Role with a trust policy for EC2. +2. Attach the AWS managed AmazonSSMManagedInstanceCore policy to the IAM role. +3. Create an instance profile (if you're using the AWS CLI). +4. Attach the IAM role to the instance profile (if you're using the AWS CLI). + +Select your preferred method for configuring SSM, and follow the steps. + + + + +#### Requirements + +- AWS console access to any account you plan to integrate with Mondoo +- Administrator privileges in those accounts + +#### Create an IAM role for EC2 instances with AmazonSSMManagedInstanceCore policy + +![Create IAM SSM Role AWS Console](/img/platform/infra/cloud/aws/ssm/ssm-role-creation.png) + +1. Log in to the AWS Console. +2. Navigate to **IAM**. +3. Select **Roles**. +4. Select **Create Role**. +5. For the **Trust entity type**, select **AWS service** and for the **Use case**, select **EC2**. Then select the **Next** button. +6. Search for **SSM** in the **Filter policies** box, select **AmazonSSMManagedInstanceCore**, and then select the **Next** button. +7. Under **Role details**, give the role a name (such as EC2_SSM_ROLE), tags, and a description (if you want), and then select **Create role**. + +Your new role is ready for use and can be attached to existing EC2 instances, or to new EC2 instances as an [instance profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) when launching new instances. + +#### Launch a new EC2 instance with the newly created instance profile + +Follow the steps below to launch a new EC2 instance using the AWS console, attach the SSM role created in the last section, and then validate the instance is under management in the AWS SSM console. + +![Create IAM SSM Role AWS Console](/img/platform/infra/cloud/aws/ssm/AWS-SSM-01-org.png) + +1. Log in to the AWS Console. +2. Navigate to **EC2**. +3. Select **Launch Instance**. +4. Under **Name and tags**, in the **Name** field, enter _EC2 SSM Instance_. +5. Under **Application and OS Images (Amazon Machine Image)**, select **Amazon Linux 2 AMI (HVM), SSD Volume Type**, which defaults to **64-bit (x86)**. +6. Under **Instance type** select **t2.micro**. + ![Create IAM SSM Role AWS Console](/img/platform/infra/cloud/aws/ssm/AWS-SSM-02-org.png) +7. Under **Key pair (login)** you can either add or create a new key pair, but in this instance it's safe to select **Proceed without a key pair (Not recommended)**. If you want remote access to the instance, you can add an SSH key. This is not required. +8. Under **Network settings - Firewall(security groups)**, select **Select existing security group** and choose the default security group. +9. Open the block **Advanced details** and under **IAM instance profile**, select the role you created in the instructions above. +10. Review the details then select **Launch**. +11. Copy the **instance ID**. You need it in the next steps. + ![Create IAM SSM Role AWS Console](/img/platform/infra/cloud/aws/ssm/AWS-SSM-03-org.png) + +#### Validate that the instance is under management of AWS Systems Manager + +![Create IAM SSM Role AWS Console](/img/platform/infra/cloud/aws/ssm/validate_ssm_gui.gif) + +To validate that the EC2 instance is under the management of SSM: + +1. Log in to the AWS console. +2. Navigate to **Systems Manager**. +3. Select **Fleet Manager** +4. Locate the **instance ID** of the instance you launched in the section above and select it to bring up the **Instance Overview**. + +This confirms the instance is under the management of SSM. Mondoo can use it to perform continuous scans of the asset. + + + + +#### Requirements + +- You must have the AWS CLI installed and configured for your account. +- You must be a part of the Administrators group. + +#### Get the ARN of the SSM policy for the IAM role `AmazonSSMManagedInstanceCore` + +![](/img/platform/infra/cloud/aws/ssm/cli_get_role_arn.gif) + +```bash +aws iam list-policies --scope AWS --query "Policies[?PolicyName == 'AmazonSSMManagedInstanceCore']" +``` + +#### Create an AssumeRole policy + +1. Create a new file named `ec2-trust.json`. +2. Copy this code snippet: + +``` +{ + "Version": "2012-10-17", + "Statement": { + "Effect": "Allow", + "Principal": {"Service": "ec2.amazonaws.com"}, + "Action": "sts:AssumeRole" + } + } +``` + +3. Paste the code snippet into the `ec2-trust.json` file. +4. Save the file. + +#### Create IAM SSM role and attach the role policy document + +```bash +aws iam create-role --role-name EC2_SSM_ROLE --assume-role-policy-document file://ec2-trust.json +``` + +```bash +aws iam attach-role-policy --role-name EC2_SSM_ROLE --policy-arn +``` + +#### Launch an Amazon Linux 2 EC2 instance with the instance profile + +With the instance profile you created, you can now launch EC2 instances that are configured for use with AWS SSM. + +:::note + +Not all AMIs the SSM agent installed by default. For a complete list of AMIs that come with SSM agent pre-installed, read [About SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/prereqs-ssm-agent.html) in the AWS documentation. +::: + +Follow these steps to launch an Amazon Linux 2 EC2 instance in a default VPC using the new instance profile in the previous step: + +1. Get the subnet ID: + +```bash +aws ec2 describe-subnets --query "Subnets[?Tags[?Value == 'SubnetA'] ].SubnetId | [0]" +``` + +2. Get the security group ID: + +```bash +aws ec2 describe-security-groups \ +--filters Name=group-name,Values=SG \ +--query "SecurityGroups[?GroupName == 'SG'].GroupId | [0]" +``` + +3. Get the Amazon Linux 2 AMI ID (SSM agent preinstalled) + +```bash +aws ec2 describe-images \ +--filters "Name=architecture,Values=x86_64" "Name=description,Values=*Amazon Linux 2 AMI 2.0.2019*gp2" "Name=owner-id,Values=137112412989" "Name=image-type,Values=machine" \ +--query "sort_by(Images, &CreationDate)[::-1].ImageId | [0]" +``` + +4. Launch a new EC2 instance with the EC2_SSM_ROLE: + +```bash +aws ec2 run-instances --associate-public-ip-address \ +--security-group-ids \ +--iam-instance-profile Arn= \ +--instance-type t2.micro \ +--image-id \ +--subnet-id \ +--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=SSMTestInstance}]" +``` + +#### Confirm that the instance is managed by AWS Systems Manager + +1. Get the instance ID of the new instance: + +```bash +aws ec2 describe-instances --filters Name=tag:Name,Values=SSMTestInstance --query "Reservations[].Instances[].InstanceId" +``` + +2. Confirm that the instance ID shows up in SSM: + +```bash +aws ssm describe-instance-information --query "InstanceInformationList[?InstanceId == '']" +``` + + + + +## Learn more + +| To learn about... | Read... | +| ----------------------- | ------------------------------------------------------------------------ | +| Snapshot scanning | [Scan an EBS Snapshot](/platform/infra/cloud/aws/aws-ebs-snapshot-scan/) | +| Continuous AWS scanning | [Continuously Scan AWS](/platform/infra/cloud/aws/aws-integration-scan/) | +| cnspec | [The cnspec documentation](/cnspec/cnspec-about/) | + +--- diff --git a/docs/platform/infra/cloud/aws/aws-workstation-scan.mdx b/docs/platform/infra/cloud/aws/aws-workstation-scan.mdx new file mode 100644 index 000000000..34b6a7870 --- /dev/null +++ b/docs/platform/infra/cloud/aws/aws-workstation-scan.mdx @@ -0,0 +1,135 @@ +--- +title: Scan AWS Accounts and EC2 Instances from a Workstation +sidebar_label: Scan from a Workstation +sidebar_position: 7 +image: /img/featured_img/mondoo-aws.jpg +description: Perform remote, agentless scans on AWS accounts and EC2 instances with Mondoo +--- + +Use [cnspec](/cnspec/cnspec-about/), Mondoo's CLI security tool, to scan AWS accounts and EC2 instances remotely from your workstation. These fast, on-demand assessments are independent from any [native AWS integrations](/platform/infra/cloud/aws/aws-integration-scan) that run continuously within your account. + +You can: + +- [Remotely scan an AWS account](#remotely-scan-aws-accounts) using the AWS CLI config + +or + +- [Perform agentless scans of EC2 instances](#perform-agentless-scans-of-ec2-instances) using EC2 Instance Connect, SSH, or snapshot scanning + +## Remotely scan AWS accounts + +cnspec can remotely scan AWS accounts using the configuration and credentials from the AWS CLI on your workstation, which is typically located in `~/.aws/credentials`. Before you can scan an AWS account, you must have the AWS CLI [installed and configured](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) with credentials for the accounts you want to scan. + +### Set up AWS credentials + +To ensure your AWS credentials are set up properly so you can scan from your workstation, run this command from a terminal: + +```bash +cat ~/.aws/credentials +[default] +aws_access_key_id = AKIAIOSFODNN7EXAMPLE +aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY +aws_session_token = AQoDYXdzEJr... +``` + +If you want to use a specific profile, set `AWS_PROFILE` + +```bash +export AWS_PROFILE=PROFILENAME +``` + +For PROFILENAME, substitute the name of the profile to use. + +### Permissions required to scan an AWS account + +cnspec requires read-only access to assess the configuration of the services and resources within an AWS account. It uses the credentials for the `awscli` to authenticate with the AWS API. So it inherits the permissions granted to your AWS access keys. + +:::info + +Amazon provides the **ReadOnlyAccess** IAM profile, which grants read-only access to all AWS Services. + +::: + +### Scan an AWS account with cnspec + +To scan an AWS account remotely with cnspec, enter this command in a terminal: + +```bash +cnspec scan aws +``` + +cnspec scans the account using any AWS policies you have enabled in your Mondoo account. It prints the results to `STDOUT` on the command line. It also sends the results to Mondoo Platform, which generates a report for each policy executed against the account. + +### Manage multiple AWS profiles + +If you manage multiple AWS configurations in your credentials file, you can set the `AWS_PROFILE` environment variable to specify which profile to use for each scan. For example, this credentials file has two configurations: + +```bash title='~/.aws/credentials' +[default] +aws_access_key_id=AKIAIOSFODNN7EXAMPLE +aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY + +[aws-dev-account] +aws_access_key_id=AKIAI44QH8DHBEXAMPLE +aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY +``` + +When you run a scan, you specify which profile to use: + +```bash title="Select AWS profile to scan" +export AWS_PROFILE=PROFILENAME +cnspec scan aws +``` + +For PROFILENAME, substitute the name of the profile to use. + +### Incognito mode + +cnspec provides an `--incognito` mode, which lets you scan your AWS account against a specific policy without sending the results back to Mondoo Platform. This can be helpful for assessing how an account will score against a policy before enabling it. + +To scan an AWS account using `incognito` mode, enter this command in a terminal: + +```bash +cnspec scan aws --incognito +``` + +## Perform agentless scans of EC2 instances + +cnspec supports remote scanning of EC2 instances without installing an agent on the instance. This lets you assess your instances on demand. You must have remote connectivity to instances, either through SSH or EC2 Instance Connect. + +### Scan an EC2 instance using EC2 Instance Connect + +import Partial from "./_aws-incl-ic.mdx"; + +{" "} + +### Scan an EC2 instance using SSH + +cnspec lets you remotely scan EC2 instances using SSH: + +```bash +cnspec scan aws ec2 instance-connect USER@HOST --identity-file PATH +``` + +| For... | Substitute... | +| ------ | --------------------------------------- | +| USER | Your user name for the AWS account | +| HOST | The instance's public IP address or DNS | +| PATH | The path to the SSH key file | + +:::info + +To learn how to retrieve credentials from a secrets manager (such as AWS Secrets Manager or SSM Parameter Store), read [Secrets Management](/platform/infra/opsys/automation/vault.md). + +::: + +## Learn more + +| To learn about... | Read... | +| ----------------------- | ------------------------------------------------------------------------- | +| Scanning with AWS SSM | [Scan Using AWS Systems Manager](/platform/infra/cloud/aws/aws-ssm-scan/) | +| Snapshot scanning | [Scan an EBS Snapshot](/platform/infra/cloud/aws/aws-ebs-snapshot-scan/) | +| Continuous AWS scanning | [Continuously Scan AWS](/platform/infra/cloud/aws/aws-integration-scan/) | +| cnspec | [The cnspec documentation](/cnspec/cnspec-about/) | + +--- diff --git a/docs/platform/infra/cloud/azure/_category_.json b/docs/platform/infra/cloud/azure/_category_.json new file mode 100644 index 000000000..1a257cdb9 --- /dev/null +++ b/docs/platform/infra/cloud/azure/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Azure", + "position": 3 +} diff --git a/docs/platform/infra/cloud/azure/_include-graph.mdx b/docs/platform/infra/cloud/azure/_include-graph.mdx new file mode 100644 index 000000000..d757aed90 --- /dev/null +++ b/docs/platform/infra/cloud/azure/_include-graph.mdx @@ -0,0 +1,46 @@ +1. In the navigation sidebar, select **API permissions**. + + ![API permissions](/img/platform/infra/cloud/azure/api-permissions.png) + + By default, Microsoft grants your new application `User.Read` permission for Microsoft Graph. It's not required for Mondoo, so you can remove it. + +2. Select **+ Add a permission**. + + ![Add permission in Entra](/img/platform/infra/cloud/azure/select-add-permission.png) + +3. From the list of **Commonly used Microsoft APIs**, select **Microsoft Graph**. + + ![API permissions](/img/platform/infra/cloud/azure/request-api-permission.png) + +4. Because Mondoo acts as a service, select **Application permissions**. + +5. Select **expand all** to see all permissions. Then select the required API permissions: + + {" "} + +
+Show or hide required API permissions. + +| Microsoft Graph | Type | Description | +| ----------------------------- | ----------- | ---------------------------------------------------- | +| Application.Read.All | Application | Read all applications | +| AuditLog.Read.All | Application | Read all audit log data | +| Directory.Read.All | Application | Read directory data | +| Domain.Read.All | Application | Read domains | +| IdentityProvider.Read.All | Application | Read identity providers | +| IdentityRiskEvent.Read.All | Application | Read all identity risk event information | +| IdentityRiskyUser.Read.All | Application | Read all identity risky user information | +| Policy.Read.All | Application | Read your organization's policies | +| Policy.Read.ConditionalAccess | Application | Read your organization's conditional access policies | +| Policy.Read.PermissionGrant | Application | Read consent and permission grant policies | +| RoleManagement.Read.All | Application | Read role management data for all RBAC providers | +| SecurityActions.Read.All | Application | Read your organization's security actions | +| SecurityEvents.Read.All | Application | Read your organization's security events | +| ThreatAssessment.Read.All | Application | Read threat assessment requests | +| ThreatIndicators.Read.All | Application | Read all threat indicators | + +
+ +6. Select the **Add permissions** button. + +7. To complete the process, select **Grant admin consent for (your tenant name)** and select the **Yes** button to confirm. diff --git a/docs/platform/infra/cloud/azure/_include-keyvault.mdx b/docs/platform/infra/cloud/azure/_include-keyvault.mdx new file mode 100644 index 000000000..63bad10d3 --- /dev/null +++ b/docs/platform/infra/cloud/azure/_include-keyvault.mdx @@ -0,0 +1,29 @@ +If you use key vault access policy, this step is required. + +A key vault access policy determines whether a given security principal (a user, application or user group) can perform different operations on key vault secrets, keys, and certificates. + +1. From the Azure portal home, select **Key vaults**. + +2. Select a key vault from the list. + +3. In the sidebar under the key vault name, select **Access policies**. + + ![key vault access policies](/img/platform/infra/cloud/azure/key-vault-access.png) + +4. In the toolbar, select **+ Create**. + +5. Configure the permissions: + + - Under **Key permissions**, select **Get** and **List**. + + - Under **Secret permissions**, select **Get** and **List**. + + - Under **Certificate permissions** , select **Get** and **List**. + +6. Select the **Next** button. + +7. From the list, select the app registration you created. + +8. Select the **Next** button and select the **Next** button again to skip the Application (optional) step. + +9. Review the access policy and then select the **Create** button. diff --git a/docs/platform/infra/cloud/azure/_include-webapp.mdx b/docs/platform/infra/cloud/azure/_include-webapp.mdx new file mode 100644 index 000000000..1b2b86dec --- /dev/null +++ b/docs/platform/infra/cloud/azure/_include-webapp.mdx @@ -0,0 +1,134 @@ +Grant web app permissions by creating a custom RBAC role for Mondoo and assigning the custom role to your new app registration. + +1. In the sidebar under the subscription name, select **Overview**. + +2. Copy the subscription ID and save it somewhere handy. + +3. In the sidebar under the subscription name, select **Access control (IAM)**. + +4. On the subscription's **Access control (IAM)** page toolbar, select **+ Add** and select **Add custom role**. + + ![Azure Subscription Roles](/img/platform/infra/cloud/azure/add-int-azure-add-role.png) + +5. Name the new role `mondoo-role`, provide a description, and then select the **JSON** tab. + +6. On the **JSON** tab, select the **Edit** button and delete all existing content from the edit box. + +7. Copy this JSON content and paste it into the edit box on the JSON tab: + + ``` + { + "Name": "mondoo-role", + "IsCustom": true, + "description": "Custom role for Mondoo integration", + "assignableScopes": [ + "/subscriptions/YOUR-SUBSCRIPTION-ID" + ], + "actions": [ + "Microsoft.Authorization/*/read", + "Microsoft.ResourceHealth/availabilityStatuses/read", + "Microsoft.Insights/alertRules/*", + "Microsoft.Resources/deployments/*", + "Microsoft.Resources/subscriptions/resourceGroups/read", + "Microsoft.Support/*", + "Microsoft.Web/listSitesAssignedToHostName/read", + "Microsoft.Web/serverFarms/read", + "Microsoft.Web/sites/config/read", + "Microsoft.Web/sites/config/web/appsettings/read", + "Microsoft.Web/sites/config/web/connectionstrings/read", + "Microsoft.Web/sites/config/appsettings/read", + "Microsoft.web/sites/config/snapshots/read", + "Microsoft.Web/sites/config/list/action", + "Microsoft.Web/sites/read", + "Microsoft.KeyVault/checkNameAvailability/read", + "Microsoft.KeyVault/deletedVaults/read", + "Microsoft.KeyVault/locations/*/read", + "Microsoft.KeyVault/vaults/*/read", + "Microsoft.KeyVault/operations/read" + ], + "notActions": [], + "dataActions": [ + "Microsoft.KeyVault/vaults/*/read", + "Microsoft.KeyVault/vaults/secrets/readMetadata/action" + ], + "notDataActions": [] + } + ``` + + To integrate with more than one subscription, list them: + + ``` + "assignableScopes": [ + + "/subscriptions/YOUR-SUBSCRIPTION-ID-1" + + "/subscriptions/YOUR-SUBSCRIPTION-ID-2" + + "/subscriptions/YOUR-SUBSCRIPTION-ID-3" + + ] + ``` + + To integrate at the management group level, copy this JSON content and paste it into the edit box on the JSON tab: + + ``` + { + "properties": { + "roleName": "mondoo-role", + "description": "Custom role for Mondoo integration", + "assignableScopes": [ + "/providers/Microsoft.Management/managementGroups/YOUR-MANAGEMENT-GROUP-ID" + ], + "permissions": [ + { + "actions": [ + "Microsoft.Authorization/*/read", + "Microsoft.ResourceHealth/availabilityStatuses/read", + "Microsoft.Resources/subscriptions/resourceGroups/read", + "Microsoft.Web/listSitesAssignedToHostName/read", + "Microsoft.Web/serverFarms/read", + "Microsoft.Web/sites/config/read", + "Microsoft.Web/sites/config/web/appsettings/read", + "Microsoft.Web/sites/config/web/connectionstrings/read", + "Microsoft.Web/sites/config/appsettings/read", + "microsoft.web/sites/config/snapshots/read", + "Microsoft.Web/sites/config/list/action", + "Microsoft.Web/sites/read", + "Microsoft.Web/sites/*/read" + ], + "notActions": [], + "dataActions": [], + "notDataActions": [] + } + ] + } + } + ``` + + For YOUR-MANAGEMENT-GROUP-ID, substitute the name of the management group you want to monitor. If you don't have management groups, you can use your tenant ID because your tenant is your root management group. + +8. Select the **Save** button. + +9. Select the **Review + create** button (or the Next button), check your work, and then select the **Review + create** button again. + +10. Assign the created Custom role to the app: On the subscription's **Access control (IAM)** page toolbar, select **+ Add** and select **Add role assignment**. + +11. Search for and select the role you just created, `mondoo-role`. + +12. Select the **Members** tab and select **User, group, or service principal**. + +13. Select the **+ Select Members** link, find and select your Mondoo app registration, and select the **Select** button. + +![Azure Subscription Role Member Assignment](/img/platform/infra/cloud/azure/add-int-azure-custom-member.png) + +14. Select the **Review + assign** button to check the assignment. Select the **Review + assign** button again to assign the `mondoo-role` role to your Mondoo app registration. + +![Azure Subscription Role Member Assignment](/img/platform/infra/cloud/azure/add-int-azure-select-member.png) + +15. Make sure that you have two RBAC roles for the app you created: On the subscription's **Access control (IAM)** page toolbar, select **Check Access**. + +16. Keep "User, group, or service principal" selected and type name you gave the app, such as `mondoo-security`. + +17. Select the app. Verify that you see two roles: Reader and the custom role that you created. + +It can take a few minutes for the roles you assigned to take effect. diff --git a/docs/platform/infra/cloud/azure/azure-integration-scan-group.mdx b/docs/platform/infra/cloud/azure/azure-integration-scan-group.mdx new file mode 100644 index 000000000..9564d33ab --- /dev/null +++ b/docs/platform/infra/cloud/azure/azure-integration-scan-group.mdx @@ -0,0 +1,347 @@ +--- +title: Quick Setup - Azure Management Group Continuous Scanning +sidebar_label: Quick Setup - Azure Management Group Continuous Scanning +sidebar_position: 3 +description: Configure the Mondoo Azure Integration to scan Azure management groups. +image: /img/featured_img/mondoo-azure.jpg +--- + +The Mondoo Azure integration lets you continuously scan Azure resources, such as compute instances and databases, in an Azure management group. + +You can also limit scanning one or more Azure subscriptions. For instructions, read [Continuously Scan an Azure Subscription](/platform/infra/cloud/azure/azure-integration-scan-subscription/). + +## Prerequisites + +Before you integrate Microsoft Azure with Mondoo, be sure you have: + +- A [Mondoo account](/platform/start/plat-start-acct/) with Editor or Owner permissions for the space in which you want to add the integration. + +- An [Azure account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) with an active subscription and permission to manage applications in Microsoft Entra ID (formerly Active Directory). Any of these [Entra built-in roles](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) include the required permissions: + + - [Global Administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#global-administrator) + + - [Application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#application-administrator) + + - [Cloud application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#cloud-application-administrator) + + In the Azure portal you can see what roles your user account has: Go to **Microsoft Entra ID > Users > (your user account) > Assigned roles**. + +- Command-line access to Azure using either: + + - [Azure Cloud Shell](https://learn.microsoft.com/en-us/azure/cloud-shell/quickstart?tabs=azurecli) + + -
+ + The Azure CLI in either the Linux shell or the macOS shell + +
+
    +
  1. + + Install the Azure CLI. + +
  2. +
  3. + Log into the Azure CLI from PowerShell or a Linux/macOS CLI by + entering: +
    + az login +
    + Azure opens your web browser and prompts you to log in. After you do + so, you can return to the CLI. +
  4. +
+
+
+ +## Register and grant permissions to an Azure app + +Like any service that integrates with Azure, Mondoo must have Microsoft Entra ID app registration in your Azure tenant. To learn more about creating a new app registration and service principal, read [App registration, app objects, and service principals](https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#app-registration-app-objects-and-service-principals) in the Azure documentation. + +Registering Mondoo with Entra establishes a trust relationship between Mondoo and the Microsoft identity platform. The trust is unidirectional: Mondoo trusts the Microsoft identity platform, and not the other way around. The Entra app registration creates a [service principal](https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-how-applications-are-added#what-are-service-principals-and-where-do-they-come-from) to represent Mondoo in any tenants and subscriptions. + +The app registration you create gives Mondoo read-only access to Azure resources, web apps, key vault, and Graph API. + +These instructions describe how to use Microsoft's "automatic" method of registering an Azure app. If you want to use your own certificates for authentication, if you use the [_key vault access policy_ permission model](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-access-policy), or if your Azure environment is unusually large, follow the instructions in [Manually Set up an Azure Integration](/platform/infra/cloud/azure/manual-reg-path/) instead. + +To configure your Azure resources, you must: + +Step A. Retrieve your management group ID + +Step B. Create the app registration and certificate and grant READ access + +Step C. Grant web app and key vault READ permissions to the registered app + +Step D. Grant permissions to access Microsoft Graph (API permissions) + +### Step A: Retrieve your management group ID + +If you want Mondoo to continuously scan all the resources in a management group, retrieve the group's ID in the Azure CLI: + +1. Run this command: + +```bash +az account management-group list +``` + +2. Copy the ID of the group you want and paste it somewhere handy to use in later steps. + +### Step B: Create the app, service principal, and certificate and grant READ access + +A single command in the Azure CLI performs these tasks: + +- Creates the application registration and service principal in Microsoft Entra ID + +- Grants READ access (using RBAC) to the new application + +- Creates a certificate and assigns it to the newly created app + +In the Azure CLI, enter: + +```bash +az ad sp create-for-rbac --name mondoo-security --role Reader --scopes /providers/Microsoft.Management/managementGroups/YOUR-GROUP-ID --create-cert +``` + +For `YOUR-GROUP-ID`, substitute the management group ID value you copied in the step above. For example, this command creates a service principal and an application named `mondoo-security` that provides access to a management group with the ID `e4e2600a-2d3d-2600-aa70-b9d8c8ec2600`: + +```bash +az ad sp create-for-rbac --name mondoo-security --role Reader --scopes /providers/Microsoft.Management/managementGroups/e4e2600a-2d3d-2600-aa70-b9d8c8ec2600 --create-cert +``` + +When successful, the Azure CLI returns results like these: + +```bash +"appId": "63c35483-c62f-2600-a097-a6e44d8dcdf6", +"displayName": "Mondoo", +"fileWithCertAndPrivateKey": "/Users/stella/tmpkqyme3rm.pem", +"password": null, +"tenant": "e4e2600a-2d3d-2600-aa70-b9d8c8ec2600" +``` + +Copy your results and paste them somewhere handy; you'll need them in later steps. + +Copy the created PEM file (in the example above, it's named tmpkqyme3rm.pem) and save it; you'll need it in later steps. + +:::tip + +In the Azure portal, you can make sure that the created application has the required READ access at the subscription level: Go to **Azure portal > [your subscription] > Access control (IAM) > Roles (choose Reader and View) > Assessments**. If you see the `mondoo-security` application, you've succeeded. + +::: + +### Step C: Grant web app and key vault READ permissions to the registered app + +:::note + +The key vault permissions below are from Microsoft's "Key Vault Reader" role. The [Microsoft documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles) describes this role: + +> _Read metadata of key vaults and its certificates, keys, and secrets. Cannot read sensitive values such as secret contents or key material. Only works for key vaults that use the 'Azure role-based access control' permission model._ + +::: + +Follow these steps, substituting the management group ID(s) you copied in Step A for YOUR-GROUP-ID: + +1. Copy this content and paste it into a new file named `mondoo-role.json`: + + ```json + { + "Name": "mondoo-role", + "IsCustom": true, + "description": "Custom role for Mondoo integration", + "assignableScopes": [ + "/providers/Microsoft.Management/managementGroups/YOUR-GROUP-ID" + ], + "actions": [ + "Microsoft.Authorization/*/read", + "Microsoft.ResourceHealth/availabilityStatuses/read", + "Microsoft.Insights/alertRules/*", + "Microsoft.Resources/deployments/*", + "Microsoft.Resources/subscriptions/resourceGroups/read", + "Microsoft.Support/*", + "Microsoft.Web/listSitesAssignedToHostName/read", + "Microsoft.Web/serverFarms/read", + "Microsoft.Web/sites/config/read", + "Microsoft.Web/sites/config/web/appsettings/read", + "Microsoft.Web/sites/config/web/connectionstrings/read", + "Microsoft.Web/sites/config/appsettings/read", + "Microsoft.web/sites/config/snapshots/read", + "Microsoft.Web/sites/config/list/action", + "Microsoft.Web/sites/read", + "Microsoft.KeyVault/checkNameAvailability/read", + "Microsoft.KeyVault/deletedVaults/read", + "Microsoft.KeyVault/locations/*/read", + "Microsoft.KeyVault/vaults/*/read", + "Microsoft.KeyVault/operations/read" + ], + "notActions": [], + "dataActions": [ + "Microsoft.KeyVault/vaults/*/read", + "Microsoft.KeyVault/vaults/secrets/readMetadata/action" + ], + "notDataActions": [] + } + ``` + +2. Create a custom role: + + ``` + az role definition create --role-definition mondoo-role.json + ``` + +3. Make sure you successfully created the role: + + ``` + az role assignment list --role mondoo-role --scope /providers/Microsoft.Management/managementGroups/YOUR-GROUP-ID + ``` + +4. Assign the created custom role to the app you registered: + + ``` + az role assignment create --role mondoo-role --assignee --scope /providers/Microsoft.Management/managementGroups/YOUR-GROUP-ID + ``` + +### Step D: Grant permissions to access Microsoft Graph (API permissions) + +1. Copy this content and paste it into a new file on your local system named `app-manifest.json`: + + ```json + [ + { + "resourceAppId": "00000003-0000-0000-c000-000000000000", + "resourceAccess": [ + { + "id": "246dd0d5-5bd0-4def-940b-0421030a5b68", + "type": "Role" + }, + { + "id": "e321f0bb-e7f7-481e-bb28-e3b0b32d4bd0", + "type": "Role" + }, + { + "id": "5e0edab9-c148-49d0-b423-ac253e121825", + "type": "Role" + }, + { + "id": "bf394140-e372-4bf9-a898-299cfc7564e5", + "type": "Role" + }, + { + "id": "6e472fd1-ad78-48da-a0f0-97ab2c6b769e", + "type": "Role" + }, + { + "id": "dc5007c0-2d7d-4c42-879c-2dab87571379", + "type": "Role" + }, + { + "id": "b0afded3-3588-46d8-8b3d-9842eff778da", + "type": "Role" + }, + { + "id": "7ab1d382-f21e-4acd-a863-ba3e13f7da61", + "type": "Role" + }, + { + "id": "197ee4e9-b993-4066-898f-d6aecc55125b", + "type": "Role" + }, + { + "id": "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30", + "type": "Role" + }, + { + "id": "f8f035bb-2cce-47fb-8bf5-7baf3ecbee48", + "type": "Role" + }, + { + "id": "dbb9058a-0e50-45d7-ae91-66909b5d4664", + "type": "Role" + }, + { + "id": "9e640839-a198-48fb-8b9a-013fd6f6cbcd", + "type": "Role" + }, + { + "id": "37730810-e9ba-4e46-b07e-8ca78d182097", + "type": "Role" + }, + { + "id": "c7fbd983-d9aa-4fa7-84b8-17382c103bc4", + "type": "Role" + } + ] + } + ] + ``` + +2. Execute these commands to grant the permissions in the JSON file and give administrator consent. For YOUR-APP-ID, substitute the `appId` value from the results you copied in Step B: + + ``` + az ad app update --id YOUR-APP-ID --required-resource-accesses @app-manifest.json + + az ad app permission admin-consent --id YOUR-APP-ID + ``` + +## Add a new Azure integration in the Mondoo Console + +After you've created, granted permissions to, and tested a new app registration, you can create a Mondoo Azure integration. You need some values from the app registration you created in the instructions above. + +1. Access the Integrations > Add > Azure page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Azure**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Cloud Security, select **Azure**. + + ![integration-create-image](/img/platform/infra/cloud/azure/add-int-azure-top.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Azure tenant. + +3. In the **Enter Application (client) ID** box, enter the value from the `appId` value you copied in Step B. + +4. In the **Enter the Directory (tenant) ID** box, enter the `tenantId` value you copied in Step A. + +5. Specify the subscriptions for Mondoo to continuously scan. You copied at least one subscription ID in step A. + + - To continuously scan all subscriptions in the tenant, leave the **Scan all subscriptions connected to the Directory (tenant) ID** toggle enabled. + + - To choose the subscriptions to scan, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Allowlist, and enter the subscription ID to scan. + + - To scan **all** subscriptions except those you specify, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Denylist, and enter the names of the subscriptions you don't want Mondoo to scan. + +6. To automatically discover all Linux and Windows VMs in your subscription and scan them using Azure Run Command, select **Scan Azure VMs using Run Command**. + +7. Provide the certificate (a [PEM](https://aboutssl.org/what-is-pem-certificate-file/) (privacy-enhanced mail) file) for Mondoo to securely authenticate with the app (service principal) you created. You created this certificate in Step B. + + The certificate file must have the `.pem` extension and must contain both the private key and the certificate in this order: + + ``` + -----BEGIN PRIVATE KEY----- + key goes here + -----END PRIVATE KEY----- + -----BEGIN CERTIFICATE----- + certificate goes here + -----END CERTIFICATE----- + ``` + + Upload the certificate to Mondoo: In the **Drag and drop your .pem file here** box, select the cloud icon and choose the file to upload. + + ![integration-create-image](/img/platform/infra/cloud/azure/add-int-azure-bottom.png) + +8. Select the **START SCANNING** button. + +9. On the Recommended Policies page, enable the policies on which you want to base assessments of your Azure environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +10. Select **FINALIZE SETUP**. + +Mondoo begins scanning your Azure resources. When it completes, you can see results on the INVENTORY page. To learn more, read [Monitor Your Infrastructure Security](/platform/security/posture/monitor/). + +If your integration is unsuccessful, read [Troubleshoot an Azure Configuration](/platform/infra/cloud/azure/troubleshoot/). + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Integrate Mondoo with other cloud platforms in your infrastructure](/platform/infra/cloud/overview/) + +--- diff --git a/docs/platform/infra/cloud/azure/azure-integration-scan-subscription.mdx b/docs/platform/infra/cloud/azure/azure-integration-scan-subscription.mdx new file mode 100644 index 000000000..293443e04 --- /dev/null +++ b/docs/platform/infra/cloud/azure/azure-integration-scan-subscription.mdx @@ -0,0 +1,379 @@ +--- +title: Quick Setup - Azure Subscription Continuous Scanning +sidebar_label: Quick Setup - Azure Subscription Continuous Scanning +sidebar_position: 2 +description: Configure the Mondoo Azure Integration to scan Azure subscriptions +image: /img/featured_img/mondoo-azure.jpg +--- + +The Mondoo Azure integration lets you continuously scan Azure resources, such as compute instances and databases, in one or more Azure subscriptions. + +You can also scan an Azure management group. For instructions, read [Continuously Scan an Azure Management Group](/platform/infra/cloud/azure/azure-integration-scan-group/). + +## Prerequisites + +Before you integrate Microsoft Azure with Mondoo, be sure you have: + +- A [Mondoo account](/platform/start/plat-start-acct/) with Editor or Owner permissions for the space in which you want to add the integration. + +- An [Azure account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) with an active subscription and permission to manage applications in Microsoft Entra ID (formerly Active Directory). Any of these [Entra built-in roles](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) include the required permissions: + + - [Global Administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#global-administrator) + + - [Application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#application-administrator) + + - [Cloud application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#cloud-application-administrator) + + In the Azure portal you can see what roles your user account has: Go to **Microsoft Entra ID > Users > (your user account) > Assigned roles**. + +- Command-line access to Azure using either: + + - [Azure Cloud Shell](https://learn.microsoft.com/en-us/azure/cloud-shell/quickstart?tabs=azurecli) + + -
+ + The Azure CLI in either the Linux shell or the macOS shell + +
+
    +
  1. + + Install the Azure CLI. + +
  2. +
  3. + Log into the Azure CLI from PowerShell or a Linux/macOS CLI by + entering: +
    + az login +
    + Azure opens your web browser and prompts you to log in. After you do + so, you can return to the CLI. +
  4. +
+
+
+ +## Register and grant permissions to an Azure app + +Like any service that integrates with Azure, Mondoo must have Microsoft Entra ID app registration in your Azure tenant. To learn more about creating a new app registration and service principal, read [App registration, app objects, and service principals](https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#app-registration-app-objects-and-service-principals) in the Azure documentation. + +Registering Mondoo with Entra establishes a trust relationship between Mondoo and the Microsoft identity platform. The trust is unidirectional: Mondoo trusts the Microsoft identity platform, and not the other way around. The Entra app registration creates a [service principal](https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-how-applications-are-added#what-are-service-principals-and-where-do-they-come-from) to represent Mondoo in any tenants and subscriptions. + +The app registration you create gives Mondoo read-only access to Azure resources, web apps, key vault, and Graph API. + +These instructions describe how to use Microsoft's "automatic" method of registering an Azure app. If you want to use your own certificates for authentication, if you use the [_key vault access policy_ permission model](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-access-policy), or if your Azure environment is unusually large, follow the instructions in [Manually Set up an Azure Integration](/platform/infra/cloud/azure/manual-reg-path/) instead. + +To configure your Azure resources, you must: + +Step A. Retrieve the subscription ID + +Step B. Create the app registration and certificate and grant READ access + +Step C. Grant web app and key vault READ permissions to the registered app + +Step D. Grant permissions to access Microsoft Graph (API permissions) + +### Step A: Retrieve your subscription ID and tenant ID + +You can give your app READ access to one or several subscriptions. + +1. In the Azure CLI, find the ID(s) of the subscription(s) you want to monitor by entering: + + ```bash + az account subscription list + ``` + + OR + + ```bash + az account list + ``` + +The Azure CLI provides information about all your subscriptions across all tenants. Each entry has an `id` value. + +2. Copy the `id` value for each of the subscriptions you want to integrate with Mondoo. Paste the value(s) somewhere handy to use later. + +3. Copy the `tenantId` value and paste it somewhere handy to use later. + +### Step B: Create the app, service principal, and certificate and grant READ access + +A single command in the Azure CLI performs these tasks: + +- Creates the application registration and service principal in Microsoft Entra ID + +- Grants READ access (using RBAC) to the new application at the defined level + +- Creates a certificate and assigns it to the newly created app + +In the Azure CLI, enter: + +```bash +az ad sp create-for-rbac --name mondoo-security --role Reader --scopes /subscriptions/YOUR-SUBSCRIPTION-ID --create-cert +``` + +For `YOUR-SUBSCRIPTION-ID`, substitute the `subscriptionId` value you copied in the instruction above. For example, this command creates a service principal and an application named `mondoo-security` that provides access to a subscription with the ID `e4e2600a-2d3d-2600-aa70-b9d8c8ec2600`: + +```bash +az ad sp create-for-rbac --name mondoo-security --role Reader --scopes /subscriptions/e4e2600a-2d3d-2600-aa70-b9d8c8ec2600 --create-cert +``` + +:::tip + +To scan multiple subscriptions, in the Azure CLI, provide multiple subscription IDs: + +```bash +az ad sp create-for-rbac --name mondoo-security --role Reader --scopes /subscriptions/YOUR-SUBSCRIPTION-ID-1 /subscriptions/YOUR-SUBSCRIPTION-ID-2 /subscriptions/YOUR-SUBSCRIPTION-ID-3 --create-cert +``` + +::: + +When successful, the Azure CLI returns results like these: + +```bash +"appId": "63c35483-c62f-2600-a097-a6e44d8dcdf6", +"displayName": "Mondoo", +"fileWithCertAndPrivateKey": "/Users/stella/tmpkqyme3rm.pem", +"password": null, +"tenant": "e4e2600a-2d3d-2600-aa70-b9d8c8ec2600" +``` + +Copy your results and paste them somewhere handy; you'll need them in later steps. + +Copy the created PEM file (in the example above, it's named tmpkqyme3rm.pem) and save it; you'll need it in later steps. + +:::tip + +In the Azure portal, you can make sure that the created application has the required READ access at the subscription level: Go to **Azure portal > [your subscription] > Access control (IAM) > Roles (choose Reader and View) > Assessments**. If you see the `mondoo-security` application, you've succeeded. + +::: + +### Step C: Grant web app and key vault READ permissions to the registered app + +:::note + +The key vault permissions below are from Microsoft's "Key Vault Reader" role. The [Microsoft documentation](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles) describes this role: + +> _Read metadata of key vaults and its certificates, keys, and secrets. Cannot read sensitive values such as secret contents or key material. Only works for key vaults that use the 'Azure role-based access control' permission model._ + +::: + +Follow these steps, substituting the subscription ID(s) you copied in Step A for YOUR-SUBSCRIPTION-ID: + +1. Copy this content and paste it into a new file named `mondoo-role.json`: + + ```json + { + "Name": "mondoo-role", + "IsCustom": true, + "description": "Custom role for Mondoo integration", + "assignableScopes": ["/subscriptions/YOUR-SUBSCRIPTION-ID"], + "actions": [ + "Microsoft.Authorization/*/read", + "Microsoft.ResourceHealth/availabilityStatuses/read", + "Microsoft.Insights/alertRules/*", + "Microsoft.Resources/deployments/*", + "Microsoft.Resources/subscriptions/resourceGroups/read", + "Microsoft.Support/*", + "Microsoft.Web/listSitesAssignedToHostName/read", + "Microsoft.Web/serverFarms/read", + "Microsoft.Web/sites/config/read", + "Microsoft.Web/sites/config/web/appsettings/read", + "Microsoft.Web/sites/config/web/connectionstrings/read", + "Microsoft.Web/sites/config/appsettings/read", + "Microsoft.web/sites/config/snapshots/read", + "Microsoft.Web/sites/config/list/action", + "Microsoft.Web/sites/read", + "Microsoft.KeyVault/checkNameAvailability/read", + "Microsoft.KeyVault/deletedVaults/read", + "Microsoft.KeyVault/locations/*/read", + "Microsoft.KeyVault/vaults/*/read", + "Microsoft.KeyVault/operations/read" + ], + "notActions": [], + "dataActions": [ + "Microsoft.KeyVault/vaults/*/read", + "Microsoft.KeyVault/vaults/secrets/readMetadata/action" + ], + "notDataActions": [] + } + ``` + + To integrate with more than one subscription, list them: + + ```bash + "assignableScopes": [ + + "/subscriptions/YOUR-SUBSCRIPTION-ID-1" + + "/subscriptions/YOUR-SUBSCRIPTION-ID-2" + + "/subscriptions/YOUR-SUBSCRIPTION-ID-3" + + ] + ``` + +2. Create a custom role in the specified subscription: + + ```bash + az role definition create --role-definition mondoo-role.json + ``` + +3. Make sure you successfully created the role: + + ```bash + az role assignment list --role mondoo-role --scope /subscriptions/YOUR-SUBSCRIPTION-ID + ``` + +4. Assign the created custom role to the app you registered: + + ```bash + az role assignment create --role mondoo-role --assignee --scope /subscriptions/YOUR-SUBSCRIPTION-ID + ``` + +### Step D: Grant permissions to access Microsoft Graph (API permissions) + +1. Copy this content and paste it into a new file on your local system named `app-manifest.json`: + +```json +[ + { + "resourceAppId": "00000003-0000-0000-c000-000000000000", + "resourceAccess": [ + { + "id": "246dd0d5-5bd0-4def-940b-0421030a5b68", + "type": "Role" + }, + { + "id": "e321f0bb-e7f7-481e-bb28-e3b0b32d4bd0", + "type": "Role" + }, + { + "id": "5e0edab9-c148-49d0-b423-ac253e121825", + "type": "Role" + }, + { + "id": "bf394140-e372-4bf9-a898-299cfc7564e5", + "type": "Role" + }, + { + "id": "6e472fd1-ad78-48da-a0f0-97ab2c6b769e", + "type": "Role" + }, + { + "id": "dc5007c0-2d7d-4c42-879c-2dab87571379", + "type": "Role" + }, + { + "id": "b0afded3-3588-46d8-8b3d-9842eff778da", + "type": "Role" + }, + { + "id": "7ab1d382-f21e-4acd-a863-ba3e13f7da61", + "type": "Role" + }, + { + "id": "197ee4e9-b993-4066-898f-d6aecc55125b", + "type": "Role" + }, + { + "id": "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30", + "type": "Role" + }, + { + "id": "f8f035bb-2cce-47fb-8bf5-7baf3ecbee48", + "type": "Role" + }, + { + "id": "dbb9058a-0e50-45d7-ae91-66909b5d4664", + "type": "Role" + }, + { + "id": "9e640839-a198-48fb-8b9a-013fd6f6cbcd", + "type": "Role" + }, + { + "id": "37730810-e9ba-4e46-b07e-8ca78d182097", + "type": "Role" + }, + { + "id": "c7fbd983-d9aa-4fa7-84b8-17382c103bc4", + "type": "Role" + } + ] + } +] +``` + +2. Execute these commands to grant the permissions in the JSON file and give administrator consent. For YOUR-APP-ID, substitute the `appId` value from the results you copied in Step B: + + ``` + az ad app update --id YOUR-APP-ID --required-resource-accesses @app-manifest.json + + az ad app permission admin-consent --id YOUR-APP-ID + ``` + +## Add a new Azure integration in the Mondoo Console + +After you've created, granted permissions to, and tested a new app registration, you can create a Mondoo Azure integration. You need some values from the app registration you created in the instructions above. + +1. Access the Integrations > Add > Azure page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Azure**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Cloud Security, select **Azure**. + + ![integration-create-image](/img/platform/infra/cloud/azure/add-int-azure-top.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Azure tenant. + +3. In the **Enter Application (client) ID** box, enter the value from the `appId` value you copied in Step B. + +4. In the **Enter the Directory (tenant) ID** box, enter the `tenantId` value you copied in Step A. + +5. Specify the subscriptions for Mondoo to continuously scan. You copied at least one subscription ID in step A. + + - To continuously scan all subscriptions in the tenant, leave the **Scan all subscriptions connected to the Directory (tenant) ID** toggle enabled. + + - To choose the subscriptions to scan, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Allowlist, and enter the subscription ID to scan. + + - To scan **all** subscriptions except those you specify, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Denylist, and enter the names of the subscriptions you don't want Mondoo to scan. + +6. To automatically discover all Linux and Windows VMs in your subscription and scan them using Azure Run Command, select **Scan Azure VMs using Run Command**. + +7. Provide the certificate (a [PEM](https://aboutssl.org/what-is-pem-certificate-file/) (privacy-enhanced mail) file) for Mondoo to securely authenticate with the app (service principal) you created. You created this certificate in Step B. + + The certificate file must have the `.pem` extension and must contain both the private key and the certificate in this order: + + ``` + -----BEGIN PRIVATE KEY----- + key goes here + -----END PRIVATE KEY----- + -----BEGIN CERTIFICATE----- + certificate goes here + -----END CERTIFICATE----- + ``` + + Upload the certificate to Mondoo: In the **Drag and drop your .pem file here** box, select the cloud icon and choose the file to upload. + + ![integration-create-image](/img/platform/infra/cloud/azure/add-int-azure-bottom.png) + +8. Select the **START SCANNING** button. + +9. On the Recommended Policies page, enable the policies on which you want to base assessments of your Azure environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +10. Select **FINALIZE SETUP**. + +Mondoo begins scanning your Azure resources. When it completes, you can see results on the INVENTORY page. To learn more, read [Monitor Your Infrastructure Security](/platform/security/posture/monitor/). + +If your integration is unsuccessful, read [Troubleshoot an Azure Configuration](/platform/infra/cloud/azure/troubleshoot/). + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Integrate Mondoo with other cloud platforms in your infrastructure](/platform/infra/cloud/overview/) + +--- diff --git a/docs/platform/infra/cloud/azure/manual-reg-path.mdx b/docs/platform/infra/cloud/azure/manual-reg-path.mdx new file mode 100644 index 000000000..63fc58231 --- /dev/null +++ b/docs/platform/infra/cloud/azure/manual-reg-path.mdx @@ -0,0 +1,292 @@ +--- +title: Manual Setup - Azure Continuous Scanning +sidebar_label: Manual Setup - Azure Continuous Scanning +sidebar_position: 5 +description: Take the manual approach to configuring the Mondoo Azure Integration to scan Azure resources. +image: /img/featured_img/mondoo-azure.jpg +--- + +Mondoo integration with Azure requires that you register and grant permissions to an Azure app. Follow this "manual" approach to app registration and configuration if: + +- You want to use your own certificates for authentication + +- You use the [key vault access policy](https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-access-policy) permission model for your key vaults + +- Your unique Azure infrastructure doesn't support Microsoft's "automatic" app registration method + +- You followed the steps in [Continuously Scan an Azure Management Group](/platform/infra/cloud/azure/azure-integration-scan-group/) or [Continuously Scan an Azure Subscription](/platform/infra/cloud/azure/azure-integration-scan-subscription/) and didn't successfully integrate Mondoo with Azure. + +## Prerequisites + +Before you integrate Microsoft Azure with Mondoo, be sure you have: + +- A [Mondoo account](/platform/start/plat-start-acct/) with Editor or Owner permissions for the space in which you want to add the integration. + +- An [Azure account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) with an active subscription and permission to manage applications in Microsoft Entra ID (formerly Active Directory). Any of these [Entra built-in roles](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) include the required permissions: + + - [Global Administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#global-administrator) + + - [Application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#application-administrator) + + - [Cloud application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#cloud-application-administrator) + + In the Azure portal you can see what roles your user account has: Go to **Microsoft Entra ID > Users > (your user account) > Assigned roles**. + +- Command-line access to Azure using either: + + - [Azure Cloud Shell](https://learn.microsoft.com/en-us/azure/cloud-shell/quickstart?tabs=azurecli) + + -
+ + The Azure CLI in either the Linux shell or the macOS shell + +
+
    +
  1. + + Install the Azure CLI. + +
  2. +
  3. + Log into the Azure CLI from PowerShell or a Linux/macOS CLI by + entering: +
    + az login +
    + Azure opens your web browser and prompts you to log in. After you do + so, you can return to the CLI. +
  4. +
+
+
+ +## Register and grant permissions to an Azure app + +Like any service that integrates with Azure, Mondoo must have Microsoft Entra ID app registration in your Azure tenant. To learn more about creating a new app registration and service principal, read [App registration, app objects, and service principals](https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#app-registration-app-objects-and-service-principals) in the Azure documentation. + +Registering Mondoo with Entra establishes a trust relationship between Mondoo and the Microsoft identity platform. The trust is unidirectional: Mondoo trusts the Microsoft identity platform, and not the other way around. The Entra app registration creates a [service principal](https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-how-applications-are-added#what-are-service-principals-and-where-do-they-come-from) to represent Mondoo in any tenants and subscriptions. + +The app registration you create gives Mondoo read-only access to Azure resources, web apps, key vault, and Graph API. + +To configure your Azure resources, you must: + +Step A: Register an app with Microsoft Entra ID and create a service principal + +Step B: Grant permissions to access Microsoft Graph (API permissions) + +Step C: Grant required READ permissions to the app + +Step D: Grant web app READ permissions to the app + +Step E: Grant permissions to access Azure key vault + +Step F: Upload the application certificate + +### Step A: Register an app with Microsoft Entra ID and create a service principal + +Like any service that integrates with Azure, Mondoo must have an app registration. To learn more about creating a new app registration, read [App registration, app objects, and service principals](https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#app-registration-app-objects-and-service-principals) in the Azure documentation. + +1. Log into the [Azure portal](https://portal.azure.com/) as a global administrator, application administrator or cloud application administrator. + +2. Find and select **Microsoft Entra ID**. + +3. In the navigation sidebar, select **App registrations**. + + ![Azure app registrations](/img/platform/infra/cloud/azure/app-regs.png) + +4. Select **+ New registration**. + + ![Create a new app registration in Azure](/img/platform/infra/cloud/azure/new-app-reg.png) + +5. Enter an application name (such as `mondoo-security`) and select **Accounts in this organizational directory only** as the supported account type. Mondoo does not require an application redirect URI. + +6. Select the **Register** button. + + Microsoft creates the application ID and displays it in the application registration overview. + + ![new app registration in Azure](/img/platform/infra/cloud/azure/after-new-app-reg.png) + + Keep the page open as you continue to the next step. + +### Step B: Grant permissions to access Microsoft Graph (API permissions) + +import Graph from "./_include-graph.mdx"; + +{" "} + +### Step C: Grant required READ permissions to the app + +These steps guide you through setting the READ permissions and "Key Vault Reader" permissions for a single subscription. If you want to scan several subscriptions, you must repeat the same steps for each subscription. + +If you want Mondoo to monitor an entire management group, you can perform these steps at the management group level: Search for "management groups" in the Azure portal and then select the management group you want to monitor. To monitor the entire directory, select the **tenant root** group. + +Set subscription-level permissions for your new app registration: + +1. From the Azure portal home, select **Subscriptions**. + + ![Azure subscriptions](/img/platform/infra/cloud/azure/subscriptions.png) + +2. Select the subscription you want to integrate with Mondoo. + + ![Azure subscription](/img/platform/infra/cloud/azure/add-int-azure-subscription.png) + +3. In the sidebar under the subscription name, select **Access control (IAM)**. + +4. Select the **Add role assignment** button. + +5. Select the **Reader** role and then select the Members tab (or Next button). + + ![Azure Subscription Role Assignment](/img/platform/infra/cloud/azure/add-int-azure-role-member.png) + +6. Select **+ Select Members**, find and select your Mondoo app registration, and select the **Select** button. + + ![Azure Subscription Role Member Assignment](/img/platform/infra/cloud/azure/add-int-azure-select-member.png) + +7. Select the **Review + assign** button (or Next button), check your work, and then select the **Review + assign** button again to assign the Reader role to your Mondoo app registration. + +8. Repeat steps 4-7 and this time choose the **"Key Vault Reader"** role in step 5. + + Keep the Access control (IAM) page open as you continue to Step D. + +### Step D: Grant web app READ permissions to the app + +import Webapp from "./_include-webapp.mdx"; + +{" "} + +### Step E: Grant permissions to access Azure key vault + +:::note + +There are two permission models for key vaults: role-based access control (RBAC) and key vault access policy. + +See what permission model your key vault uses: In the Azure portal, view the key vault's **Access configuration** settings. (You can easily change it to RBAC.) + +::: + +If you are using the RBAC for the key vault, there is no need for further actions; the READ permissions on the key vault will be applied by the "Key Vault Reader" subscription permissions applied in Step C. + +import Keyvault from "./_include-keyvault.mdx"; + +{" "} + +### Step F: Upload the application certificate. + +The app registration and your Mondoo integration must share a [PEM](https://aboutssl.org/what-is-pem-certificate-file/) (privacy-enhanced mail) certificate for secure authentication. The certificate must not be password protected. + +Create a PEM certificate using the method approved by your organization's security team. You need two files: + +- The file you upload to Azure must have only the certificate, not the private key. + +- The file you upload to Mondoo Console (in the [Add a new Azure integration in the Mondoo Console](#add-a-new-azure-integration-in-the-mondoo-console) section below) must have both the private key and the certificate. It must have a `.pem` extension and must use this format and order of information: + + ``` + -----BEGIN PRIVATE KEY----- + key goes here + -----END PRIVATE KEY----- + -----BEGIN CERTIFICATE----- + certificate goes here + -----END CERTIFICATE----- + ``` + +
+Generate a self-signed certificate for testing + +For testing purposes only, you can use OpenSSL toolkit together with req to generate a certificate. Run this command in Linux shell, macOS shell, or Azure Cloud shell (bash): + +``` +openssl req -newkey rsa:4096 -x509 -sha512 -days 365 -nodes -out certificate.pem -keyout privatekey.key +``` + +Add the private key to the beginning of the PEM file: + +``` +cat privatekey.key certificate.pem > certificate.combo.pem +``` + +
+ +Upload the certificate to Azure: + +1. From the Azure portal home, select **Microsoft Entra ID**. + +2. In the navigation sidebar, select **App registrations**. + +3. Select the app you created. + +4. In the sidebar under the app name, select **Certificate & secrets**. + +5. Select **Certificates** and then select **Upload certificate**. + +6. Select the PEM certificate and enter a description, such as `Mondoo certificate`. + +:::info + +Be sure to choose the file containing only the certificate, not the private key. + +::: + +7. Select the **Add** button. + +## Add a new Azure integration in the Mondoo Console + +After you've created, granted permissions to, and tested a new app registration, you can create a Mondoo Azure integration. You need some values from the app registration you created in the instructions above. + +1. Access the Integrations > Add > Azure page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Azure**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Cloud Security, select **Azure**. + + ![integration-create-image](/img/platform/infra/cloud/azure/add-int-azure-top.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Azure tenant. + +3. In the **Enter Application (client) ID** box, enter the value from the app registration's **Application (client) ID** box. + +4. In the **Enter the Directory (tenant) ID** box, enter the value from the app registration's **Directory (tenant) ID** box. + +5. Specify the subscriptions for Mondoo to continuously scan. + + - To continuously scan all subscriptions in the tenant, leave the **Scan all subscriptions connected to the Directory (tenant) ID** toggle enabled. + + - To choose the subscriptions to scan, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Allowlist, and enter the subscription ID to scan. + + - To scan **all** subscriptions except those you specify, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Denylist, and enter the names of the subscriptions you don't want Mondoo to scan. + +6. To automatically discover all Linux and Windows VMs in your subscription and scan them using Azure Run Command, select **Scan Azure VMs using Run Command**. + +7. Provide a certificate (a [PEM](https://aboutssl.org/what-is-pem-certificate-file/) (privacy-enhanced mail) file) for Mondoo to securely authenticate with the app (service principal) you created. + + The certificate file must have the `.pem` extension and must contain both the private key and the certificate in this order: + + ``` + -----BEGIN PRIVATE KEY----- + key goes here + -----END PRIVATE KEY----- + -----BEGIN CERTIFICATE----- + certificate goes here + -----END CERTIFICATE----- + ``` + + Upload the certificate to Mondoo: In the **Drag and drop your .pem file here** box, select the cloud icon and choose the file to upload. + + ![integration-create-image](/img/platform/infra/cloud/azure/add-int-azure-bottom.png) + +8. To complete the integration, select the **START SCANNING** button. + +9. On the Recommended Policies page, enable the policies on which you want to base assessments of your Azure environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +10. Select **FINALIZE SETUP**. + +Mondoo begins scanning your Azure resources. When it completes, you can see results on the INVENTORY page. To learn more, read [Monitor Your Infrastructure Security](/platform/security/posture/monitor/). + +If your integration is unsuccessful, read [Troubleshoot an Azure Configuration](/platform/infra/cloud/azure/troubleshoot/). + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Integrate Mondoo with other cloud platforms in your infrastructure](/platform/infra/cloud/overview/) diff --git a/docs/platform/infra/cloud/azure/overview.mdx b/docs/platform/infra/cloud/azure/overview.mdx new file mode 100644 index 000000000..56920c133 --- /dev/null +++ b/docs/platform/infra/cloud/azure/overview.mdx @@ -0,0 +1,39 @@ +--- +title: Secure Azure with Mondoo +sidebar_label: Overview +sidebar_position: 1 +description: Use Mondoo to assess your Microsoft Azure configurations and identify risks to your infrastructure +image: /img/featured_img/mondoo-azure.jpg +--- + +Trust Mondoo to secure your Microsoft Azure environment. Mondoo identifies vulnerabilities and misconfigurations in compute instances, databases, networks, and more. + +Mondoo offers a variety of approaches to evaluating your Azure infrastructure security. You can continuously scan your Azure subscriptions, evaluate builds before they go to production, and run ad hoc scans. + +## Continuously scan + +Continuously evaluate the security of your Azure resources, such as compute instances, so that you always have an up-to-date view of your environment's security posture. + +With the API-driven Mondoo Azure Integration, you deploy the integration once and always get the latest security assessments for new accounts and resources: + +- [Quick Setup - Azure Subscription Continuous Scanning](/platform/infra/cloud/azure/azure-integration-scan-subscription) + +## Scan during build time + +- [Risk assessment for Azure Container Registry](/cnspec/supplychain/registry/azure_acr.md) + +- [Build VM Images with Packer](/cnspec/supplychain/packer.md) + +## Scan during run time + +- [Scan an Azure subscription from your workstation using cnspec](/cnspec/cnspec-azure/) + +- [Install cnspec via cloud-init](/platform/infra/opsys/automation/cloudinit.md) + +- [Terraform deployment](/cnspec/supplychain/terraform.md) + +- [Verify instances managed by Chef/AWS OpsWorks](/platform/infra/opsys/automation/chef.md) + +- [Verify instances managed by Ansible](/platform/infra/opsys/automation/ansible.md) + +--- diff --git a/docs/platform/infra/cloud/azure/troubleshoot.mdx b/docs/platform/infra/cloud/azure/troubleshoot.mdx new file mode 100644 index 000000000..fac7d5742 --- /dev/null +++ b/docs/platform/infra/cloud/azure/troubleshoot.mdx @@ -0,0 +1,78 @@ +--- +title: Test or troubleshoot an Azure Integration +sidebar_label: Troubleshoot Azure +sidebar_position: 4 +description: Troubleshoot integrations between Mondoo and Microsoft Azure. +image: /img/featured_img/mondoo-azure.jpg +--- + +Test your Azure configuration to ensure that the app registration and all the permissions are configured properly. You can do so using Mondoo's open source security scanning CLI, cnspec. + +## Scan with cnspec + +1. From your terminal, download the latest cnspec package from here: [https://releases.mondoo.com/cnspec/](https://releases.mondoo.com/cnspec/) + + Example: + + ```bash + wget https://releases.mondoo.com/cnspec/8.9.0/cnspec_8.9.0_linux_amd64.tar.gz + tar -xvf cnspec_8.9.0_linux_amd64.tar.gz + ``` + +2. Scan your Azure platform: + +```bash +./cnspec scan azure --subscription YOUR-SUBSCRIPTION-ID --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --certificate-path certificate.combo.pem --policy-bundle mondoo-azure-security.mql.yaml +``` + +For `YOUR-SUBSCRIPTION-ID`, `YOUR-TENANT-ID`, and `YOUR-CLIENT-ID`, substitute your Azure information. The client ID is also called the application ID or app ID. + +Pay special attention to the queries showing `Error` results; they can result from improper permissions. + +## Troubleshoot: Scan with cnspec using a client secret + +If the scan above is unsuccessful, try using a client secret to authenticate and scan. + +1. Create a client secret: + + a. From the Azure portal home, select **Microsoft Entra ID**. + + b. In the navigation sidebar, select **App registrations**. + + c. Select the app you created for Mondoo. + + d. In the sidebar under the app name, select **Certificate & secrets**. + + e. Select **New client secret**. + + f. Enter a description for the client secret. + + g. For **Duration**, specify a time after which the secret expires. + + h. Select **Add** and quickly record the `Value`; it will disappear shortly. + +2. Scan with cnspec using the client secret: + + ```bash + ./cnspec scan azure --subscription YOUR-SUBSCRIPTION-ID --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --client-secret YOUR-CLIENT-SECRET-VALUE --policy-bundle mondoo-azure-security.mql.yaml + ``` + + For `YOUR-SUBSCRIPTION-ID`, `YOUR-TENANT-ID`, and `YOUR-CLIENT-ID`, substitute your Azure information. + + For `YOUR-CLIENT-SECRET-VALUE`, substitute the value you recorded above. + + If this scan is successful after the first scan was unsuccessful, then the issue is with your certificate. Follow the steps above again to provide a new certificate. + +## Troubleshoot: Scan with cnspec using direct authentication + +If you suspect that the problem is related to the app, it's helpful to scan using direct authentication. This only works if your current user account has adequate privileges. + +```bash +./cnspec scan azure --subscription YOUR-SUBSCRIPTION-ID --policy-bundle mondoo-azure-security.mql.yaml +``` + +For `YOUR-SUBSCRIPTION-ID`, substitute your Azure subscription ID. + +## Troubleshoot: Manually register and configure a new app + +If you're unsuccessful with these troubleshooting approaches, try using the Microsoft's "manual" method for creating and configuring an app registration: read [Manually Set up an Azure Integration](/platform/infra/cloud/azure/manual-reg-path/). diff --git a/docs/platform/infra/cloud/gcp/_category_.json b/docs/platform/infra/cloud/gcp/_category_.json new file mode 100644 index 000000000..6d5843ad2 --- /dev/null +++ b/docs/platform/infra/cloud/gcp/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "GCP", + "position": 4 +} diff --git a/docs/platform/infra/cloud/gcp/gcp-integration-scan.mdx b/docs/platform/infra/cloud/gcp/gcp-integration-scan.mdx new file mode 100644 index 000000000..c6a0368fe --- /dev/null +++ b/docs/platform/infra/cloud/gcp/gcp-integration-scan.mdx @@ -0,0 +1,83 @@ +--- +title: Continuously Scan with a GCP Integration +sidebar_label: Scan Continuously +sidebar_position: 2 +description: This document covers the configuration and use of the Mondoo Google Cloud Platform (GCP) Integration to scan GCP projects +image: /img/featured_img/mondoo-gcp.jpg +--- + +The Mondoo Google Cloud Platform (GCP) integration lets you continuously scan your GCP resources, such as compute instances and GKE service clusters. + +## Requirements + +- Create Service Accounts role in GCP +- The GCP IAM API enabled +- The GCP CLI + +## Create a service account for your GCP integration + +To access the data it needs, your GCP integration needs a GCP service account. To learn about service accounts, read [Understanding service accounts](https://cloud.google.com/iam/docs/understanding-service-accounts) in the Google documentation. + +1. Create a new GCP service account for the Mondoo integration to use. + + For instructions, read [Creating and managing service accounts](https://cloud.google.com/iam/docs/creating-managing-service-accounts#iam-service-accounts-create-gcloud) in the Google documentation. + + Note the email address created for the new service account. + +2. Assign the project viewer basic role to the service account: `roles/viewer` + + For instructions, read [Grant a single role](https://cloud.google.com/iam/docs/granting-changing-revoking-access#grant-single-role) in the Google documentation. + +3. Create a JSON key for the service account. + + For instructions, read [Create and manage service account keys](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-get-gcloud) in the Google documentation. + + Save the JSON file that downloads to your workstation when you create the key. You need it to configure the integration (in the next section below). + +## Add a new GCP integration + +1. Access the Integrations > Add > GCP page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **GCP**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Cloud Security, select **GCP**. + + ![integration-create-image](/img/platform/infra/cloud/gcp/add-int-gcp-top.png) + +2. To integrate your entire GCP organization with Mondoo, select **Organization**. + + OR + + To limit the integration to a single project, select **Project**. + +3. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the GCP project or organization. + +4. Identify the organization or project to integrate with Mondoo. + + - For an organization: In the **Enter the organization resource ID** box, enter your organization's resource ID. To learn how to retrieve this value, read [Getting your organization resource ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id) in the Google documentation. + + - For a project: In the **Enter the project ID** box, enter your project's ID. To learn how to retrieve this value, read [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) in the Google documentation. + +5. Under **Provide your Google Service Account config**, upload the GCP service account's JSON key that you downloaded in the previous section: + + Drag the file and drop it in the **Drag and drop your .json file here** box. + + OR + + In the **Drag and drop your .json file here** box, select the cloud icon and choose the file to upload. + + ![integration-create-image](/img/platform/infra/cloud/gcp/add-int-gcp-bottom.png) + +6. To complete the integration, select the **START SCANNING** button. + +7. On the Recommended Policies page, enable the policies on which you want to base assessments of your Google Cloud environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Integrate Mondoo with other cloud platforms in your infrastructure](/platform/infra/cloud/overview/) + +--- diff --git a/docs/platform/infra/cloud/gcp/overview.mdx b/docs/platform/infra/cloud/gcp/overview.mdx new file mode 100644 index 000000000..696515798 --- /dev/null +++ b/docs/platform/infra/cloud/gcp/overview.mdx @@ -0,0 +1,32 @@ +--- +title: Secure Google Cloud Platform (GCP) with Mondoo +sidebar_label: Overview +sidebar_position: 1 +description: Use Mondoo to assess your Google Cloud Platform (GCP) configurations and identify risks to your infrastructure +image: /img/featured_img/mondoo-gcp.jpg +--- + +Rely on Mondoo to secure your Google Cloud Platform (GCP) environment. Mondoo identifies vulnerabilities and misconfigurations in compute instances, Dataproc and GKE clusters, Pub/Sub, and more. + +Mondoo offers a variety of approaches to evaluating your GCP infrastructure security. You can continuously scan your GCP projects, evaluate builds before they go to production, and run ad hoc scans. + +## Continuously scan + +Continuously evaluate the security of your GCP resources, such as compute instances, so that you always have an up-to-date view of your environment's security posture. + +With the [Mondoo GCP Integration](/platform/infra/cloud/gcp/gcp-integration-scan), you deploy the integration once and always get the latest security assessments for new accounts and resources. + +## Scan during build time + +- [Build secure VM images in Google Cloud with cnspec and HashiCorp Packer](/cnspec/cnspec-gcp/cnspec-gcp-packer/) +- [Assess risk in the Google Cloud Container Registry](/cnspec/supplychain/registry/gcp_gcr.md) +- [Build GCE custom images with HashiCorp Packer](/cnspec/supplychain/packer.md) + +## Scan during run time + +- [Scan a Google Cloud project with cnspec](/cnspec/cnspec-gcp/) +- [Terraform deployment](/cnspec/supplychain/terraform.md) +- [Verify instances managed by Chef/AWS OpsWorks](/platform/infra/opsys/automation/chef.md) +- [Verify instances managed by Ansible](/platform/infra/opsys/automation/ansible.md) + +--- diff --git a/docs/platform/infra/cloud/kubernetes/.gitkeep b/docs/platform/infra/cloud/kubernetes/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/platform/infra/cloud/kubernetes/_category_.json b/docs/platform/infra/cloud/kubernetes/_category_.json new file mode 100644 index 000000000..6089c0a5f --- /dev/null +++ b/docs/platform/infra/cloud/kubernetes/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Kubernetes", + "position": 4 +} diff --git a/docs/platform/infra/cloud/kubernetes/cli.md b/docs/platform/infra/cloud/kubernetes/cli.md new file mode 100644 index 000000000..34fe9e6f1 --- /dev/null +++ b/docs/platform/infra/cloud/kubernetes/cli.md @@ -0,0 +1,54 @@ +--- +title: Scan From Your Workstation +sidebar_label: Scan From Your Workstation +sidebar_position: 2 +image: /img/featured_img/mondoo-kubernetes.jpg +description: This document provides detailed information on how to scan Kubernetes clusters from your workstation +--- + +Mondoo's security assessment CLI, cnspec, makes it easy to secure your Kubernetes cluster and all running workloads. + +:::note + +To ensure the maximum security, we recommend scanning container images before they are deployed into production, such as within a CI/CD pipelines or within a container registry. To learn more, read the [Mondoo CI/CD Overview](/platform/infra/supply/cicd/overview/). + +::: + +## Requirements + +To scan a Kubernetes cluster with Mondoo's cnspec CLI, you must install and set up [kubectl](https://kubernetes.io/docs/tasks/tools/) to communicate with your cluster. Make sure you can see your pods: + +```shell +kubectl get pods +NAME READY STATUS RESTARTS AGE +luna-frontend-7fb96c846b-jjnhz 1/1 Running 0 30d +luna-frontend-7fb96c846b-tmg95 1/1 Running 0 30d +luna-frontend-7fb96c846b-xrl6c 1/1 Running 0 30d +postgresql-5bb9d69b96-d9zzg 1/1 Running 0 30d +``` + +## Scan + +Mondoo leverages the configuration from `kubectl`. No additional configuration is required. To scan all namespaces, run: + +```shell +cnspec scan k8s +``` + +### Scanning container images in pods + +To optionally scan container images defined in Kubernetes pods run: + +```shell +cnspec scan k8s --discover container-images +``` + +### Scanning specific namespaces + +By default Mondoo will scan all Kubernetes namespace. To target a specific namespace use the `--namespace` flag: + +```shell +cnspec scan k8s --namespace EXAMPLE_NAMESPACE +``` + +--- diff --git a/docs/platform/infra/cloud/kubernetes/overview.md b/docs/platform/infra/cloud/kubernetes/overview.md new file mode 100644 index 000000000..ecf0bffe7 --- /dev/null +++ b/docs/platform/infra/cloud/kubernetes/overview.md @@ -0,0 +1,25 @@ +--- +title: Secure Kubernetes with Mondoo +sidebar_label: Overview +sidebar_position: 1 +image: /img/featured_img/mondoo-kubernetes.jpg +description: Overview of Mondoo for Kubernetes clusters +--- + +Mondoo provides full-stack security assessment for your Kubernetes infrastructure. With Mondoo, you can continuously monitor your deployed clusters for vulnerabilities and misconfigurations. + +Mondoo can integrate with your Kubernetes CI/CD lifecycle: Automatically scan images, Kubernetes manifests, and registries to reveal issues before pushing them to production. + +Rely on Mondoo to protect the infrastructure your cluster runs on: automatically scan nodes for misconfigurations and CVEs. + +Learn how to: + +- [Continuously Scan Kubernetes with the Mondoo Kubernetes Operator](/platform/infra/cloud/kubernetes/scan-kubernetes-with-operator) + +- [Run ad hoc security Kubernetes scans from your workstation](/cnspec/cnspec-k8s/) + +- [Scan Kubernetes manifests](/cnspec/cnspec-k8s/cnspec-k8s-manifest) + +- [Integrate Mondoo with CI/CD systems](/platform/infra/supply/cicd/overview) + +--- diff --git a/docs/platform/infra/cloud/kubernetes/scan-kubernetes-with-operator.md b/docs/platform/infra/cloud/kubernetes/scan-kubernetes-with-operator.md new file mode 100644 index 000000000..8be053428 --- /dev/null +++ b/docs/platform/infra/cloud/kubernetes/scan-kubernetes-with-operator.md @@ -0,0 +1,86 @@ +--- +title: Continuously Scan Kubernetes with the Mondoo Kubernetes Operator +sidebar_label: Scan Continuously +description: This guide covers how you can continuously assess the security configuration of your Kubernetes cluster, nodes, and deployments with Mondoo. +image: /img/featured_img/mondoo-kubernetes.jpg +--- + +The Mondoo Kubernetes Operator is Mondoo software that runs in your Kubernetes environment. Working within your cluster, the Mondoo Operator can: + +- Continuously scan nodes to assess security and identify vulnerabilities + +- Continuously scan the cluster to assess security and identify vulnerabilities + +- Scan new nodes as they come online + +The operator includes a Kubernetes admission controller that performs a security scan on each deployment introduced into the cluster and reports the results. [Learn more.](/cnspec/cnspec-k8s/) + +### Add a Mondoo Kubernetes integration + +To set up a Mondoo Kubernetes operator integration, access the Integrations > Add > GCP page in one of two ways: + +- New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Kubernetes**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + +- INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Cloud Security, select **Kubernetes**. + +### Configure a Mondoo Kubernetes integration + +![k8s-settings](/img/platform/infra/cloud/kubernetes/integration-setup.png) + +1. Type a name for the integration. This name identifies the integration in lists and distinguishes it from other integrations in your space. You can't change the name after you leave this page. + +2. To continuously assess the security posture of nodes in your Kubernetes cluster, enable **Scan nodes**. + +3. To continuously assess the security posture of workloads and resources in your cluster, enable **Scan workloads**. + +4. To assess the security of every change applied to your Kubernetes cluster and display the results in the CI/CD view, enable **Scan incoming deployments**. + +5. If you enable **Scan incoming deployments**, choose the tool to use for managing the Mondoo admission controller's certificates: **cert-manager** or **OpenShift**. + +### Scanning incoming deployments + +Whenever a supported workload type is created or updated, the Kubernetes admission controller scans it. +Currently, the admission controller can scan these workload types: + +- Pods +- Deployments +- DaemonSets +- StatefulSets +- Jobs +- CronJobs + +If a workload is dependent on another workload, the admission controller only scans the owner workload. For example, if a Deployment creates a pod, the admission controller skips the pod and scans the Deployment. +The owner workload is the definition where you can fix issues permanently. +For more details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/). + +Mondoo scans workloads according to the activated policies. [Learn more](/platform/security/posture/overview) + +Scan results appear in the CI/CD view when running the admission webhook in **permissive** mode. +In **enforcing** mode, the scan result also determines whether the workload is applied to the cluster. +For general information about admission controllers, see the [Kubernetes documentation](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/). + +## View Kubernetes integrations + +Once you've added a Kubernetes Operator Integration you can view these integrations by going to the **Integrations** page and selecting **Kubernetes** + +![k8s-integrations-list](/img/platform/infra/cloud/kubernetes/integration-list.png) + +To view additional status details or change an integration's configuration, select its row in the list. + +![k8s-integration-detail](/img/platform/infra/cloud/kubernetes/integration-details.png) + +## Remove Kubernetes integrations + +1. Follow the instructions above to view your Kubernetes integrations. + +2. On the Kubernetes Integrations page, select the pencil icon. + +3. Find the integration you want to remove and check the box beside it. + +4. On the **Edit Selection** menu, select **Remove** and then select the **Done** button. + +![remove-k8s-integration](/img/platform/infra/cloud/kubernetes/integration-delete.png) + +--- diff --git a/docs/platform/infra/cloud/oci.mdx b/docs/platform/infra/cloud/oci.mdx new file mode 100644 index 000000000..0bf8e9582 --- /dev/null +++ b/docs/platform/infra/cloud/oci.mdx @@ -0,0 +1,94 @@ +--- +title: Secure Oracle Cloud Infrastructure (OCI) with Mondoo +sidebar_label: Oracle Cloud Infrastructure (OCI) +sidebar_position: 7 +description: Continuously secure your Oracle Cloud Infrastructure (OCI) environment with Mondoo +image: /img/featured_img/mondoo-oracle.jpg +--- + +Rely on Mondoo to continuously secure your Oracle Cloud (OCI) environment. Mondoo regularly checks your OCI tenancy for misconfigurations and vulnerabilities that can put your organization at risk. + +Create an OCI integration to give Mondoo the access it needs to assess your tenancy. + +## Prerequisites + +- Owner or Editor access to the Mondoo space where you want to add the OCI integration + +- Access to an OCI tenancy + +## Add an OCI integration + +1. In the [Mondoo Console](https://console.mondoo.com), access the Integrations > Add > Oracle Cloud Infrastructure page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Oracle Cloud Infrastructure**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Cloud, select **Oracle Cloud Infrastructure**. + + ![Cloud integrations](/img/platform/infra/add-cloud.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the OCI tenancy. + + ![Add an Oracle Cloud Infrastructure - OCI - Mondoo integration](/img/platform/infra/oci/add-oci-top.png) + +3. In a different browser tab, log into the [Oracle Cloud Console](https://cloud.oracle.com). + +4. In the top-right corner of the Oracle Cloud Console, select the User Profile icon and select My Profile. + + ![OCI - my profile](/img/platform/infra/oci/my-profile.png) + +5. In the bottom-left Resources menu, select **API keys** and select the **Add API key** button. + + ![OCI - API keys](/img/platform/infra/oci/select-api-keys.png) + +To learn about API keys, read [Required Keys and OCIDs](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm) in the OCI documentation. + +6. Select the **Download private key** button to download a PEM certificate to use for the Mondoo OCI integration. + + ![OCI - Add API key](/img/platform/infra/oci/add-api-key.png) + +7. Select the **Add** button. + + OCI shows a configuration file snippet. Select **Copy** to copy the snippet. + + ![OCI configuration file snippet](/img/platform/infra/oci/config-file.png) + +8. Return to the tab where you're creating an integration in the Mondoo Console. In the **Provide the config file snippet** box, paste the snippet you copied. + + ![Add a Mondoo OCI integration](/img/platform/infra/oci/add-oci-bottom.png) + +9. Upload the PEM certificate that you downloaded when you added an OCI API key: In the **Drag and drop your .pem file here** box, select the cloud icon and choose the file to upload. + +10. Select the **START SCANNING** button. + +11. On the Recommended Policies page, enable the policies on which you want to base assessments of your OCI environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +## View your OCI integration + +1. In the side navigation bar, under Integrations, select **Oracle Cloud Infrastructure**. + + ![OCI integrations list](/img/platform/infra/oci/oci-int-list.png) + +2. In the list of OCI integrations, select the integration you want to view. + + ![OCI integration](/img/platform/infra/oci/view-oci-int.png) + +### Statuses + +The possible statuses for an OCI integration are: + +- **ACTIVE**: The integration is active/healthy. +- **ERROR**: Mondoo detected an error when attempting to scan. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering scans of the OCI tenancy. + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Secure other platforms](/platform/infra/overview) + +--- diff --git a/docs/platform/infra/cloud/overview.md b/docs/platform/infra/cloud/overview.md new file mode 100644 index 000000000..b0f6c50b4 --- /dev/null +++ b/docs/platform/infra/cloud/overview.md @@ -0,0 +1,39 @@ +--- +title: Overview of Cloud Security with Mondoo +sidebar_label: Overview +sidebar_position: 1 +description: This page provides an overview of how you can use Mondoo to secure both your public cloud (AWS, Google Cloud, Azure), private cloud (VMware), Kubernetes, as well as SaaS services such as Microsoft 365. +image: /img/featured_img/mondoo-feature.jpg +--- + +With Mondoo, you can ensure that your cloud infrastructure is free of security vulnerabilities and complies with your security standards. Mondoo identifies cloud misconfigurations and CVEs that put your organization at risk. It scans all of your cloud environments to expose gaps before attackers can find them. + +## Cloud platforms + +Mondoo's cloud integrations make risk assessments easy: + +- [Amazon Web Services (AWS)](/platform/infra/cloud/aws/aws-overview/) + +- [Google Cloud Platform (GCP)](/platform/infra/cloud/gcp/overview/) + +- [Kubernetes](/platform/infra/cloud/kubernetes/overview/) + +- [Microsoft Azure](/platform/infra/cloud/azure/overview/) + +- [Oracle Cloud Infrastructure (OCI)](/platform/infra/cloud/oci/) + +- [VMware vSphere](/platform/infra/cloud/vmware/) + +## Learn more + +- **[SaaS security](/platform/infra/saas/overview/)** + +- **[Software supply chain security](/platform/infra/supply/overview/)** + +- **[Server and endpoint security](/platform/infra/opsys/osoverview/)** + +- **[Deployment automation](/platform/infra/opsys/automation/overview/)** + +## Get help + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. diff --git a/docs/platform/infra/cloud/vmware.md b/docs/platform/infra/cloud/vmware.md new file mode 100644 index 000000000..bfb340597 --- /dev/null +++ b/docs/platform/infra/cloud/vmware.md @@ -0,0 +1,537 @@ +--- +title: Secure VMware with Mondoo +sidebar_label: VMware +sidebar_position: 7 +description: This page covers how you can use Mondoo to assess VMware vSphere and ESXi hosts for advisories, vulnerabilities, and security misconfigurations. +image: /img/featured_img/mondoo-vmware.jpg +--- + +This page describes how to use Mondoo to assess VMware vSphere and ESXi hosts for advisories, vulnerabilities, and security misconfigurations. + +## Create a read-only user for Mondoo in vCenter + +For Mondoo to scan assets, it requires read-only user access to the vCenter. To provide this, you must first create a new, read-only role. Then you create a new user and assign it the role you created. + +1. On the vSphere Client main menu, select **Administration** and then select **Roles**. +2. Select the **Read-only** role and then select **CLONE**. +3. Type the name **Mondoo read-only role** and select **OK**. + + ![Clone read-only role](/img/platform/infra/cloud/vmware/clone-read-only-role.png) + +4. In the list of roles, select the **Mondoo read-only role** you just created and select **EDIT**. +5. In the left-side list, select **Global**, and in the right-side list, check **Settings**. Then select **SAVE**. + + ![Create read-only role](/img/platform/infra/cloud/vmware/mondoo-role-global-settings.png) + +6. On the **Administration** menu, select **Users and Groups**. +7. Under **Users**, select the Domain **vsphere.local**, and select **ADD**. +8. Type the name **mondoo-read** and assign it a password, then select **ADD**. + + ![Create mondoo user](/img/platform/infra/cloud/vmware/create-mondoo-read-account.png) + +9. On the **Administration** menu, select **Global Permissions** and select **ADD**. +10. Assign the new role to the new user: + +a. Select the user you created, **mondoo-read**. + +b. Select the role you created, **Mondoo Read-only role**. + +c. Check **Propagate to children**. + +d. Select **OK**. + +![add read-only role to mondoo user](/img/platform/infra/cloud/vmware/add-permission-to-mondoo-read-account.png) + +## Mondoo VMware appliance + +Mondoo's VMware appliance is a pre-configured standard Linux host that allows you to quickly launch a virtual machine designed to scan your VMware environment using cnspec. It is built using these components: + +- Debian 12 +- [dev-sec.io's Ansible os and ssh role](https://github.com/dev-sec/ansible-collection-hardening) +- [VMware tools](https://github.com/vmware/open-vm-tools) +- [Cloud-Init](https://cloudinit.readthedocs.io/en/latest/index.html) and [cloud-init-vmware-guestinfo](https://github.com/vmware/cloud-init-vmware-guestinfo) +- [cnspec](https://mondoo.com/cnspec) +- [cnquery](https://mondoo.com/cnquery) + +:::info + +It is not required to use the Mondoo VMware appliance. Instead, you can provision your own hardened Linux instance and install and configure cnspec to scan your VMware infrastructure. + +::: + +**Setup** + +1. Download the [Mondoo OVA image](https://releases.mondoo.com/vmware/). +2. Import the Mondoo OVA image. +3. Launch the Mondoo OVA image. + +### Launch the appliance using the vCenter web UI + +1. Right-click on your Datacenter and select **Deploy OVF Template**. + +![Deploy OVF Template](/img/platform/infra/cloud/vmware/vmware-deploy-ovf-template.png) + +2. Select an OVF template using **URL** or **Local file** and select **Next**. + +![Select OVF Template](/img/platform/infra/cloud/vmware/vmware-select-ovf-template.png) + +3. Select a name and folder where you want to deploy the Mondoo appliance and select **Next**. + +![Select folder](/img/platform/infra/cloud/vmware/vmware-select-name-folder.png) + +4. Select any compute resource to run the Mondoo appliance and select **Next**. + +5. Review the details and select **Next**. + +![Review details](/img/platform/infra/cloud/vmware/vmware-review-details.png) + +6. Select the appropriate storage (such as `datastore2`) and select **Next**. + +![Select Storage](/img/platform/infra/cloud/vmware/vmware-select-storage.png) + +7. Select destination network (such as `VM Network`) and select **Next**. + +![Select Network](/img/platform/infra/cloud/vmware/vmware-select-network.png) + +8. Review your complete configuration for the Mondoo appliance and select **Next**. + +![Ready to complete](/img/platform/infra/cloud/vmware/vmware-ready.png) + +9. Launch the Mondoo appliance. + +### SSH for Mondoo appliance + +The virtual machine is configured with a `mondoo` user and `mondoo` password. After the first login, you must change the password. + +By default, the hardened machine disables password login. To configure the `authorized_keys`, add your ssh public keys to `/home/mondoo/.ssh/authorized_keys`. + +:::note + +Instead of setting `/home/mondoo/.ssh/authorized_keys` manually, you can configure Cloud-Init to configure the ssh key when during boot time. + +::: + +:::tip + +If you are using GitHub, you can quickly fetch your public keys with this command: `mkdir ~/.ssh && curl https://github.com/{youruser}.keys > .ssh/authorized_keys` + +::: + +When you log in using your ssh key, you see this welcome screen: + +``` + .-. + : : +,-.,-.,-. .--. ,-.,-. .-' : .--. .--. ™ +: ,. ,. :' .; :: ,. :' .; :' .; :' .; : +:_;:_;:_;`.__.':_;:_;`.__.'`.__.'`.__.' + +Mondoo VMware Appliance + +mondoo@debian:~$ +``` + +#### Enable SSH password authentication + +If you can't copy the SSH key using the `curl` command, you can allow SSH password authentication during deployment. + +1. After the SSH public keys are deployed, enable SSH password authentication by modifying these lines in `/etc/ssh/sshd_config`: + +```bash +AuthenticationMethods password +PasswordAuthentication yes +``` + +2. Restart the sshd service using `systemctl restart sshd.service`. + +3. Log in with your user name and password. + +### Configure a static IP address (optional) + +If you choose, you can configure a static IP address (using a `root` user shell). + +1. In the editor of your choice, open the `/etc/network/interfaces` file and rewrite the block that defines your primary network interface. For example, this block adds the static IP `192.168.1.100` to the interface `ens32` in a Class C private network with the network gateway and the name server both housed at `192.168.1.1`: + +```bash +# The primary network interface +auto ens32 +iface ens32 inet static +address 192.168.1.100 +netmask 255.255.255.0 +gateway 192.168.1.1 +dns-nameservers 192.168.1.1 8.8.8.8 +``` + +2. Make sure to comment out these lines in the file `/etc/network/interfaces.d/50-cloud-init`: + +```bash +#auto lo +#iface lo inet loopback + +#auto ens32 +#iface ens32 inet dhcp +``` + +3. Create the file `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg` with the following content: + +```bash +network: {config: disabled} +``` + +4. Make sure to set the correct name server(s) in the file `/etc/resolv.conf`: + +```bash +nameserver 192.168.1.1 +nameserver 192.168.1.2 +``` + +5. Now restart the `networking` service: + +```bash +systemctl restart networking +``` + +:::note + +If the static IP you chose is different then the current IP address of the VM, you will lose the current shell connection to the Mondoo Appliance and need to reconnect to the new, static IP address. + +::: + +### Configure cnspec + +Mondoo's cross-platform scanning engine, [cnspec](/cnspec/cnspec-about/), assesses your VMware. To return results to Mondoo for monitoring, reporting, and measuring improvements, you must register cnspec with Mondoo Platform. + +1. Enter this command: + +```bash +sudo cnspec login -t --config /etc/opt/mondoo/mondoo.yml +``` + +2. Verify that cnspec is registered successfully with Mondoo Platform by running `cnspec status`: + +```bash +→ loaded configuration from /etc/opt/mondoo/mondoo.yml using source --config +→ Hostname: debian +→ IP: 192.168.51.139 +→ Platform: debian +→ Release: 11.2 +→ Time: 2022-05-26T15:43:59-07:00 +→ Version: 6.0.0 (API Version: 6) +→ API ConnectionConfig: https://us.api.mondoo.com +→ API Status: SERVING +→ API Time: 2022-05-26T22:44:00Z +→ API Version: 6 +→ Space: //captain.api.mondoo.app/spaces/relaxed-poincare-384428 +→ Client: //agents.api.mondoo.app/spaces/relaxed-poincare-384428/agents/22vUq9U0gN9Uoy2c3UqCaKARSEg +→ Service Account: //agents.api.mondoo.app/spaces/relaxed-poincare-384428/serviceaccounts/22y0WDmHloyEvdJEteV5cEvsQTj +→ client is registered +→ client authenticated successfully +``` + +3. Test that cnspec can reach the vSphere API. The command below runs the two default Mondoo policies: + - The `Platform End-of-Life Policy` + - The `Platform Vulnerability Policy` + +As their names suggest, they scan the vSphere and determine if it has reached its end-of-life and if there are any known vulnerabilities. + +Use the `--incognito` switch to disable sending the results to the Mondoo Console. + +```bash +# vSphere 6.x / 7.x +cnspec scan vsphere user@host --ask-pass +``` + +4. Activate the policies against which Mondoo assesses your VMware. + +To learn more, read [Manage Policies](/platform/security/posture/policies/). + +A good place to start scanning is the `VMware vSphere ESXi Security Baseline by Mondoo` policy. + +5. Now, with the policy of your choice activated, scan again: + +```bash +cnspec scan vsphere user@host --ask-pass +``` + +Since we did not pass the `--incognito` switch, the command output will also include a link to the Mondoo Console, where you can review the scan results. + +## Set up cnspec inventory + +cnspec is able to leverage an inventory to scan multiple VMware assets at the same time. An inventory is a list of systems with their connection types and accounts. + +### cnspec inventory with embedded secrets + +This `inventory.yml` illustrates the configuration for the vCenter connection: + +```yaml +apiVersion: v1 +kind: Inventory +metadata: + name: cnspec-inventory + labels: + environment: production +spec: + assets: + - name: + connections: + - type: vsphere + host: < ip of the ESXi or vCenter > + insecure: true + credentials: + - type: password + user: < username > + password: < password > + discover: + targets: + - host-machines +``` + +Using a user account with `root` privileges, store the content in `/etc/opt/mondoo/inventory.yml` to ensure that cnspec picks up the inventory automatically. + +Test that the `inventory.yml` is working: + +```bash +mondoo@debian:~$ sudo cnspec scan --inventory-file /etc/opt/mondoo/inventory.yml +→ load inventory inventory=/etc/opt/mondoo/inventory.yml +→ cnspec 7.15.1 (Space: "//captain.api.mondoo.app/spaces/relaxed-poincare-384428", Service Account: "22y0WDmHloyEvdJEteV5cEvsQTj", Managed Client: "22vUq9U0gN9Uoy2c3UqCaKARSEg") +→ loaded configuration from /etc/opt/mondoo/mondoo.yml using source --config + +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=4 +→ execute policies +→ synchronize asset found=4 +→ establish connection to asset 192.168.51.134 (VMware vCenter Server) (api) +→ established connection +→ run policies for asset asset=//assets.api.mondoo.app/spaces/relaxed-poincare-384428/assets/22y2gEXiZrRagoV5cPbVFjj0MSI +... +``` + +Restart the service, so that the new inventory is loaded: + +```bash +sudo systemctl restart cnspec +``` + +Check if the `inventory.yml` is loaded: + +```bash +sudo journalctl -u cnspec.service +``` + +```bash +-- Journal begins at Wed 2021-12-29 16:03:27 UTC, ends at Wed 2021-12-29 16:39:28 UTC. -- +Dec 29 16:38:04 debian systemd[1]: Started cnspec Service. +Dec 29 16:38:05 debian cnspec[1294]: → load inventory inventory=/etc/opt/mondoo/inventory.yml +Dec 29 16:38:05 debian cnspec[1294]: → cnspec 7.15.1 (Space: "//captain.api.mondoo.app/spaces/relaxed-poincare-384428", Service Account> +Dec 29 16:38:05 debian cnspec[1294]: → loaded configuration from /etc/opt/mondoo/mondoo.yml using source --config +Dec 29 16:38:06 debian cnspec[1294]: → start cnspec background service +``` + +Enable the service so that after the VM restarts, the service starts automatically: + +```bash +sudo systemctl enable cnspec +``` + +### cnspec inventory YAML with encrypted file vault + +Configure cnspec's vault to use the encrypted file vault. Execute the following commands as `mondoo` user (not as `root` user). Run the following command to create the vault configuration: + +```bash +cnspec vault configure mondoo-client-vault --type encrypted-file --option=password='changeme' --option path='/etc/opt/mondoo/vault.enc' +→ add the following vault configuration to your inventory file +spec: + vault: + name: mondoo-client-vault + options: + password: changeme + path: /etc/opt/mondoo/vault.enc + type: encrypted-file +``` + +Adjust the `/etc/opt/mondoo/inventory.yml` with the proposed configuration to use the encrypted file vault functionality: + +```yaml +apiVersion: v1 +kind: Inventory +metadata: + name: cnspec-inventory + labels: + environment: production +spec: + assets: + - name: + connections: + - type: vsphere + host: 192.168.51.134 + insecure: true + credentials: + - secret_id: vcenter + discover: + targets: + - host-machines + vault: + name: mondoo-client-vault + options: + password: changeme + path: /etc/opt/mondoo/vault.enc + type: encrypted-file +``` + +To store the vSphere login credentials into the encrypted file vault, execute the following command: + +```bash +cnspec vault add-secret vcenter '{ "type": "password", "user": "chris@vsphere.local", "password": "password" }' --inventory-file /etc/opt/mondoo/inventory.yml +``` + +Now, you can scan the vSphere using the encrypted file vault: + +```bash +# Note that you need to run this as root user, as the vault is stored in /etc/opt/mondoo/vault.enc +sudo cnspec scan --inventory-file /etc/opt/mondoo/inventory.yml +``` + +Once you have verified that the encrypted file vault is working, you can restart the cnspec service: + +```bash +systemctl restart cnspec +``` + +## Scan virtual machines using VMware tools + +As the first step, we query for available virtual machines that have VMware Tools configured. + +```bash +# open the shell to the vsphere api +cnspec shell vsphere user@host --ask-pass + +# select the platform id for api +cnspec shell vsphere user@host --ask-pass --platform-id /platformid.api.mondoo.app/runtime/vsphere/instance/ha-host +``` + +Within the cnspec shell query the available VMs and their inventory Path. + +```javascript +cnspec> vsphere.datacenters { vms { inventoryPath name } } +vsphere.datacenters: [.. + 0: { + vms: [ + 0: { + name: "mondoo-appliance" + inventoryPath: "/Mondoo Datacenter 2/vm/mondoo-appliance" + } + 1: { + name: "vCenter" + inventoryPath: "/Mondoo Datacenter 2/vm/vCenter" + } + 2: { + name: "windows 2022" + inventoryPath: "/Mondoo Datacenter 2/vm/windows 2022" + } + ] + } + 1: { + vms: [ + 0: { + name: "ubuntu-no-guest-tools" + inventoryPath: "/Mondoo Datacenter 1/vm/ubuntu-no-guest-tools" + } + 1: { + name: "ubuntu" + inventoryPath: "/Mondoo Datacenter 1/vm/ubuntu" + } + ] + } +] +``` + +Next, we query for all VMs and get check if the VMware Guest Tools are installed: + +```javascript +cnspec> vsphere.datacenters { vms { name inventoryPath properties["summary"]["guest"]["toolsStatus"] }} +vsphere.datacenters: [.. + 0: { + vms: [ + 0: { + name: "mondoo-appliance" + inventoryPath: "/Mondoo Datacenter 2/vm/mondoo-appliance" + properties[summary][guest][toolsStatus]: "toolsOk" + } + 1: { + name: "vCenter" + inventoryPath: "/Mondoo Datacenter 2/vm/vCenter" + properties[summary][guest][toolsStatus]: "toolsOk" + } + 2: { + name: "windows 2022" + inventoryPath: "/Mondoo Datacenter 2/vm/windows 2022" + properties[summary][guest][toolsStatus]: "toolsNotRunning" + } + ] + } + 1: { + vms: [ + 0: { + name: "ubuntu-no-guest-tools" + inventoryPath: "/Mondoo Datacenter 1/vm/ubuntu-no-guest-tools" + properties[summary][guest][toolsStatus]: "toolsNotInstalled" + } + 1: { + name: "ubuntu" + inventoryPath: "/Mondoo Datacenter 1/vm/ubuntu" + properties[summary][guest][toolsStatus]: "toolsNotRunning" + } + ] + } +] +``` + +With that information, we can connect to an individual virtual machine via VMware Tools: + +```bash +cnspec scan vsphere vm user@host --password password --insecure --option 'inventoryPath=/Mondoo Datacenter 2/vm/mondoo-appliance' --option guestUser=mondoo --option guestPassword='changeme' +``` + +The result would look like this: + +``` +cnspec scan vsphere vm mondoo-read@vsphere.local@192.168.51.134 --password changeme --insecure --option 'inventoryPath=/Mondoo Datacenter 2/vm/mondoo-appliance' --option guestUser=mondoo --option guestPassword='changeme' +→ cnspec 7.15.1 (Space: "//captain.api.mondoo.app/spaces/relaxed-poincare-384428", Service Account: "22y0WDmHloyEvdJEteV5cEvsQTj", Managed Client: "22vUq9U0gN9Uoy2c3UqCaKARSEg") +→ loaded configuration from /etc/opt/mondoo/mondoo.yml using source --config + +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 +→ execute policies +→ synchronize asset found=1 +→ establish connection to asset mondoo-appliance +→ established connection +→ run policies for asset asset=//assets.api.mondoo.app/spaces/relaxed-poincare-384428/assets/22y6EAkCdtKawukAEWGxoTezNGg + +█████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 50% mondoo-appliance +``` + +## Scan vSphere and ESXi using cnspec + +Scan vSphere API, ESXi, and VMs + +```bash +cnspec scan vsphere mondoo-read@vsphere.local@192.168.51.134 --ask-pass --discover auto +``` + +:::info + +The `--discover auto` option will automatically discover all ESXi hosts and the vCenter. + +::: + +Scan vSphere API, ESXi, and VMs + +```bash +cnspec scan vsphere mondoo-read@vsphere.local@192.168.51.134 --ask-pass --discover all +``` + +:::info + +The `--discover all` option automatically discovers all ESXi hosts and VMs. + +::: diff --git a/docs/platform/infra/networking/_category_.json b/docs/platform/infra/networking/_category_.json new file mode 100644 index 000000000..634387b95 --- /dev/null +++ b/docs/platform/infra/networking/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Networking", + "position": 4 +} diff --git a/docs/platform/infra/networking/domain-ip.mdx b/docs/platform/infra/networking/domain-ip.mdx new file mode 100644 index 000000000..d44db8bb0 --- /dev/null +++ b/docs/platform/infra/networking/domain-ip.mdx @@ -0,0 +1,32 @@ +--- +title: Secure a Host (Domain or IP Address) +sidebar_label: Secure a Domain or IP Address +sidebar_position: 2 +description: Use Mondoo to ensure that your HTTP or HTTPS hosts are secure +--- + +Mondoo can continuously scan a domain or IP address to ensure that your hosts follow best security practices. You can choose to monitor HTTP or HTTPS security. + +To set up continuous scanning for a host: + +1. Access the Integrations > Add > Domain or IP Address page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Domain/IP Address**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Network Security, select **Domain/IP Address**. + + ![Continuously scan domain or IP address](/img/platform/infra/networking/domain-ip.png) + +2. In the **Enter the domain or IP address to scan** box, enter the domain name (such as www.lunalectric.com) or IP address (such as 123.45.67.89) of the host to scan. + +3. Under **Select ports to scan** box, choose to scan for HTTP or HTTPS security. + +4. Select the **CREATE** button. + +5. On the Recommended Policies page, enable the policies on which you want to base scans of the host. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +6. To complete the integration, select the **FINALIZE SETUP** button. + +--- diff --git a/docs/platform/infra/networking/overview.mdx b/docs/platform/infra/networking/overview.mdx new file mode 100644 index 000000000..81a512758 --- /dev/null +++ b/docs/platform/infra/networking/overview.mdx @@ -0,0 +1,14 @@ +--- +title: Overview of Networking Security with Mondoo +sidebar_label: Overview +sidebar_position: 1 +description: Secure your network with Mondoo +--- + +Mondoo's continuous scanning ensures that you follow best networking security practices: + +- [Monitor host security by continuously scanning a domain or IP address](/platform/infra/networking/domain-ip) + +Stay tuned for more networking security capabilities coming soon! + +--- diff --git a/docs/platform/infra/opsys/_category_.json b/docs/platform/infra/opsys/_category_.json new file mode 100644 index 000000000..3de0ec203 --- /dev/null +++ b/docs/platform/infra/opsys/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Servers and Endpoints", + "position": 5 +} diff --git a/docs/platform/infra/opsys/automation/_automation-providers-note.mdx b/docs/platform/infra/opsys/automation/_automation-providers-note.mdx new file mode 100644 index 000000000..87e69b796 --- /dev/null +++ b/docs/platform/infra/opsys/automation/_automation-providers-note.mdx @@ -0,0 +1,5 @@ +:::note + +If you deploy cnspec to machines that can't download and install updates (because they're air-gapped or don't give cnspec write access), you must deploy cnspec providers. To learn more, read [Manage cnspec Providers](/cnspec/cnspec-adv-install/providers/). + +::: diff --git a/docs/platform/infra/opsys/automation/_category_.json b/docs/platform/infra/opsys/automation/_category_.json new file mode 100644 index 000000000..939696f30 --- /dev/null +++ b/docs/platform/infra/opsys/automation/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Deployment Automation", + "position": 4 +} diff --git a/docs/platform/infra/opsys/automation/ansible.md b/docs/platform/infra/opsys/automation/ansible.md new file mode 100644 index 000000000..3f6e66c87 --- /dev/null +++ b/docs/platform/infra/opsys/automation/ansible.md @@ -0,0 +1,527 @@ +--- +title: Ansible and Mondoo +sidebar_label: Ansible +sidebar_position: 2 +description: How to use Ansible with Mondoo to scan your Windows and a Linux hosts for security misconfigurations and vulnerabilities. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo works seamlessly with configuration management tools in the DevOps ecosystem. For businesses already using Ansible to automate their environments, there are two primary ways to use Mondoo and Ansible together: + +[**Continuously assess host configuration**](#continuous-configuration-assessments-with-mondoo-and-ansible) + +Use Ansible to: + +- Install and configure [cnspec](/platform/infra/opsys/mondoo-cnspec/) on supported Linux and Windows hosts + +- Register hosts with Mondoo Platform + +- Configure hosts to continuously scan with Mondoo policies and report scan results to Mondoo Platform + +[**Scan Ansible inventories on demand**](#on-demand-scanning-of-ansible-inventories) + +Perform on-demand scans of Ansible inventories without installing cnspec as a service on the host. + +Hosts from your Ansible inventory authenticate with your Mondoo Platform account so that cnspec can retrieve policies you've enabled. cnspec sends scan results from the host to Mondoo Platform, where you can see asset scores and reports. + + +import Partial from "./_automation-providers-note.mdx"; + +{" "} + +## Requirements + +- In your Mondoo Platform account, enable all the policies you want to run against your Ansible inventory. To learn how to enable policies, read [Monitor Your Infrastructure Security](/platform/security/posture/monitor). + +- You must have root or administrator access for each host in the Ansible inventory you want to scan. + +- You must have Ansible installed on your workstation. For installation instructions, read the Ansible documentation. + +- All hosts in your inventory must allow outbound traffic on port 443 (HTTPS) to Mondoo Platform at `https://us.api.mondoo.com:443` (IP address `34.98.71.94`) to send results to your account. + +## Continuous configuration assessments with Mondoo and Ansible + +Use Ansible to install and configure cnspec on supported Linux and Windows hosts so that Mondoo runs continuously as a service. + +Mondoo maintains and publishes an official Mondoo/cnspec Role, which is available on Ansible Galaxy. The code for the role is open source and available in our GitHub repo. + +Our Ansible Role lets you: + +- Install cnspec on supported Linux and Windows hosts + +- Register host on Mondoo Platform + +- Configure cnspec to run as a service at system startup + +- Run continuous security assessments of the host + +Once configured, cnspec authenticates with Mondoo Platform every 60 minutes, running every policy enabled in the registry. It sends results from the scan to Mondoo Platform so you can see the generated scores and reports in the Mondoo Console. + +### Hands-on: Continuous configuration assessments with Mondoo & Ansible + +> This section provides a hands-on guide for using the Mondoo Ansible role. + +This guide covers how to set up continuous configuration assessments on Linux and Windows hosts with Ansible. After completing this guide, you will have an Ansible inventory running cnspec as a service, registered with your Mondoo Platform account, running policy scans, and reporting the findings to Mondoo Platform. + +#### Step 1: Generate a registration token + +The Mondoo Ansible role provides a `registration_token` variable to specify a Mondoo registration token to use to register the client with Mondoo Platform. + +1. In the [Mondoo Console](https://console.mondoo.com) navigate to the **INTEGRATIONS** page. + +2. Select "Add Another Integration". + +3. Select **Workstation**. + +:::info + +By default, tokens expire every 600 seconds, but expiration time can be extended by selecting **Token Options** and setting the expiration time (max: 86400 seconds). + +::: + +3. Copy the registration token to the clipboard. + +#### Step 2: Install Mondoo role and create playbook + +Next you must install the Mondoo Ansible role from Ansible Galaxy on your local workstation, and create an Ansible playbook to call that role on your inventory. + +1. Download the Ansible Mondoo role on your workstation: + + ```bash title="Download Mondoo role on your workstation" + ansible-galaxy install mondoo.client + ``` + +2. Create a `playbook.yaml` file to run the Ansible Mondoo role on your inventory of hosts. You must update the `registration_token` value with your registration token from _Step 1: Generate a registration token_ above. This example has both Linux and Windows hosts, and should be updated accordingly if only using one platform or another: + + ```yaml title="Example playbook.yml" + --- + - hosts: mondoo_linux_clients + become: yes + roles: + - role: mondoo.client + vars: + registration_token: "PASTE MONDOO REGISTRATION TOKEN" + + - hosts: mondoo_windows_clients + roles: + - role: mondoo.client + vars: + registration_token: "PASTE MONDOO REGISTRATION TOKEN" + force_registration: false + ``` + +3. Save the `playbook.yaml` file. + +#### Step 3: Run Ansible + +You should already have a `hosts.ini` file with your Ansible inventory. This is an example `hosts.ini` with both Linux and Windows hosts: + +```ini title="EXAMPLE hosts.ini" + +# Linux Hosts +[mondoo_linux_clients] +3.92.154.110 ansible_user=admin +3.95.154.111 ansible_user=ec2-user +3.82.22.136 ansible_user=ec2-user +54.211.122.215 ansible_user=ec2-user +54.209.155.66 ansible_user=ubuntu +54.146.154.182 ansible_user=ubuntu + +# Windows Hosts +[mondoo_windows_clients] +# Windows Hosts WinRM +3.85.201.162 ansible_port=5986 ansible_connection=winrm ansible_user=Administrator ansible_password=changeme ansible_shell_type=powershell ansible_winrm_server_cert_validation=ignore +54.66.89.204 ansible_port=5986 ansible_connection=winrm ansible_user=Administrator ansible_password=changeme ansible_shell_type=powershell ansible_winrm_server_cert_validation=ignore +# Windows Hosts SSH +3.235.247.76 ansible_port=22 ansible_connection=ssh ansible_user=Administrator ansible_password=changeme ansible_shell_type=cmd +``` + +Run Ansible against your inventory: + +```bash title="Run Ansible against existing inventory" +ansible-playbook -i hosts.ini playbook.yml +``` + +#### Step 4: View scan reports in the Mondoo Console + +Once Ansible runs the `playbook.yaml` against your inventory, you can view the scan results in Mondoo Platform. + +1. In the [Mondoo Console](https://console.mondoo.com) navigate to the **INVENTORY** page. + +2. All servers should now be reporting in and have received an asset score for the policies executed. + +3. To view the policies that ran on a given asset, and detailed information, select an asset in the list. + ![Ansible asset details in Mondoo Platform](/img/platform/infra/opsys/automation/ansible_asset_details.png) + +This view shows each policy that ran against an asset, and the individual score for each policy. Select any policy in the list to view the results from each query. + +:::info + +To learn more about how Mondoo generates asset scores, read [Manage Policies](/platform/security/posture/overview). + +::: + +#### You're done! + +cnspec is now running as a service on your Ansible inventory. It will continue to scan your assets every 60 minutes and report findings back to your account. + +## On-demand scanning of Ansible inventories + +> This section covers how to use cnspec for on-demand scans of Ansible inventories without needing to install and configure cnspec as a service on the host. + +While you can easily configure Mondoo's cnspec to run as a service to continuously scan your infrastructure, there may be times when you just want to scan an Ansible inventory without having to install and configure cnspec on your infrastructure. + +Mondoo supports on-demand scanning of an Ansible inventory in two ways: + +- **Run cnspec scan --ansible-inventory** - Use the `cnspec scan --ansible-inventory` command to parse the output of `ansible-inventory -i --list` command, and scan with Mondoo. +- **Run cnspec scan as an Ansible Task** - Create an Ansible task to scan your infrastructure. + +With both of the scenarios above, your assets: + +1. Authenticates with your Mondoo Platform account using the cnspec configuration on your local workstation + +2. Run any policies enabled in that space + +3. Report the results back to Mondoo Platform so you can view reports and asset scores for all assets in the Mondoo Console + +With these approaches, Mondoo doesn't install anything on your infrastructure. Every time you want to see fresh results, you must scan the assets. + +The next section provides hands-on tutorials for running both on-demand scenarios. + +### On-demand scan of Ansible inventory with cnspec scan --ansible-inventory + +This section is a hands-on guide on how to trigger an on-demand scan of an Ansible inventory. When you finish, you will have fresh asset scores and reports for all of your Ansible inventory in your Mondoo Platform account. + +:::caution + +Because on-demand scans of Ansible inventories run serially, we don't recommend them for large inventories. If you want to run on-demand scans that execute in parallel, please reach out to us in the [Mondoo Community Slack](https://mondoo.link/slack) channel. + +::: + +#### Step 1: Set up or validate your Ansible inventory + +An Ansible inventory is a list of hosts that is mostly stored in the two common formats `ini` and `yaml`. These examples illustrate their structure. The ini format allows grouping and easy configuration of additional properties. + +```ini title="Example hosts.ini" +[workers] +34.243.41.251 ansible_user=ec2-user +instance1 ansible_host=18.203.250.158 ansible_user=ubuntu +``` + +The same structure in yaml: + +```yaml title="Example hosts.yml" +all: + children: + ungrouped: {} + workers: + hosts: + 34.243.41.251: + ansible_user: ec2-user + instance1: + ansible_host: 18.203.250.158 + ansible_user: ubuntu +``` + +You can validate connectivity with the Ansible inventory by running this command: + +```bash title="Ping Ansible inventory" +ansible all -i hosts.ini -m ping +``` + +**Example output** + +``` +instance1 | SUCCESS => { + "ansible_facts": { + "discovered_interpreter_python": "/usr/bin/python" + }, + "changed": false, + "ping": "pong" +} +34.243.41.251 | SUCCESS => { + "ansible_facts": { + "discovered_interpreter_python": "/usr/bin/python" + }, + "changed": false, + "ping": "pong" +} +``` + +#### Step 2: Scan the Ansible inventory + +cnspec provides the `cnspec scan --ansible-inventory` command to scan existing Ansible inventories. There are two main ways to use this command. + +##### Option 1: Pipe the Ansible inventory to cnspec scan + +The first option if you are using a shell such as `bash` or `zsh` that supports `|` redirects is to pipe the outputs of the `ansible-inventory -i hosts.ini --list` command to `cnspec scan --ansible-inventory`. + +```bash title="Pipe the contents of an Ansible inventory to the cnspec scan --ansible-inventory command" +ansible-inventory -i hosts.ini --list | cnspec scan --inventory-file - --ansible-inventory --insecure +``` + +:::info + +Use the `--insecure` flag for: + +- Hosts that have not been added to `~/.ssh/known_hosts` + +- Windows WinRM using self-signed certificates + +::: + +##### Option 2: Scan Ansible inventory hosts.json + +If your shell does not support pipes, you can generate a `hosts.json` from the `ansible-inventory` command and then pass that file to `cnspec scan` using the `--inventory` flag. + +```bash title="Generate hosts.json and scan with cnspec scan command" +ansible-inventory -i hosts.ini --list > hosts.json +cnspec scan --inventory-file hosts.json --ansible-inventory +``` + +Both cnspec and the Mondoo Console show results from each policy that runs against your assets. + +**Example shell output** + +``` +Checks: +✓ Pass: Ensure no known platform advisories exist +✓ Pass: Ensure talk server is stopped and not enabled +✓ Pass: Ensure SNMP server is stopped and not enabled +. Skipped: Ensure secure permissions on /etc/passwd- are set +✓ Pass: Ensure no duplicate UIDs exist +✕ Fail: C 40 Ensure rsyslog is installed +✕ Fail: F 0 Ensure broadcast ICMP requests are ignored +✓ Pass: Ensure rsync service is stopped and not enabled +. Skipped: Ensure secure permissions on /etc/gshadow- are set +. Skipped: Ensure journald is configured to send logs to rsyslog +✓ Pass: Ensure secure permissions on /etc/group are set +✓ Pass: Ensure LDAP server is stopped and not enabled +✕ Fail: D 20 Ensure events that modify the system's Mandatory Access Controls are collected +✓ Pass: Ensure Samba is stopped and not enabled +✕ Fail: F 0 Ensure TCP SYN Cookies is enabled +✕ Fail: F 0 Ensure source routed packets are not accepted +✓ Pass: Ensure Avahi server is stopped and not enabled +✓ Pass: Ensure DHCP server is stopped and not enabled +✕ Fail: D 20 Ensure session initiation information is collected +✓ Pass: Ensure default group for the root account is GID 0 +✓ Pass: Ensure HTTP servers are stopped and not enabled +✕ Fail: D 20 Ensure login and logout events are collected +✓ Pass: Ensure secure permissions on /etc/gshadow are set +. Skipped: Ensure journald is configured to write logfiles to persistent disk +✓ Pass: Platform is not end-of-life +✓ Pass: Ensure UID_MIN is set to 1000 +. Skipped: Ensure secure permissions on /etc/group- are set +✕ Fail: D 20 Ensure auditd is installed +✕ Fail: D 20 Ensure events that modify user/group information are collected +✕ Fail: D 20 Ensure changes to system administration scope (sudoers) is collected +✕ Fail: C 40 Ensure Advanced Intrusion Detection Environment (AIDE) is installed +✕ Fail: C 40 Ensure IP forwarding is disabled +✕ Fail: D 20 Ensure audit log storage size is configured +✕ Fail: F 0 Ensure packet redirect sending is disabled +✓ Pass: Ensure tftp server is stopped and not enabled +✕ Fail: F 0 Ensure ICMP redirects are not accepted +✓ Pass: Ensure secure permissions on /etc/passwd are set +✓ Pass: Ensure IMAP and POP3 server is stopped and not enabled +✓ Pass: Ensure no duplicate user names exist +✕ Fail: D 20 Ensure system administrator actions (sudolog) are collected +✓ Pass: Ensure all GIDs in /etc/passwd exist in /etc/group +✓ Pass: Ensure telnet server is stopped and not enabled +✓ Pass: Ensure FTP server is stopped and not enabled +✓ Pass: Ensure rsh server is stopped and not enabled +✕ Fail: D 20 Ensure kernel module loading and unloading is collected +✓ Pass: Ensure no duplicate group names exist +✓ Pass: Ensure secure permissions on /etc/shadow are set +✓ Pass: Ensure system accounts are non-login +✕ Fail: D 20 Ensure unsuccessful unauthorized file access attempts are collected +✕ Fail: F 0 Ensure address space layout randomization (ASLR) is enabled +✕ Fail: C 40 Ensure rsyslog Service is enabled +. Skipped: Ensure journald is configured to compress large log files +✕ Fail: D 20 Ensure events that modify date and time information are collected +✓ Pass: Ensure NIS server is stopped and not enabled +. Skipped: Ensure secure permissions on /etc/shadow- are set +✓ Pass: Ensure root group is empty +✕ Fail: D 20 Ensure the audit configuration is immutable +✓ Pass: Ensure no duplicate GIDs exist +✓ Pass: Ensure X Window System is not installed +✕ Fail: D 20 Ensure events that modify the system's network environment are collected +✕ Fail: D 20 Ensure discretionary access control permission modification events are collected +✓ Pass: Ensure no known platform CVEs exist +✕ Fail: F 0 Ensure access to the su command is restricted +✕ Fail: C 40 Ensure system is disabled when audit logs are full +✕ Fail: F 0 Ensure IPv6 router advertisements are not accepted +! Error: Ensure mail transfer agent is configured for local-only mode +✕ Fail: F 0 Ensure secure ICMP redirects are not accepted +✕ Fail: D 20 Ensure file deletion events by users are collected +✕ Fail: F 0 Ensure Reverse Path Filtering is enabled +✕ Fail: F 0 Ensure core dumps are restricted +! Error: Ensure filesystem integrity is regularly checked +! Error: Ensure sudo logging is enabled +✓ Pass: Ensure prelink is disabled +✕ Fail: D 20 Ensure secure permissions on all log files are set +✓ Pass: Ensure CUPS is stopped and not enabled +✓ Pass: Ensure HTTP Proxy server is stopped and not enabled +✕ Fail: D 20 Ensure suspicious packets are logged +✓ Pass: Ensure each user is a member of a group +✓ Pass: Ensure NFS and RPC are stopped and not enabled +✓ Pass: Ensure DNS server is stopped and not enabled +✕ Fail: F 0 Ensure bogus ICMP responses are ignored +✓ Pass: Ensure shadow group is empty +✕ Fail: C 40 Ensure rsyslog default file permissions configured +. Skipped: Ensure auditing for processes that start prior to auditd is enabled +✕ Fail: D 20 Ensure auditd service is enabled +✕ Fail: Ensure the platform is not End-of-Life +✕ Fail: Ensure audit logs are not automatically deleted +✕ Fail: D 20 Ensure successful file system mounts are collected + +Vulnerabilities: +■ No advisories found (passed) + +Overall CVSS score: 0.0 + +Scanned 1 assets + +Ubuntu 18.04.6 LTS + C mysystem.internal.dmz + +For detailed output, run this scan with "-o full". + +See more scan results and asset relationships on the Mondoo Console: https://console.mondoo.com/space/inventory/12ejfpX1SbxfrNf6bq8f8gCCgMb?spaceId=ansible-hosts +``` + +#### Step 3: View scan reports in the Mondoo Console + +Once Ansible completes, scan results are sent to Mondoo Platform so you can see the generated scores and reports in the Mondoo Console.. + +To view the reports in the Mondoo Console: + +1. In the [Mondoo Console](https://console.mondoo.com) navigate to the **INVENTORY** page. +2. All servers should now be reporting in and have received a asset score for the policies executed. +3. To view the policies that ran on a given asset, and detailed information, select an asset in the list. + ![Ansible asset details in Mondoo Platform](/img/platform/infra/opsys/automation/ansible_asset_details.png) + +This view shows each policy that ran against an asset, and the individual score for each policy. Select any policy in the list to view the results from each query. + +We rely on [ansible-inventory](https://docs.ansible.com/ansible/latest/cli/ansible-inventory.html) command to be able to support various inventory formats and to be able to re-use [dynamic inventory](https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html) too. This command outputs a standardized format independently if a `ini` or `yaml` inventory is used. + +:::info + +Note: At this point, we do not support group [patterns](https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html). If you need additional support, please do not hesitate to contact us. + +::: + +### Hands-On: On-demand scan of Ansible inventory using an Ansible task + +As an alternative, you can use the `cnspec scan` command in an Ansible task. Mondoo uses the ssh-agent so you do not need to set up additional credentials configuration. + +#### Step 1: Set up or validate your Ansible Inventory + +An Ansible inventory is a list of hosts that is mostly stored in the two common formats `ini` and `yaml`. These examples illustrate their structure. The ini format allows grouping and easy configuration of additional properties. + +```ini title="Example hosts.ini" +[workers] +34.243.41.251 ansible_user=ec2-user +instance1 ansible_host=18.203.250.158 ansible_user=ubuntu +``` + +The same structure in yaml: + +```yaml title="Example hosts.yml" +all: + children: + ungrouped: {} + workers: + hosts: + 34.243.41.251: + ansible_user: ec2-user + instance1: + ansible_host: 18.203.250.158 + ansible_user: ubuntu +``` + +You can validate connectivity with the Ansible inventory by running this command: + +```bash title="Ping Ansible inventory" +ansible all -i hosts.ini -m ping +``` + +**Example output** + +``` +instance1 | SUCCESS => { + "ansible_facts": { + "discovered_interpreter_python": "/usr/bin/python" + }, + "changed": false, + "ping": "pong" +} +34.243.41.251 | SUCCESS => { + "ansible_facts": { + "discovered_interpreter_python": "/usr/bin/python" + }, + "changed": false, + "ping": "pong" +} +``` + +#### Step 2: Set up playbook.yaml to run cnspec scan + +Next, you must create a playbook to run the `cnspec scan` against your inventory. This is an example `playbook.yaml` used to execute `cnspec scan` locally with a playbook against Linux hosts: + +```yaml title="Example playbook.yml for executing cnspec scan against Linux hosts" +--- +- hosts: all + gather_facts: no + tasks: + - name: add key to ssh-agent + local_action: ansible.builtin.command ssh-agent + run_once: true + - name: add key to ssh-agent + # activate rsa key if that is used + # local_action: command ssh-agent ssh-add ~/.ssh/id_rsa + local_action: ansible.builtin.command ssh-add ~/.ssh/id_ed25519 + run_once: true + - name: run cnspec scan for target destination + local_action: ansible.builtin.command cnspec scan --insecure --score-threshold 0 ssh {{ ansible_user }}@{{ inventory_hostname }} +``` + +Be sure to save the file. + +#### Step 3: Run Ansible + +Run the playbook with this command: + +```bash title="Command Line" +ansible-playbook -i hosts.ini playbook.yml +``` + +:::info + +Use the `--insecure` flag for: + +- Hosts that have not been added to `~/.ssh/known_hosts` + +- Windows WinRM using self-signed certificates + +::: + +#### Step 4: View scan reports in the Mondoo Console + +Once Ansible completes, scan results are sent to Mondoo Platform so you can view asset scores and reports for all assets scanned in the Mondoo Console. + +To view the reports in the Mondoo Console: + +1. In the [Mondoo Console](https://console.mondoo.com) navigate to the **INVENTORY** page. + +2. All servers should now be reporting in and have received an asset score for the policies executed. + +3. To view the policies that ran on a given asset, and detailed information, select an asset in the list. + ![Ansible asset details in Mondoo Platform](/img/platform/infra/opsys/automation/ansible_asset_details.png) + +This view shows each policy that ran against an asset, as well as the individual score for each policy. Select any policy in the list to view the results from each query. + +:::info + +To learn more about how Mondoo scores assets, read [Score Policies](/cnspec/cnspec-policies/write/policy-scoring/). + +::: diff --git a/docs/platform/infra/opsys/automation/chef.md b/docs/platform/infra/opsys/automation/chef.md new file mode 100644 index 000000000..6e8959b9a --- /dev/null +++ b/docs/platform/infra/opsys/automation/chef.md @@ -0,0 +1,33 @@ +--- +title: Chef Infra and Mondoo +sidebar_label: Chef Infra +sidebar_position: 3 +description: This page covers how to use Chef Infra with Mondoo to install cnspec on hosts to run policies as code. +image: /img/featured_img/mondoo-feature.jpg +--- + +This page covers how to use Chef Infra to install cnspec on hosts to run policies as code. + + +import Partial from "./_automation-providers-note.mdx"; + +{" "} + +## Installing using Chef Infra + +We publish an official [mondoo cookbook](https://supermarket.chef.io/cookbooks/mondoo) on Chef Supermarket. You can use the cookbook in your own [wrapper cookbooks](https://www.chef.io/blog/writing-wrapper-cookbooks) or [Chef Infra roles](https://www.digitalocean.com/community/tutorials/how-to-use-roles-and-environments-in-chef-to-control-server-configurations) + +To apply the cookbook, set the Mondoo Registration Token via: + +```bash title="Command Line" +default['cnspec']['registration_token'] = "changeme" +``` + +## Example: Apply a cookbook to an Amazon EC2 instance + +1. Spin up a new Linux instance on [AWS](https://console.aws.amazon.com/console/home) +2. Create the `run` wrapper cookbook as documented in our [example](https://github.com/mondoohq/chef-mondoo/tree/main/examples) +3. Run `chef-run ssh://user@host ./run` +4. All instances [reported their vulnerability status](https://console.mondoo.com/) + +--- diff --git a/docs/platform/infra/opsys/automation/cloudinit.md b/docs/platform/infra/opsys/automation/cloudinit.md new file mode 100644 index 000000000..9a00e1897 --- /dev/null +++ b/docs/platform/infra/opsys/automation/cloudinit.md @@ -0,0 +1,59 @@ +--- +title: cloud-init and Mondoo +sidebar_label: cloud-init +sidebar_position: 4 +description: This page covers how to use cloud-init to install cnspec on hosts to run policies as code. +image: /img/featured_img/mondoo-feature.jpg +--- + +This page covers how to use cloud-init to install cnspec on hosts to run policies as code. + + +import Partial from "./_automation-providers-note.mdx"; + +{" "} + +## Installing cnspec using cloud-init + +Most cloud environments support the configuration of an operating system during launch. In most cases [cloud-init](https://cloudinit.readthedocs.io/en/latest/) is used. For Linux systems, cloud-init supports bash scripts. + +We simply leverage the Mondoo [Bash installer script](/cnspec/cnspec-adv-install/linux.mdx) for cloud-init. To deploy agents with cloud-init, get an registration token via [Mondoo Console](https://console.mondoo.com/) -> Select Space -> Agents -> New Agent (➕Icon in action menu) and paste it into this snippet: + +```bash title="Command Line" +#!/bin/bash +export MONDOO_REGISTRATION_TOKEN='ey..gg' +bash -c "$(curl -sSL https://install.mondoo.com/sh)" +``` + +Once the machine is ready, the first scan will be performed about 30 seconds after the machine booted up. + +## Examples + +### AWS EC2 instance user data + +1. Save the snippet shown above to `mondoo-cloudinit.sh` and paste in your registration token: + + ```bash title="Command Line" + cat > mondoo-cloudinit.sh << EOF + #!/bin/bash + export MONDOO_REGISTRATION_TOKEN='eyJhbG..bn' + bash -c "$(curl -sSL https://install.mondoo.com/sh)" + EOF + ``` + +2. Launch a new instance + + ```bash title="Command Line" + # Note: you need to adapt the image-id, security-group-ids, key-name to your region and account + aws ec2 run-instances --region us-east-1 --image-id ami-0ad82a384c06c911e --security-group-ids sg-903004f8 --count 1 --instance-type t2.micro --key-name suki --user-data file://mondoo-cloudinit.sh + ``` + +![Installing cnspec via cloudinit](/videos/mondoo-ec2-cloudinit-cli.gif) + +You can see the results of the vulnerability scan in your Mondoo Console once the installation is complete: + +![See agent in console](/img/platform/infra/cloud/aws/aws_instance_results.png) + +Once the machine is up and running, it will report vulnerabilities to Mondoo automatically. Further documentation for the AWS CLI is available at [Launch, List, and Terminate Amazon EC2 Instances](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-instances.html) and [Running Commands on Your Linux Instance at Launch](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) + +In case of troubleshooting, have a look at the `/var/log/cloud-init-output.log` to see the cloudinit run output. diff --git a/docs/platform/infra/opsys/automation/overview.mdx b/docs/platform/infra/opsys/automation/overview.mdx new file mode 100644 index 000000000..24347b936 --- /dev/null +++ b/docs/platform/infra/opsys/automation/overview.mdx @@ -0,0 +1,22 @@ +--- +title: Overview of Secure Deployment Automation with Mondoo +sidebar_label: Overview +sidebar_position: 1 +description: Securely deploy servers and endpoints with Mondoo +--- + +Choose a deployment automation tool: + +- [Ansible](/platform/infra/opsys/automation/ansible/) + +- [Chef Infra](/platform/infra/opsys/automation/chef/) + +- [cloud-init](/platform/infra/opsys/automation/cloudinit/) + +Learn about [managing secrets](/platform/infra/opsys/automation/vault/). + +#### Get help + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/platform/infra/opsys/automation/vault.md b/docs/platform/infra/opsys/automation/vault.md new file mode 100644 index 000000000..5bdf23000 --- /dev/null +++ b/docs/platform/infra/opsys/automation/vault.md @@ -0,0 +1,112 @@ +--- +title: Secrets Management +sidebar_label: Secrets Management +sidebar_position: 5 +description: Learn how you can use secrets managers such as HashiCorp Vault, Google Cloud Secrets Manager, and AWS Secrets Manager with Mondoo. +image: /img/featured_img/mondoo-feature.jpg +--- + +In order to facilitate SSH scanning to a fleet of instances, Mondoo integrates with several vault systems: + +- AWS Secrets Manager +- AWS SSM Parameter Store +- Google Cloud Secrets Manager +- HashiCorp Vault +- macOS Keychain +- Windows credential store +- SystemD Secret Service +- Encrypted File + +### HashiCorp Vault + +Write a secret to the Create vault secret: + +```bash +vault kv put secret/vcenter/mondoo-read password="< password >" type="password" user="mondoo-read@vsphere.local" +``` + +Create an inventory yaml file with HashiCorp Vault: + +```yaml title=inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-inventory + labels: + environment: production +spec: + assets: + - name: + connections: + - type: vsphere + host: < ip of the ESXi or vCenter > + insecure: true + credentials: + - secret_id: vcenter/mondoo-read + discover: + targets: + - auto + annotations: + Owner: patrick@mondoo.com + vault: + name: cnspec-hashivault + type: hashicorp-vault + options: + url: < Url to vault > + token: < Token > +``` + +### Encrypted file + +Configure cnspec's vault to use the keyring `cnspec-client-vault` for secrets: + +```bash +cnspec vault configure mondoo-client-vault --type encrypted-file --option=password='changeme' --option path='/etc/opt/mondoo/vault.enc' +``` + +This outputs the following configuration: + +```yaml +spec: + vault: + name: mondoo-client-vault + options: + password: changeme + path: /etc/opt/mondoo/vault.enc + type: encrypted-file +``` + +Create an inventory yaml file with Linux Vault: + +```yaml title=/etc/opt/mondoo/inventory.yml +apiVersion: v1 +kind: Inventory +metadata: + name: cnspec-inventory + labels: + environment: production +spec: + assets: + - name: + connections: + - type: vsphere + host: < ip of the ESXi or vCenter > + insecure: true + credentials: + - secret_id: vcenter + discover: + targets: + - auto + vault: + name: mondoo-client-vault + options: + password: changeme + path: /etc/opt/mondoo/vault.enc + type: encrypted-file +``` + +Add a secret for a VMware vSphere API to the encrypted file vault: + +```bash +sudo cnspec vault add-secret vcenter '{ "type": "password", "user": "chris@vsphere.local", "password": "password" }' --inventory-file /etc/opt/mondoo/inventory.yml +``` diff --git a/docs/platform/infra/opsys/mondoo-cnspec.mdx b/docs/platform/infra/opsys/mondoo-cnspec.mdx new file mode 100644 index 000000000..beed4d3b5 --- /dev/null +++ b/docs/platform/infra/opsys/mondoo-cnspec.mdx @@ -0,0 +1,91 @@ +--- +title: Mondoo and cnspec +sidebar_label: Mondoo and cnspec +sidebar_position: 2 +description: This page provides an overview of how cnspec works with Mondoo +image: /img/featured_img/mondoo-feature.jpg +--- + +[cnspec](/cnspec/cnspec-about/) is a core component of Mondoo Platform. Think of it as both the CLI for Mondoo and part of its engine. This cross-platform binary evaluates systems and exposes misconfigurations and vulnerabilities that put your organization at risk. It's what enables Mondoo to assess and secure the IT infrastructure that powers your critical business systems. + +You can invoke cnspec directly from the command line to assess the local host, perform agentless scans of remote assets, or remotely query IT infrastructure using MQL. It can also run automatically as a background service. + +When combined with Mondoo Platform's management capabilities, cnspec can continuously assess your business-critical systems according to the policies you apply. Mondoo reports any deviation from those policies so that you can take immediate action. + +```bash +$ cnspec scan + +→ no provider specified, defaulting to local. Use --help to see all providers. +→ loaded configuration from /Users/tsmith/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ synchronize assets + + MacBook.localdomain ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% score + + +Asset: MacBook.localdomain +---------------------------- + +Data queries: +asset.title: "macOS, bare metal" +packages.list.length: 428 +title: "macOS, bare metal" +asset: { + kind: "baremetal" + version: "14.0" + title: "macOS, bare metal" + arch: "arm64" + platform: "macos" + runtime: "" + name: "MacBook.localdomain" +} + +Checks: +✕ Fail: C 50 Ensure AirDrop Is Disabled +✓ Pass: A 100 Disable Internet Sharing +✓ Pass: A 100 Ensure automatic checking of software updates enabled +✓ Pass: A 100 Enable security auditing +✓ Pass: A 100 Disable Remote Login +✓ Pass: A 100 Ensure automatic download of software updates enabled +✓ Pass: A 100 Enable Firewall + +.... + +Scanned 1 assets + +macOS + A MacBook.localdomain + +For detailed output, run this scan with "-o full". +``` + +## Communication matrix, IPs, and DNS names + +For Mondoo to function properly in your environment, these communications must be allowed. + +| From | To | Port | +| ------------ | ------------------------------------------------- | --------- | +| Command Line | Mondoo Backend (\*.api.mondoo.com) | https/443 | +| Command Line | Mondoo Install Scripts (install.mondoo.com) | https/443 | +| Command Line | Mondoo Package Repositories (releases.mondoo.com) | https/443 | +| Your Browser | Mondoo Console (console.mondoo.com) | https/443 | + +DNS names and static IP addresses for Mondoo environment: + +| DNS name | IP-Address | +| :------------------ | -------------- | +| us.api.mondoo.com | 34.160.242.34 | +| eu.api.mondoo.com | 34.102.168.217 | +| releases.mondoo.com | 34.110.159.213 | +| install.mondoo.com | 216.239.34.21 | +| install.mondoo.com | 216.239.38.21 | +| install.mondoo.com | 216.239.36.21 | +| install.mondoo.com | 216.239.32.21 | + +### Learn more + +- To learn more about cnspec, read [What Is cnspec?](/cnspec/cnspec-about/). +- To learn how to register cnspec, read [Register cnspec](/cnspec/cnspec-adv-install/registration/). + +--- diff --git a/docs/platform/infra/opsys/overview.mdx b/docs/platform/infra/opsys/overview.mdx new file mode 100644 index 000000000..327f7af22 --- /dev/null +++ b/docs/platform/infra/opsys/overview.mdx @@ -0,0 +1,47 @@ +--- +title: Overview of Server and Endpoint Security with Mondoo +sidebar_label: Overview +id: osoverview +sidebar_position: 1 +description: Secure your servers and endpoints with Mondoo +--- + +Mondoo secures the servers and endpoints that are the backbone of your business. Mondoo's cross-platform CLI, [cnspec](/cnspec/cnspec-about/), is a core Mondoo component that finds misconfigurations and vulnerabilities in Linux, macOS, and Windows assets. You install cnspec on your servers and endpoints and register them with Mondoo so that you can continuously monitor their security. + +To learn about how cnspec helps power Mondoo, read [Mondoo and cnspec](/platform/infra/opsys/mondoo-cnspec). + +#### Basic installation and registration instructions + +- [Install cnspec](/cnspec/) + +- [Register a cnspec installation with Mondoo](/cnspec/cnspec-adv-install/registration/) + +#### More installation and distribution options + +- [Register a cnspec installation with Mondoo using a credentials file](/cnspec/cnspec-adv-install/registration-keys/) + +- [Run cnspec as a service](/cnspec/cnspec-adv-install/service/) + +- [Linux installation options](/cnspec/cnspec-adv-install/linux/) + +- [macOS installation options](/cnspec/cnspec-adv-install/macos/) + +- [Windows installation options](/cnspec/cnspec-adv-install/windows/) + +- [Install with a standalone binary](/cnspec/#installation-options) + +#### Secure deployment automation + +- [Ansible](/platform/infra/opsys/automation/ansible/) + +- [Chef Infra](/platform/infra/opsys/automation/chef/) + +- [cloud-init](/platform/infra/opsys/automation/cloudinit/) + +- [Secrets management](/platform/infra/opsys/automation/vault/) + +#### Get help + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/platform/infra/overview.mdx b/docs/platform/infra/overview.mdx new file mode 100644 index 000000000..0ad48c0f2 --- /dev/null +++ b/docs/platform/infra/overview.mdx @@ -0,0 +1,95 @@ +--- +title: Integrate Your Infrastructure with Mondoo - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Add the assets in your infrastructure to Mondoo to assess their security and compliance +image: /img/featured_img/mondoo-feature.jpg +--- + +To assess and improve the security and compliance of your infrastructure, you must first integrate it with Mondoo. The Mondoo integration for each platform is unique, whether it's a Kubernetes controller, a Lambda function for deep AWS integration, or a simple client installed on an operating system. + +Find your platform and start integrating Mondoo across your systems. + +### [Cloud](/platform/infra/cloud/overview/) + +- [Amazon Web Services (AWS)](/platform/infra/cloud/aws/aws-overview/) + +- [Microsoft Azure](/platform/infra/cloud/azure/overview/) + +- [Google Cloud Platform (GCP)](/platform/infra/cloud/gcp/overview/) + +- [Kubernetes](/platform/infra/cloud/kubernetes/overview/) + +- [VMware](/platform/infra/cloud/vmware/) + +### [SaaS](/platform/infra/saas/overview/) + +- [GitHub](/platform/infra/saas/github/) + +- [GitLab](/platform/infra/saas/gitlab/) + +- [Google Workspace](/platform/infra/saas/google_workspace/) + +- [Microsoft 365](/platform/infra/saas/ms365/ms365-auto/) + +- [Okta](/platform/infra/saas/okta/) + +- [Slack](/platform/infra/saas/slack/) + +### [Network](/platform/infra/networking/overview/) + +- [Host (Domain or IP Address)](/platform/infra/networking/domain-ip/) + +### [Operating systems](/platform/infra/opsys/osoverview/) + +Mondoo's cross-platform CLI, [cnspec](/cnspec/cnspec-about/), is a core Mondoo component that finds misconfigurations and vulnerabilities in Linux, macOS, and Windows assets. You install cnspec on your servers and endpoints and register them with Mondoo so that you can continuously monitor their security. + +Integrate with a single server or endpoint: + +- [Install cnspec a single asset](/cnspec/) + +- [Register a single asset with Mondoo](/cnspec/cnspec-adv-install/registration/) + +Automate deployment of cnspec across your infrastructure: + +- [Ansible](/platform/infra/opsys/automation/ansible/) + +- [Chef Infra](/platform/infra/opsys/automation/chef/) + +- [cloud-init](/platform/infra/opsys/automation/cloudinit/) + +### [Supply chain](/platform/infra/supply/overview/) + +[Integrate with CI/CD testing:](/platform/infra/supply/cicd/overview/) + +- [Azure Pipelines](/platform/infra/supply/cicd/azure-pipelines/) + +- [CircleCI](/platform/infra/supply/cicd/circleci/) + +- [GitHub Actions](/platform/infra/supply/cicd/github-actions/) + +- [GitLab CI/CD](/platform/infra/supply/cicd/gitlab/) + +- [Jenkins](/platform/infra/supply/cicd/jenkins/) + +Use cnspec to ensure you build virtual instances that are free of security vulnerabilities: + +- [Docker](/cnspec/supplychain/docker/) + +- [HashiCorp Packer](/cnspec/supplychain/packer/) + +- [HashiCorp Terraform](/cnspec/supplychain/terraform/) + +Use cnspec to test containers for security vulnerabilities during development on your workstation before publishing to container registries: + +- [AWS Elastic Container Registry](/cnspec/supplychain/registry/aws_ecr/) + +- [Azure Container Registry](/cnspec/supplychain/registry/azure_acr/) + +- [Google Container Registry](/cnspec/supplychain/registry/gcp_gcr/) + +- [Docker Hub](/cnspec/supplychain/registry/docker_hub/) + +- [Harbor Container Registry](/cnspec/supplychain/registry/harbor/) + +--- diff --git a/docs/platform/infra/saas/_category_.json b/docs/platform/infra/saas/_category_.json new file mode 100644 index 000000000..b753a24dc --- /dev/null +++ b/docs/platform/infra/saas/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "SaaS", + "position": 3 +} diff --git a/docs/platform/infra/saas/github.mdx b/docs/platform/infra/saas/github.mdx new file mode 100644 index 000000000..ea7ccfc45 --- /dev/null +++ b/docs/platform/infra/saas/github.mdx @@ -0,0 +1,88 @@ +--- +title: Secure GitHub with Mondoo +sidebar_label: GitHub +sidebar_position: 2 +description: Assess the security of your GitHub repositories and organization with Mondoo +--- + +You can configure Mondoo to continuously scan your GitHub organization and repositories. Mondoo scans find misconfigurations and vulnerabilities that put your organization at risk. You deploy the integration once and always get the latest security assessments. + +:::tip + +You can also use Mondoo to automatically scan Kubernetes manifests, Terraform configuration files, and Docker containers in GitHub Actions. To learn more, read [Scan in GitHub Actions](/platform/infra/supply/cicd/github-actions/). + +::: + +## Prerequisite + +- [A Mondoo account](/platform/start/plat-start-acct/) + +- Access to a GitHub repository + +## Create a GitHub personal access token to give Mondoo access to the repository + +A _personal access token_ gives Mondoo the ability to access GitHub resources on your behalf. For Mondoo to continuously monitor your GitHub repository, you must create a personal access token. + +1. Log into GitHub. If you haven't verified your email address with GitHub, do that now. + +2. In the upper-right corner of any GitHub page, select your profile photo and then select Settings. + +3. In the left sidebar, select **Developer settings**. + +4. In the left sidebar, under **Personal access tokens**, select **Fine-grained tokens**. + +5. Select **Generate new token**. + +6. Under **Token name**, enter a name for the token, such as `mondoo-frontend-repo`. + +7. Under **Expiration**, specify the many days after which the token expires. + +8. Under **Description**, explain the purpose of the token, such as `Gives Mondoo read-only access to the frontend repo`. + +9. Under **Resource owner**, the owner of the repository you want to monitor. The token you create can only access resources owned by the selected resource owner. + + If your organization requires approval for fine-grained personal access tokens, you see a box below the **Resource owner** drop-down list. In that box, enter your justification for the new token. + + If you don't see the owner of the repository you want to monitor, it's likely that they don't support fine-grained personal access tokens. To learn more, read [Setting a personal access token policy for your organization](https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization). + +10. Under Repository access, select **Only select repositories**. + +11. In the **Selected repositories** list, choose the repository you want to monitor with Mondoo. + +12. Under **Permissions**, select **Repository permissions** and give the token **Read-only** access to every permission that has a Read-only option. + +13. Select the **Generate token** button. (If your resource owner requires approval for tokens, the button reads **Generate token and request access**.) + +To learn more, read [Creating a fine-grained personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token) in the GitHub documentation. + +## Set up a GitHub integration + +1. Access the Integrations > Add > GitHub page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then under **SaaS**, select **GitHub**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under SaaS, select **GitHub**. + + ![Add a GitHub Integration in Mondoo](/img/platform/infra/saas/github/github.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the GitHub repository. + +3. In the **Organization** box, enter the name of the GitHub organization containing the repository you want to monitor. In the **Repository** box, enter the name of the repository. Find these values in the URL path to the repository landing page. For example, this organization's name is _Lunalectric_ and the repository is _frontend_: + + ![GitHub organization name](/img/platform/infra/saas/github/repo.png) + +4. In the **Provide your personal access token** box, paste the GitHub token you generated in the previous section. + +5. Select the **START SCANNING** button. + +6. On the Recommended Policies page, enable the policies on which you want to base assessments of your GitHub repository. To learn more, read [Manage Policies](/platform/security/posture/policies/). + + Mondoo begins scanning your GitHub repository and, when completed, presents results on the INVENTORY page. + +## Learn more + +For more information, explore the complete [Mondoo GitHub Resource Pack Reference](/mql/resources/github-pack/). + +--- diff --git a/docs/platform/infra/saas/gitlab.mdx b/docs/platform/infra/saas/gitlab.mdx new file mode 100644 index 000000000..6ac26b65a --- /dev/null +++ b/docs/platform/infra/saas/gitlab.mdx @@ -0,0 +1,98 @@ +--- +title: Secure GitLab with Mondoo +sidebar_label: GitLab +sidebar_position: 3 +description: Assess the security of your GitLab groups with Mondoo +--- + +You can configure Mondoo to continuously scan your GitLab groups. Mondoo scans find misconfigurations and vulnerabilities that put your organization at risk. You deploy the integration once and always get the latest security assessments. + +:::tip + +You can also use Mondoo to automatically scan Kubernetes manifests, Terraform configuration files, and Docker containers in GitLab CI/CD. To learn more, read [Scan in GitLab CI/CD](/platform/infra/supply/cicd/gitlab/). + +::: + +## Prerequisite + +- [A Mondoo account](/platform/start/plat-start-acct/) + +- Access to a GitLab group + +## Create a personal access token to give Mondoo access to the GitLab group + +A _personal access token_ gives Mondoo the ability to access GitLab resources on your behalf. For Mondoo to continuously monitor your GitLab groups, you must create a personal access token. + +1. Log into GitLab. + +2. In the upper-left corner of any GitLab page, select your profile photo and then select **Edit Profile**. + +3. In the left sidebar, select **Access Tokens**. + +4. In the **Token name** box, enter a name for the token, such as `mondoo-frontend-repo`. + +5. Under **Expiration date**, specify the date on which to expire the token. + +6. Under **Select scopes**, check these scopes: + + - read_api + + - read_user + + - read_repository + + - read_registry + +7. Select the **Create a personal access token** button. + +8. Scroll to the top of the page. + +9. When GitLab finishes creating the token, it displays this message: "Your new personal access token has been created." Below the message, locate the **Your new personal access token** box. + +10. Use the copy icon to the right of the box to copy **Your new personal access token**. + +To learn more, read [Create a personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token) in the GitLab documentation. + +## Set up a GitLab integration + +1. In a new browser tab, access the Integrations > Add > GitLab page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then under **SaaS**, select **GitLab**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under SaaS, select **GitLab**. + + ![Add a GitLab Integration in Mondoo](/img/platform/infra/saas/gitlab/gitlab.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the GitLab group. + +3. If you self-host GitLab, enter your custom GitLab URL in the **Provide a GitLab base URL** box. If you don't self-host GitLab, leave the box empty. + +4. In the **Define the GitLab group to scan** box, enter the name of the GitLab group you want to monitor. Find this value in the URL path to the group landing page. For example, this group's name is _lunalectric_: + + ![GitLab group name](/img/platform/infra/saas/gitlab/group.png) + +5. In the **Provide your personal access token** box, paste the GitLab token you generated in the previous section. + +6. Choose **Discovery options** to determine the extent of Mondoo scanning: + + ![GitLab discovery options](/img/platform/infra/saas/gitlab/discovery.png) + + - To scan all the GitLab groups to which your token provides access, enable **Discover all groups the token can access**. + + - To scan all the GitLab projects to which your token provides access, enable **Discover all projects the token can access**. + + - To scan all Terraform files in the projects to which your token provides access, enable **Discover all Terraform files in projects**. + +7. Select the **START SCANNING** button. + +8. On the Recommended Policies page, enable the policies on which you want to base assessments of your GitLab group. To learn more, read [Manage Policies](/platform/security/posture/policies/). + + Mondoo begins scanning your GitLab group and, when completed, presents results on the INVENTORY page. + +## Learn more + +For more information, explore the complete [Mondoo GitLab Resource Pack Reference](/mql/resources/gitlab-pack/). + +--- diff --git a/docs/platform/infra/saas/google_workspace.md b/docs/platform/infra/saas/google_workspace.md new file mode 100644 index 000000000..63546acaf --- /dev/null +++ b/docs/platform/infra/saas/google_workspace.md @@ -0,0 +1,83 @@ +--- +title: Secure Google Workspace with Mondoo +sidebar_label: Google Workspace +sidebar_position: 4 +description: Set up a Google Workspace integration in Mondoo +--- + +The Mondoo Google Workspace integration lets you continuously scan your Google Workspace resources, such as users and applications. It finds misconfigurations and vulnerabilities that put your organization at risk. You deploy the integration once and always get the latest security assessments for new accounts and resources. + +## Configure access to the Google Workspace API + +:::note + +These steps for configuring [Admin SDK API](https://developers.google.com/admin-sdk) access to your +Google Workspace environment rely on Google Cloud (GCP) even if you aren't otherwise using GCP. + +::: + +1. [Create a Google Workspace service account](https://support.google.com/a/answer/7378726). + + - In addition to the APIs that Google requires, also enable: + + - Cloud Identity API + + - Google Drive API + + - After creating the service account, be sure to record the **Unique ID** on the details page. This is the Client ID to use in the next step. + + - Be sure to download and protect the JSON credentials file. + +2. Log into the [Google Workspace Admin Portal](https://admin.google.com). + +3. In the left-side navigation, select **Security -> Access and data controls -> API controls**. + +4. Select [**Domain-wide Delegation**](https://developers.google.com/workspace/guides/create-credentials#delegate_domain-wide_authority_to_your_service_account) and then select **Add new**. + +5. For the **Client ID** enter the **Unique ID** of the service account you created. + +6. Paste this comma-delimited list to add all 16 read-only OAuth scopes: + + ```text + https://www.googleapis.com/auth/admin.chrome.printers.readonly,https://www.googleapis.com/auth/admin.directory.customer.readonly,https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly,https://www.googleapis.com/auth/admin.directory.device.mobile.readonly,https://www.googleapis.com/auth/admin.directory.domain.readonly,https://www.googleapis.com/auth/admin.directory.group.member.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly,https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly,https://www.googleapis.com/auth/admin.directory.user.alias.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.userschema.readonly,https://www.googleapis.com/auth/admin.reports.audit.readonly,https://www.googleapis.com/auth/admin.reports.usage.readonly,https://www.googleapis.com/auth/admin.directory.user.security,https://www.googleapis.com/auth/cloud-identity.groups.readonly + ``` + +7. In the [Google Workspace Admin Portal](https://admin.google.com), navigate to **Account -> Account Settings** and record the **Customer ID**. + +## Add a new Google Workspace integration + +1. Access the Integrations > Add > Google Workspace page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Google Workspace**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under SaaS, select **Google Workspace**. + + ![Add a Google Workspace Integration in Mondoo](/img/platform/infra/saas/gw/gw-top.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Google Workspace account. + +3. In the **Mandated user's email** box, enter the email address of a Google Workspace user with super admin access. Mondoo relies on this user's privileges to access the information it needs. You can choose an existing super admin or create one just for Mondoo. + +4. Under **Provide your Google Service Account config**, upload the GCP service account's JSON key that you downloaded in the previous section: + + Drag the file and drop it in the **Drag and drop your .json file here** box. + + OR + + In the **Drag and drop your .json file here** box, select the cloud icon and choose the file to upload. + + ![integration-create-image](/img/platform/infra/saas/gw/gw-bottom.png) + +5. To complete the integration, select the **START SCANNING** button. + +6. On the Recommended Policies page, enable the policies on which you want to base assessments of your Google Workspace environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + + Mondoo begins scanning the assets in your Google Workspace and, when completed, presents the results on the INVENTORY page. + +## Learn more + +For more information, explore the complete [Mondoo Google Workspace Resource Pack Reference](/mql/resources/google-workspace-pack/). + +--- diff --git a/docs/platform/infra/saas/ms365/_category_.json b/docs/platform/infra/saas/ms365/_category_.json new file mode 100644 index 000000000..490c8ffdb --- /dev/null +++ b/docs/platform/infra/saas/ms365/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Microsoft 365", + "position": 5 +} diff --git a/docs/platform/infra/saas/ms365/_include-graph.mdx b/docs/platform/infra/saas/ms365/_include-graph.mdx new file mode 100644 index 000000000..782aecf24 --- /dev/null +++ b/docs/platform/infra/saas/ms365/_include-graph.mdx @@ -0,0 +1,50 @@ +1. In the navigation sidebar, select **API permissions**. + +![API permissions](/img/platform/infra/cloud/azure/api-permissions.png) + +By default, Microsoft grants your new application `User.Read` permission for Microsoft Graph. It's not required for Mondoo, so you can remove it. + +2. Select **+ Add a permission**. + +![Add permission in Azure](/img/platform/infra/cloud/azure/select-add-permission.png) + +3. From the list of **Commonly used Microsoft APIs**, select **Microsoft Graph**. + +![API permissions](/img/platform/infra/cloud/azure/request-api-permission.png) + +4. Because Mondoo acts as a service, select **Application permissions**. + +5. Select **expand all** to see all permissions. Then select the required API permissions: + +
+Show or hide required API permissions. + +| Microsoft Graph | Type | Description | +| -------------------------------------- | ----------- | ------------------------------------------------------- | +| IdentityProvider.Read.All | Application | Read identity providers | +| Policy.Read.All | Application | Read your organization's policies | +| Policy.Read.ConditionalAccess | Application | Read your organization's conditional access policies | +| Policy.Read.PermissionGrant | Application | Read consent and permission grant policies | +| SecurityActions.Read.All | Application | Read your organization's security actions | +| SecurityEvents.Read.All | Application | Read your organization's security events | +| DeviceManagementConfiguration.Read.All | Application | Read Microsoft Intune device configuration and policies | + +
+ +6. Select the **Add permissions** button. + +7. Grant Mondoo read permissions for **SharePoint**. + + | SharePoint APIs | Type | Description | + | --------------------- | ----------- | ---------------------------------- | + | Sites.FullControl.All | Application | Read items in all site collections | + +8. Select the **Add permissions** button. + +9. Grant Mondoo read permissions for **Office 365 Exchange Online**. You need to search in **APIs my organization uses** + + | Office 365 Exchange Online | Type | Description | + | -------------------------- | ----------- | ----------------------------------------- | + | Exchange.ManageAsApp | Application | Have full control of all site collections | + +10. To complete the process, select **Grant admin consent for (your tenant name)** and select the **Yes** button to confirm. diff --git a/docs/platform/infra/saas/ms365/ms365-auto.md b/docs/platform/infra/saas/ms365/ms365-auto.md new file mode 100644 index 000000000..c189f095c --- /dev/null +++ b/docs/platform/infra/saas/ms365/ms365-auto.md @@ -0,0 +1,277 @@ +--- +title: Quick Setup - MS 365 Continuous Scanning +sidebar_label: Quick Setup - MS 365 Continuous Scanning +sidebar_position: 1 +description: Set up Mondoo to assess Microsoft 365 for security misconfigurations. +image: /img/featured_img/mondoo-365.jpg +--- + +The Mondoo Microsoft 365 integration lets you continuously scan your Microsoft 365 resources, such as users and applications. It finds misconfigurations and vulnerabilities that put your organization at risk. You deploy the integration once and always get the latest security assessments for new accounts and resources. + +## Prerequisites + +Before you integrate Microsoft 365 with Mondoo, be sure you: + +- Have a [Mondoo account](/platform/start/plat-start-acct/) with Editor or Owner permissions for the space in which you want to add the integration. + +- Have an [Azure account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) with an active subscription and permission to manage applications in Microsoft Entra ID (formerly Active Directory). Any of these [Microsoft Entra ID roles](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) include the required permissions: + + - [Global Administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#global-administrator) - Create and manage all aspects of app registrations and enterprise apps. + + - [Application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#application-administrator) - Create and manage all aspects of app registrations and enterprise apps. + + - [Cloud application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#cloud-application-administrator) - Create and manage all aspects of app registrations and enterprise apps except App Proxy. + +- Are logged into Azure using the Azure CLI. + + - If you use the Azure Cloud Shell, you don't need to also log into the Azure CLI. To learn more, read the [Quick start for Azure Cloud Shell](https://learn.microsoft.com/en-us/azure/cloud-shell/quickstart?tabs=azurecli). + + - If you use a Linux shell or macOS shell, log into the Azure CLI. + +
+ If you're not already an Azure CLI user: +
+
    +
  1. + + Install the Azure CLI. + +
  2. +
  3. + Log into the Azure CLI from PowerShell or a Linux/macOS CLI by + entering: +
    + az login --allow-no-subscriptions +
    + Azure opens your web browser and prompts you to log in. After you do + so, you can return to the CLI. +
  4. +
+
+
+ +## Register an Azure app + +Continuous scanning of Microsoft 365 requires a Microsoft Entra ID app registration in your Azure tenant. Registering Mondoo with Azure establishes a trust relationship between Mondoo and the Microsoft identity platform. The trust is unidirectional: Mondoo trusts the Microsoft identity platform, and not the other way around. The Azure app registration creates a [service principal](https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-how-applications-are-added#what-are-service-principals-and-where-do-they-come-from) to represent Mondoo in any tenants and subscriptions in which it acts. + +:::note + +This section describes Microsoft's automatic app registration. This approach works in simpler Microsoft 365 environments and doesn't let you use your own certificates for authentication. + +If you want to use your own certificate or if you have a very complex Microsoft 365 environment, use the [manual app registration approach](/platform/infra/saas/ms365/ms365-manual/). Manual registration is more involved, but is a reliable way to implement a permanent, production-ready integration in all environments. + +::: + +To configure your Azure resources, you must: + +Step A. Create the app registration and certificate + +Step B. Grant permissions to access Microsoft Graph (API permissions) + +Step C: Assign the Global Reader role to the app + +Like any service that integrates with Azure, Mondoo must have an app registration and service principal. To learn more about creating a new app registration and service principal, read [App registration, app objects, and service principals](https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#app-registration-app-objects-and-service-principals) in the Azure documentation. + +You create and register the app using the Azure CLI. + +### Step A: Create the app and certificate + +A single command in the Azure CLI performs these tasks: + +- Creates the application registration and service principal in Microsoft Entra ID. + +- Creates a certificate and assigns it to the newly created app. + +1. In the Azure CLI, enter: + +```bash +az ad sp create-for-rbac --name "mondoo-ms365" --create-cert +``` + +When successful, the Azure CLI returns results like these: + +```bash +"appId": "63c35483-c62f-2600-a097-a6e44d8dcdf6", +"displayName": "mondoo-ms365", +"fileWithCertAndPrivateKey": "/Users/stella/tmpkqyme3rm.pem", +"password": null, +"tenant": "e4e2600a-2d3d-2600-aa70-b9d8c8ec2600" +``` + +2. Copy your results and paste them somewhere handy; you'll need them later in this process. + +3. Copy the created PEM file (in the example above, it's named tmpkqyme3rm.pem) and save it; you'll need it later in this process. + +#### Step B: Grant permissions to access Microsoft Graph (API permissions) + +1. Copy this content and save it in a file on your local your system (in this example, the file name is app-manifest.json): + +```json +[ + { + "resourceAppId": "00000003-0000-0000-c000-000000000000", + "resourceAccess": [ + { + "id": "e321f0bb-e7f7-481e-bb28-e3b0b32d4bd0", + "type": "Role" + }, + { + "id": "246dd0d5-5bd0-4def-940b-0421030a5b68", + "type": "Role" + }, + { + "id": "37730810-e9ba-4e46-b07e-8ca78d182097", + "type": "Role" + }, + { + "id": "9e640839-a198-48fb-8b9a-013fd6f6cbcd", + "type": "Role" + }, + { + "id": "5e0edab9-c148-49d0-b423-ac253e121825", + "type": "Role" + }, + { + "id": "bf394140-e372-4bf9-a898-299cfc7564e5", + "type": "Role" + }, + { + "id": "dc377aa6-52d8-4e23-b271-2a7ae04cedf3", + "type": "Role" + } + ] + }, + { + "resourceAppId": "00000003-0000-0ff1-ce00-000000000000", + "resourceAccess": [ + { + "id": "678536fe-1083-478a-9c59-b99265e6b0d3", + "type": "Role" + } + ] + }, + { + "resourceAppId": "00000002-0000-0ff1-ce00-000000000000", + "resourceAccess": [ + { + "id": "dc50a0fb-09a3-484d-be87-e023b12c6440", + "type": "Role" + } + ] + } +] +``` + +
+Show or hide descriptions of the above API permissions. + +These tables show the permissions that the JSON file above grants. If you prefer, you can [add them manually](/platform/infra/saas/ms365/ms365-manual/#step-b-grant-permissions-to-access-microsoft-graph-api-permissions) in the Azure Portal. + +| Microsoft Graph | Type | Description | +| -------------------------------------- | ----------- | ------------------------------------------------------- | +| IdentityProvider.Read.All | Application | Read identity providers | +| Policy.Read.All | Application | Read your organization's policies | +| Policy.Read.ConditionalAccess | Application | Read your organization's conditional access policies | +| Policy.Read.PermissionGrant | Application | Read consent and permission grant policies | +| SecurityActions.Read.All | Application | Read your organization's security actions | +| SecurityEvents.Read.All | Application | Read your organization's security events | +| DeviceManagementConfiguration.Read.All | Application | Read Microsoft Intune device configuration and policies | + +| SharePoint APIs | Type | Description | +| --------------------- | ----------- | ---------------------------------- | +| Sites.FullControl.All | Application | Read items in all site collections | + +| Office 365 Exchange Online | Type | Description | +| -------------------------- | ----------- | ----------------------------------------- | +| Exchange.ManageAsApp | Application | Have full control of all site collections | + +
+ +2. Run these commands to grant the permissions in the JSON file and give administrator consent: + +``` +az ad app update --id YOUR-APP-ID --required-resource-accesses @app-manifest.json + +az ad app permission admin-consent --id YOUR-APP-ID +``` + +For YOUR-APP-ID, substitute the ID of the app you created. + +### Step C: Assign the Global Reader role to the app + +1. In the Entra ID portal, go to **Identity (Roles & admins)**. + +2. Use the search box to find the Global Reader role. Select the name of the role (not the check box). THe Assignments page opens. + +3. Select **+ Add assignments**. + +4. Find and select the newly created app, **mondoo-ms365**. + +5. Assign the **mondoo-ms365** app the **Global Reader** role. + +6. When you return to the Assignments page, select **Refresh** and verify that the mondoo-ms365 app has been assigned the Global Reader role. + +## Add a new Microsoft 365 integration in the Mondoo Console + +After you've created and granted permissions to a new app registration, you can create a Mondoo Microsoft 365 integration. You need some values from the app registration you created in the instructions above. + +1. Access the Integrations > Add > Microsoft 365 page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Microsoft 365**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Cloud Security, select **Microsoft 365**. + + ![integration-create-image](/img/platform/infra/saas/ms365/add-int-ms365-top.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Microsoft 365 tenant. + +3. In the **Enter Application (client) ID** box, enter the value from the app registration's **Application (client) ID** box. + +4. In the **Enter the Directory (tenant) ID** box, enter the value from the app registration's **Directory (tenant) ID** box. + +5. Specify the subscriptions for Mondoo to continuously scan. + + - To continuously scan all subscriptions in the tenant, leave the **Scan all subscriptions connected to the Directory (tenant) ID** toggle enabled. + + - To choose the subscriptions to scan, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Allowlist, and enter the subscription ID to scan. + + - To scan **all** subscriptions except those you specify, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Denylist, and enter the names of the subscriptions you don't want Mondoo to scan. + +6. Provide a certificate (a [PEM](https://aboutssl.org/what-is-pem-certificate-file/) (privacy-enhanced mail) file) for Mondoo to securely authenticate with the app (service principal) you created. + +The certificate file must have the `.pem` extension and must contain both the private key and the certificate in this order: + +``` +-----BEGIN PRIVATE KEY----- +key goes here +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +certificate goes here +-----END CERTIFICATE----- +``` + +Upload the certificate to Mondoo: In the **Drag and drop your .pem file here** box, select the cloud icon and choose the file to upload. + +![integration-create-image](/img/platform/infra/saas/ms365/add-int-ms365-bottom.png) + +7. To complete the integration, select the **START SCANNING** button. + +8. On the Recommended Policies page, enable the policies on which you want to base assessments of your ms365 environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +Mondoo begins scanning your Microsoft 365 resources. When it completes, you can see results on the INVENTORY page. To learn more, read [Monitor Your Infrastructure Security](/platform/security/posture/monitor/). + +:::info Didn't get the expected results? + +Read [Test and Troubleshoot Microsoft 365 Configuration](/platform/infra/saas/ms365/troubleshoot/). + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Integrate Mondoo with other cloud platforms in your infrastructure](/platform/infra/cloud/overview/) + +--- diff --git a/docs/platform/infra/saas/ms365/ms365-manual.mdx b/docs/platform/infra/saas/ms365/ms365-manual.mdx new file mode 100644 index 000000000..bf6c5cbb6 --- /dev/null +++ b/docs/platform/infra/saas/ms365/ms365-manual.mdx @@ -0,0 +1,230 @@ +--- +title: Manual Setup - MS 365 Continuous Scanning +sidebar_label: Manual Setup - MS 365 Continuous Scanning +sidebar_position: 2 +description: Take the manual approach to configuring the Mondoo MS365 integration to scan Microsoft 365 resources. +image: /img/featured_img/mondoo-365.jpg +--- + +## Prerequisites + +Before you integrate Microsoft 365 with Mondoo, be sure you: + +- Have a [Mondoo account](/platform/start/plat-start-acct/) with Editor or Owner permissions for the space in which you want to add the integration. + +- Have an [Azure account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) with an active subscription and permission to manage applications in Microsoft Entra ID (formerly Active Directory). Any of these [Microsoft Entra ID roles](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference) include the required permissions: + + - [Global Administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#global-administrator) - Create and manage all aspects of app registrations and enterprise apps. + + - [Application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#application-administrator) - Create and manage all aspects of app registrations and enterprise apps. + + - [Cloud application administrator](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference#cloud-application-administrator) - Create and manage all aspects of app registrations and enterprise apps except App Proxy. + +- Are logged into Azure using the Azure CLI. + + - If you use the Azure Cloud Shell, you don't need to also log into the Azure CLI. To learn more, read the [Quick start for Azure Cloud Shell](https://learn.microsoft.com/en-us/azure/cloud-shell/quickstart?tabs=azurecli). + + - If you use a Linux shell or macOS shell, log into the Azure CLI. + +
+ If you're not already an Azure CLI user: +
+
    +
  1. + + Install the Azure CLI. + +
  2. +
  3. + Log into the Azure CLI from PowerShell or a Linux/macOS CLI by + entering: +
    + az login --allow-no-subscriptions +
    + Azure opens your web browser and prompts you to log in. After you do + so, you can return to the CLI. +
  4. +
+
+
+ +## Register an Azure app + +Continuous scanning of Microsoft 365 requires a Microsoft Entra ID app registration in your Azure tenant. Registering Mondoo with Azure establishes a trust relationship between Mondoo and the Microsoft identity platform. The trust is unidirectional: Mondoo trusts the Microsoft identity platform, and not the other way around. The Azure app registration creates a [service principal](https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-how-applications-are-added#what-are-service-principals-and-where-do-they-come-from) to represent Mondoo in any tenants and subscriptions in which it acts.### Manual app registration option + +To configure your Azure resources, you must: + +Step A: Register an app with Azure and create a service principal + +Step B: Grant permissions to access Microsoft Graph (API permissions) + +Step C: Assign the Global Reader role + +Step D: Upload the application certificate + +### Step A: Register an app with Azure and create a service principal + +Like any service that integrates with Azure, Mondoo must have an app registration. To learn more about creating a new app registration, read [App registration, app objects, and service principals](https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal#app-registration-app-objects-and-service-principals) in the Azure documentation. + +1. Log into the [Azure portal](https://portal.azure.com/) as a global administrator, application administrator or cloud application administrator. + +2. Find and select **Microsoft Entra ID**. + +3. In the navigation sidebar, select **App registrations**. + +![Azure app registrations](/img/platform/infra/cloud/azure/app-regs.png) + +4. Select **+ New registration**. + +![create a new app registration in Azure](/img/platform/infra/cloud/azure/new-app-reg.png) + +5. Enter the application name `mondoo-ms365` and select **Accounts in this organizational directory only** as the supported account type. Mondoo does not require an application redirect URI. + +6. Select the **Register** button. + +Microsoft creates the application ID and displays it in the application registration overview. + +![new app registration in Azure](/img/platform/infra/cloud/azure/after-new-app-reg.png) + +Keep this page open as you continue to the next step. + +### Step B: Grant permissions to access Microsoft Graph (API permissions) + +import Graph from "./_include-graph.mdx"; + +{" "} + +### Step C: Assign the Global Reader" role + +1. In the Entra ID portal, go to **Identity (Roles & admins)**. + +2. Use the search box to find the Global Reader role. Select the name of the role (not the check box). THe Assignments page opens. + +3. Select **+ Add assignments**. + +4. Find and select the newly created app, **mondoo-ms365**. + +5. Assign the **mondoo-ms365** app the **Global Reader** role. + +6. When you return to the Assignments page, select **Refresh** and verify that the mondoo-ms365 app has been assigned the Global Reader role. + +### Step D: Upload the application certificate. + +The app registration and your Mondoo integration must share a [PEM](https://aboutssl.org/what-is-pem-certificate-file/) (privacy-enhanced mail) certificate for secure authentication. The certificate must not be password protected. + +Create a PEM certificate using the method approved by your organization's security team. You need two files: + +- The file you upload to Azure must have only the certificate, not the private key. + +- The file you upload to Mondoo Console (in the [Add a new Azure integration in the Mondoo Console](#add-a-new-microsoft-365-integration-in-the-mondoo-console) section below) must have both the private key and the certificate. It must have a `.pem` extension and must use this format and order of information: + +``` +-----BEGIN PRIVATE KEY----- +key goes here +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +certificate goes here +-----END CERTIFICATE----- +``` + +
+Generate a self-signed certificate for testing + +For testing purposes only, you can use OpenSSL toolkit together with req to generate a certificate. Run this command in Linux shell, macOS shell, or Azure Cloud shell (bash): + +```shell +openssl req -newkey rsa:4096 -x509 -sha512 -days 365 -nodes -out certificate.pem -keyout privatekey.key +``` + +Add the private key to the beginning of the PEM file: + +```shell +cat privatekey.key certificate.pem > certificate.combo.pem +``` + +
+ +Upload the certificate to Azure: + +1. From the Azure portal home, select **Microsoft Entra ID**. + +2. In the navigation sidebar, select **App registrations**. + +3. Select the app you created. + +4. In the sidebar under the app name, select **Certificate & secrets**. + +5. Select **Certificates** and then select **Upload certificate**. + +6. Select the PEM certificate and enter a description, such as `Mondoo certificate`. + +:::info + +Be sure to choose the file containing only the certificate, not the private key. + +::: + +7. Select the **Add** button. + +## Add a new Microsoft 365 integration in the Mondoo Console + +After you've created and granted permissions to a new app registration, you can create a Mondoo Microsoft 365 integration. You need some values from the app registration you created in the instructions above. + +1. Access the Integrations > Add > Microsoft 365 page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Microsoft 365**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Cloud Security, select **Microsoft 365**. + + ![integration-create-image](/img/platform/infra/saas/ms365/add-int-ms365-top.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Microsoft 365 tenant. + +3. In the **Enter Application (client) ID** box, enter the value from the app registration's **Application (client) ID** box. + +4. In the **Enter the Directory (tenant) ID** box, enter the value from the app registration's **Directory (tenant) ID** box. + +5. Specify the subscriptions for Mondoo to continuously scan. + + - To continuously scan all subscriptions in the tenant, leave the **Scan all subscriptions connected to the Directory (tenant) ID** toggle enabled. + + - To choose the subscriptions to scan, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Allowlist, and enter the subscription ID to scan. + + - To scan **all** subscriptions except those you specify, disable the **Scan all subscriptions connected to the Directory (tenant) ID** toggle, select Denylist, and enter the names of the subscriptions you don't want Mondoo to scan. + +6. Provide a certificate (a [PEM](https://aboutssl.org/what-is-pem-certificate-file/) (privacy-enhanced mail) file) for Mondoo to securely authenticate with the app (service principal) you created. + +The certificate file must have the `.pem` extension and must contain both the private key and the certificate in this order: + +``` +-----BEGIN PRIVATE KEY----- +key goes here +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +certificate goes here +-----END CERTIFICATE----- +``` + +Upload the certificate to Mondoo: In the **Drag and drop your .pem file here** box, select the cloud icon and choose the file to upload. + +![integration-create-image](/img/platform/infra/saas/ms365/add-int-ms365-bottom.png) + +7. To complete the integration, select the **START SCANNING** button. + +8. On the Recommended Policies page, enable the policies on which you want to base assessments of your ms365 environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + +Mondoo begins scanning your Microsoft 365 resources. When it completes, you can see results on the INVENTORY page. To learn more, read [Monitor Your Infrastructure Security](/platform/security/posture/monitor/). + +:::info Didn't get the expected results? + +Read [Test and Troubleshoot Microsoft 365 Configuration](/platform/infra/saas/ms365/troubleshoot/). + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Integrate Mondoo with other cloud platforms in your infrastructure](/platform/infra/cloud/overview/) diff --git a/docs/platform/infra/saas/ms365/troubleshoot.mdx b/docs/platform/infra/saas/ms365/troubleshoot.mdx new file mode 100644 index 000000000..7a786ecc3 --- /dev/null +++ b/docs/platform/infra/saas/ms365/troubleshoot.mdx @@ -0,0 +1,84 @@ +--- +title: Test and Troubleshoot Microsoft 365 Configuration +sidebar_label: Test and Troubleshoot +sidebar_position: 3 +description: Test configuration of the Mondoo Microsoft 365 integration. +image: /img/featured_img/mondoo-365.jpg +--- + +## Test the Microsoft 365 configuration + +Once you've configured Microsoft 365 to communicate with Mondoo, it's a good idea to test and ensure that the app registration and the permissions work as expected. You test using Mondoo's open source security scanning CLI, cnspec.## Download and install cnspec and an Azure policy bundle + +1. From your terminal (Linux shell, macOS shell, or Azure Cloud Shell), download the latest cnspec package from here: [https://releases.mondoo.com/cnspec/](https://releases.mondoo.com/cnspec/) + +Example: + +(This is just an example; be sure to use the latest version.) + +```bash +wget https://releases.mondoo.com/cnspec/8.9.0/cnspec_8.9.0_linux_amd64.tar.gz +tar -xvf cnspec_8.9.0_linux_amd64.tar.gz +``` + +2. From https://github.com/mondoohq/cnspec-policies/tree/main/core, download the open source Azure policy bundle (mondoo-ms365-security.mql.yaml): + +```bash +git clone https://github.com/mondoohq/cnspec-policies.git +``` + +## Scan with cnspec + +Scan the platform using the downloaded policy bundle: + +```bash +./cnspec scan ms365 --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --policy-bundle mondoo-ms365-security.mql.yaml +``` + +You can also run a specific policy: + +```bash +./cnspec run ms365 -c 'microsoft.policies.identitySecurityDefaultsEnforcementPolicy["isEnabled"] == false' --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID + +./cnspec run ms365 -c "microsoft.security.latestSecureScores.controlScores.one( _['controlName'] == 'MFARegistrationV2' && _['score'] == 9)" --certificate-path certificate.combo.pem --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID +``` + +For `YOUR-TENANT-ID`, and `YOUR-CLIENT-ID`, substitute your information. + +Pay special attention to the queries showing `Error` results; they can result from improper permissions. + +## Troubleshoot: Scan with cnspec using a client secret + +If the scan above is unsuccessful, try using a client secret to authenticate and scan. + +Create a client secret: + +1. From the Azure portal home, select **Microsoft Entra ID**. + +2. In the navigation sidebar, select **App registrations**. + +3. Select the app you created for Mondoo. + +4. In the sidebar under the app name, select **Certificate & secrets**. + +5. Select **New client secret**. + +6. Enter a description for the client secret. + +7. For Duration, specify a time after which the secret expires. + +8. Select **Add** and quickly record the `Value`; it will disappear shortly. + +Scan with cnspec using the client secret: + +```bash +./cnspec scan ms365 --client-secret YOUR-CLIENT-SECRET-VALUE --tenant-id YOUR-TENANT-ID --client-id YOUR-CLIENT-ID --policy-bundle mondoo-ms365-security.mql.yaml +``` + +For `YOUR-TENANT-ID`, and `YOUR-CLIENT-ID`, substitute your Azure information. + +For `YOUR-CLIENT-SECRET-VALUE`, substitute the value you recorded above. + +If this scan is successful, then the issue is with your certificate. Follow the steps above again to provide a new certificate. + +--- diff --git a/docs/platform/infra/saas/okta.mdx b/docs/platform/infra/saas/okta.mdx new file mode 100644 index 000000000..c84ce47f0 --- /dev/null +++ b/docs/platform/infra/saas/okta.mdx @@ -0,0 +1,42 @@ +--- +title: Secure Okta with Mondoo +sidebar_label: Okta +sidebar_position: 6 +description: Set up an Okta integration in Mondoo +--- + +The Mondoo Okta integration lets you continuously scan your Okta resources. It finds misconfigurations and vulnerabilities that put your organization at risk. You deploy the integration once and always get the latest security assessments. + +To set up an Okta integration: + +1. Access the Integrations > Add > Okta page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Okta**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under SaaS, select **Okta**. + + ![Add a Okta Integration in Mondoo](/img/platform/infra/saas/okta/okta.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Okta organization. + +3. In the **Enter the Organization domain** box, enter your Okta domain. To learn how to find this value, read [Find your Okta domain](https://developer.okta.com/docs/guides/find-your-domain/main/) in the Okta Developer Guides. + + Do **not** include `-admin` when you enter your domain. For example, if your Okta URL is 'dev-22556123-admin.okta.com', enter 'dev-22556123.okta.com'. + +4. Generate an API token for Mondoo to communicate with the Okta API. To learn how, read [Create an API token](https://developer.okta.com/docs/guides/create-an-api-token/main/) in the Okta documentation. + +5. Copy the new API token you created and paste it in the **Enter the API Token\*** box. + +6. To complete the integration, select the **START SCANNING** button. + +7. On the Recommended Policies page, enable the policies on which you want to base assessments of your Okta environment. To learn more, read [Manage Policies](/platform/security/posture/policies/). + + Mondoo begins scanning your Okta organization and, when completed, presents results on the INVENTORY page. + +## Learn more + +For more information, explore the complete [Mondoo Okta Resource Pack Reference](/mql/resources/okta-pack/). + +--- diff --git a/docs/platform/infra/saas/overview.mdx b/docs/platform/infra/saas/overview.mdx new file mode 100644 index 000000000..9dae64953 --- /dev/null +++ b/docs/platform/infra/saas/overview.mdx @@ -0,0 +1,26 @@ +--- +title: Overview of SaaS Security with Mondoo +sidebar_label: Overview +sidebar_position: 1 +description: Secure your SaaS infrastructure with Mondoo +--- + +Rely on Mondoo to secure your business-critical SaaS platforms: + +- **[GitLab](/platform/infra/saas/gitlab/)** + +- **[GitHub](/platform/infra/saas/github/)** + +- **[Google Workspace](/platform/infra/saas/google_workspace/)** + +- **[Microsoft 365](/platform/infra/saas/ms365/ms365-auto)** + +- **[Okta](/platform/infra/saas/okta/)** + +- **[Slack](/cnspec/saas/slack/)** + +#### Get help + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/platform/infra/saas/slack.mdx b/docs/platform/infra/saas/slack.mdx new file mode 100644 index 000000000..9084fcfd3 --- /dev/null +++ b/docs/platform/infra/saas/slack.mdx @@ -0,0 +1,98 @@ +--- +title: Secure Slack Workspaces with Mondoo +sidebar_label: Slack +sidebar_position: 7 +description: Assess the security of your Slack workspace with Mondoo +--- + +You can configure Mondoo to continuously monitor your Slack workspace security. Mondoo scans find misconfigurations and vulnerabilities that put your organization at risk. You deploy the Mondoo Slack integration once and always get the latest security assessments. + +## Prerequisite + +- [A Mondoo account](/platform/start/plat-start-acct/) + +- A Slack account and access to a Slack workspace + +## Create an API token to give Mondoo access to the Slack workspace + +To access the configuration details of your Slack workspace, Mondoo needs an API token. You create this token on the Slack website and provide it to Mondoo when you set up your integration. + +1. On the Slack API website, go to [Your Apps](https://api.slack.com/apps/). + +2. Select the **Create an App** button. + +![Slack Create an app dialog](/img/platform/infra/saas/slack/create-app.png) + +3. Select **From scratch**. + +![Slack Name app & choose workspace dialog](/img/platform/infra/saas/slack/name-app.png) + +4. In the **App Name** box, enter a name for your new app, such as `mondoo-security`. + +5. In the **Pick a workspace to develop your app in** list, choose the workspace you want to secure with Mondoo. + +6. Select the **Create App** button. The Basic Information page for the new app opens. + +![Slack app settings - Basic Information page](/img/platform/infra/saas/slack/basic-info.png) + +7. Under **Add features and functionality**, select **Permissions**. The OAuth & Permissions page for the new app opens. + +![Slack app settings - OAuth and permissions page](/img/platform/infra/saas/slack/oauth.png) + +8. Scroll down to **Scopes** and locate **User Token Scopes**. + +![Slack app settings - user token scopes](/img/platform/infra/saas/slack/scopes.png) + +9. Add all of these permissions by repeating the tasks of (a) selecting the **Add an OAuth Scope** button and (b) selecting a permission: + + - channels:read + + - groups:read + + - im:read + + - mpim:read + + - team:read + + - usergroups:read + + - users:read + +10. Once you have added all the permissions, scroll up to **OAuth Tokens for Your Workspace** and select the **Install to Workspace** button. Slack confirms the permissions. + +![Slack app permissions confirmation](/img/platform/infra/saas/slack/confirm.png) + +11. Select the **Allow** button. The OAuth & Permissions page displays again and now there is a token under **OAuth Tokens for Your Workspace**. + +![Slack OAuth token](/img/platform/infra/saas/slack/token.png) + +12. In the **User OAuth Token** box, select the **Copy** button. You need this token in the next section; save it somewhere handy. + +## Set up a Slack integration + +1. Access the Integrations > Add > Slack page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then under **SaaS**, select **Slack**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under SaaS, select **Slack**. + + ![Add a Slack Integration in Mondoo](/img/platform/infra/saas/slack/slack.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Slack repository. + +3. In the **Enter the API token** box, paste the Slack token you generated in the previous section. + +4. Select the **START SCANNING** button. + +5. On the Recommended Policies page, enable the policies on which you want to base assessments of your Slack workspace. To learn more, read [Manage Policies](/platform/security/posture/policies/). + + Mondoo begins scanning your Slack workspace and, when completed, presents results on the INVENTORY page. + +## Learn more + +For more information, explore the complete [Mondoo Slack Resource Pack Reference](/mql/resources/slack-pack/). + +--- diff --git a/docs/platform/infra/supply/_category_.json b/docs/platform/infra/supply/_category_.json new file mode 100644 index 000000000..33b2e2727 --- /dev/null +++ b/docs/platform/infra/supply/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Supply Chain", + "position": 6 +} diff --git a/docs/platform/infra/supply/cicd/_category_.json b/docs/platform/infra/supply/cicd/_category_.json new file mode 100644 index 000000000..fb4d3a782 --- /dev/null +++ b/docs/platform/infra/supply/cicd/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "CI/CD Platforms", + "position": 2 +} diff --git a/docs/platform/infra/supply/cicd/aws-codebuild.bak b/docs/platform/infra/supply/cicd/aws-codebuild.bak new file mode 100644 index 000000000..3dfab6e64 --- /dev/null +++ b/docs/platform/infra/supply/cicd/aws-codebuild.bak @@ -0,0 +1,72 @@ +--- +title: AWS CodeBuild +sidebar_label: AWS CodeBuild +sidebar_position: 7 +description: This page details how to integrate Mondoo with AWS CodeBuild. +--- + +![Illustration of AWS CodePipeline integration](/img/platform/infra/aws/integration-aws-codepipeline.png) + +This example illustrates how to scan a Docker image before it is pushed to ECR. At first, we install the agent, then we scan the freshly built image by Docker. If `cnspec scan` passes successfully, the image is pushed ECR. Based on your pipeline configuration, you can then auto-deploy it to ECS. + +```yml title="buildspec.yml" +# AWS CodeBuild buildspec.yml to build Docker Image +# Built a Docker Image, Scan it for security vulnerabilities using Mondoo and push it to ECR + +# Set these variables as CodeBuild Project Environment Variables +# ECR_REPOSITORY_URI +# MONDOO_AGENT_ACCOUNT + +version: 0.2 +phases: + pre_build: + commands: + - echo Fetching ECR Login + - ECR_LOGIN=$(aws ecr get-login --region $AWS_REGION --no-include-email) + - echo Logging in to Amazon ECR... + - $ECR_LOGIN + - IMAGE_TAG=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) + + - echo Configure Mondoo + # for static analysis of rpm-based operating systems, mondoo requires a local rpm command + # AWS uses Ubuntu as default + - apt update && apt install -y rpm + - echo $MONDOO_AGENT_ACCOUNT | base64 -d > mondoo.json + - curl -sSL https://mondoo.com/download.sh | bash + - ./mondoo version + build: + commands: + - echo Build started on `date` + - echo Building the Docker image... + - docker build -t $ECR_REPOSITORY_URI:latest . + - docker tag $ECR_REPOSITORY_URI:latest $ECR_REPOSITORY_URI:$IMAGE_TAG + post_build: + commands: + - bash -c "if [ /"$CODEBUILD_BUILD_SUCCEEDING/" == /"0/" ]; then exit 1; fi" + - echo Build completed on `date` + - echo Verify Docker images for vulnerabilities with Mondoo + - ./cnspec scan docker $ECR_REPOSITORY_URI:$IMAGE_TAG --config mondoo.json + - echo Pushing the Docker images... + - docker push $ECR_REPOSITORY_URI:latest + - docker push $ECR_REPOSITORY_URI:$IMAGE_TAG + - echo Writing image definitions file... + - printf '[{"name":"dockerimage","imageUri":"%s"}]' $ECR_REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json +artifacts: + files: imagedefinitions.json +``` + +Additionally, you need to configure your AWS CodeBuild project to store the credentials for cnspec in `MONDOO_AGENT_ACCOUNT`. You can [download the credentials](/cnspec/cnspec-adv-install/registration.md). For AWS CodeBuild, you need to encode the [credentials as base64](#store-mondoo-credentials). + +Next, you create a new `MONDOO_AGENT_ACCOUNT` variable and paste the content of the client credentials: + +![Paste the configuration in AWS CodeBuild environment variables](/img/platform/infra/aws/mondoo-cicd-awscodebuild-setup.png) + +You can see the vulnerability report as part of the CI/CD job. + +![Run a scan in AWS CodeBuild](/img/platform/infra/aws/mondoo-cicd-awscodebuild-result-text.png) + +Also, it is easy to see the result in your Mondoo Console: + +![See report in Mondoo Console](/img/platform/infra/aws/mondoo-cicd-awscodebuild-result-dashboard.png) + +Note: We prefer to store the agent credentials as secrets. By default, AWS CodeBuild supports retrieving values for environment variables via plaintext and AWS Parameter Store. It also allows the use of AWS Secrets Manager to pass secrets via [AWS Parameter Store into the pipeline](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html). Please be aware that AWS Secrets Manager comes with an additional cost per secret. diff --git a/docs/platform/infra/supply/cicd/azure-pipelines.md b/docs/platform/infra/supply/cicd/azure-pipelines.md new file mode 100644 index 000000000..cd4babec1 --- /dev/null +++ b/docs/platform/infra/supply/cicd/azure-pipelines.md @@ -0,0 +1,152 @@ +--- +title: Scan in Azure Pipelines +sidebar_label: Azure Pipelines +sidebar_position: 2 +description: This page details how to integrate Mondoo with Azure Pipelines. +image: /img/featured_img/mondoo-azure.jpg +--- + +Integrate Mondoo security with your [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) to scan Kubernetes manifests, Terraform configuration files, and Docker images for common misconfigurations and CVEs. + +For an overview of using Mondoo in your CI/CD workflows, read [Integrate Mondoo with CI/CD Platforms](/platform/infra/supply/cicd/overview/). + +## Configure Azure Pipeline security + +To set up an Azure Pipeline integration with Mondoo: + +- Create Mondoo credentials + +- Store those credentials in the Azure Pipeline + +### Create credentials in Mondoo + +To fetch policies and send scan results to Mondoo Platform, first configure a Mondoo service account for use in your CI/CD pipeline: + +1. In the [Mondoo Console](https://console.mondoo.com) side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. + +2. Under **CI/CD**, select **Azure Pipelines**. + +3. Copy the value in the **Copy the Mondoo Platform credentials** box to use it as a variable in your pipeline. + +4. Select the **START SCANNING** button. + +The credential is a base64-encrypted code that contains all the information needed to send the results of the scan to Mondoo. You can decrypt and check the content easily using this command: + +```bash +echo | base64 -d +``` + +### Securely store credentials in an Azure Pipeline + +Configure your Azure Pipelines to store the Mondoo credentials: + +1. Open the pipeline where the Mondoo scan will run. Near the top-right corner, select **Edit**. + + ![Edit Azure Pipeline](/img/platform/infra/supply/azure/azure_pipeline_view-2.png) + +2. Near the top-right corner, select **Variables**. + + ![Select Variables](/img/platform/infra/supply/azure/azure_edit_view-2.png) + +3. Add a new variable named MONDOO_CONFIG_BASE64 with the base64 value you copied in the steps above. + +4. Check **Keep this value secret** and **Let users override this value when running this pipeline** and then select **OK**. + + ![Add New Variable](/img/platform/infra/supply/azure/azure_add_new_variable-2.png) + +To learn more about setting up secrets, see the [Azure Pipelines secret documentation](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#secret-variables). + +## Example configuration and scan + +To be sure the images you create in a pipeline don't have any security vulnerabilities, load all images you create in the pipeline (pull them from the registry) and scan them with cnspec using relevant [policies](/platform/security/posture/policies/). cnspec explores the layers of the image, searching for issues that put you at risk. + +This example has two stages: + +- In the first stage, BuildApp, you build an application by calling the Dockerfile and pushing it to the Azure Container Registry. This example pushes the image to the Azure Container Registry, but you can use any registry, such as Docker Hub. To use the Azure Container Registry, this example creates a resource in the Azure portal called **container registry**. It's a private registry. + +- The second stage, ScanWithCnspec, installs cnspec using an automated script for installing cnspec on different Linux distributions. It then uses cnspec to scan the Docker image created in the previous stage. It's important to pull the Docker image from the registry (in this example, the Azure Container Registry, which is private). + +The pipeline must have access to the image (have adequate permissions) so it can pull and scan the image with cnspec. There are two approaches: + +- **Directly from the pipeline login to the registry - ** Because this example uses Azure Container Registry with multi-factor authentication activated, it relies on a service principal by registering an application in Azure. To learn how to register an app in Azure, read [the Azure documentation](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal#authenticate-with-the-service-principal)) and the [Mondoo Azure manual app registration option documentation](/platform/infra/cloud/azure/azure-integration-scan-subscription/). It's easier to set up a client secret for the created application instead of a certificate. + +You then execute this login command in the pipeline: + +```bash +docker login securityimages.azurecr.io --username --password +``` + +- **Using Service connections in the project settings of the pipeline -** We first create a service connection ([Learn how](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml)) and then choose the Docker task, selecting `login` as the command. Example results in the pipeline: + +```yml title="logging using service connection" +task: Docker@2 +inputs: + containerRegistry: "AzureRegistry" + command: "login" +``` + +This example also defines an extra task in the second stage called PublishTestResults@2. It specifies the format of the results files you want to publish (in this case, JUnit). + +```yml title="azure-pipelines.yml" +trigger: + - main +pool: + vmImage: "ubuntu-latest" +variables: + imageNamespace: securityimages.azurecr.io + imageRepo: mondoo-app-docker + +stages: + - stage: BuildApp + jobs: + - job: BuildPushImage + steps: + - task: Docker@2 + inputs: + containerRegistry: "AzureRegistry" + repository: "$(imageRepo)" + command: "buildAndPush" + Dockerfile: "**/Dockerfile" + tags: latest + + - stage: ScanWithCnspec + jobs: + - job: ScanImage + steps: + - script: | + bash -c "$(curl -sSL https://install.mondoo.com/sh)" + cnspec version + displayName: "Install cnspec" + + - script: | + docker login securityimages.azurecr.io --username --password + displayName: "Login to Azure Container Registry" + + - script: | + # be sure to change the score-threshold value to control the minimum accepted asset score before CI jobs fail + cnspec scan docker image $(imageNamespace)/$(imageRepo):latest --score-threshold 100 --output junit > TEST-cnspec.xml + displayName: "Scan Docker Image with cnspec" + env: + MONDOO_CONFIG_BASE64: $(MONDOO_CONFIG_BASE64) + + - task: PublishTestResults@2 + inputs: + testResultsFormat: "JUnit" + testResultsFiles: "**/TEST-*.xml" + mergeTestResults: true + testRunTitle: "cnspec" + condition: succeededOrFailed() +``` + +Because cnspec uses a score threshold of 100, the pipeline fails if cnspec finds any security issues. It generates a link to the XML file, which shows the result of the scan. + +In this example, cnspec found security issues and the scan failed, with only 38% of the test passing: +![Add New Variable](/img/platform/infra/supply/azure/pipeline-failed.png) + +By inspecting the job in the PublishTestResults, this example provides a link referring to the results (https://dev.azure.com/mondoo-security/docs-Test/_TestManagement/Runs?runId=21&_a=runCharts): +![Add New Variable](/img/platform/infra/supply/azure/pipeline-publish-task.png) + +Selecting the link shows the results in more detail: +![Add New Variable](/img/platform/infra/supply/azure/test-results-pipeline.png) + +--- diff --git a/docs/platform/infra/supply/cicd/circleci.md b/docs/platform/infra/supply/cicd/circleci.md new file mode 100644 index 000000000..3255e05e2 --- /dev/null +++ b/docs/platform/infra/supply/cicd/circleci.md @@ -0,0 +1,94 @@ +--- +title: Scan in CircleCI Projects +sidebar_label: CircleCI +sidebar_position: 3 +description: This page details how to integrate Mondoo with CircleCI. +image: /img/featured_img/mondoo-circleci.jpg +--- + +Integrate Mondoo security with your CircleCI projects to scan Kubernetes manifests, Terraform configuration files, and Docker images for common misconfigurations and CVEs. + +## Configure CircleCI security + +To set up a CircleCI integration with Mondoo: + +- Create Mondoo credentials + +- Store those credentials in CircleCI + +### Create credentials in Mondoo + +To fetch policies and send scan results to Mondoo Platform, first configure a Mondoo service account for use in your CI/CD pipeline: + +1. In the [Mondoo Console](https://console.mondoo.com) side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. + +2. Under **CI/CD**, select **CircleCI**. + +3. Copy the value in the **Copy the Mondoo Platform credentials** box to use it as a variable in your pipeline. + +4. Select the **START SCANNING** button. + +The credential is a base64-encrypted code that contains all the information needed to send the results of the scan to Mondoo. You can decrypt and check the content easily using this command: + +```bash +echo | base64 -d +``` + +### Securely store credentials in CircleCI + +Configure your CircleCI project to store the credentials for cnspec: + +1. On your CircleCI project dashboard, select the **Project Settings** button. + + ![CircleCI project dashboard](/img/platform/infra/circleci/dash.png) + +2. In the left navigation, select **Environment Variables**. + +3. Select the **Add Environment Variable** button. + +4. Name the variable and then, in the **Value** box, paste the credentials you copied in the steps above. + + ![Mondoo credentials in a CircleCI environment variable](/img/platform/infra/circleci/environment-variable.png) + +5. Select the **Add Environment Variable** button. + +## Example configuration + +This example lets you build Docker images as part of your [CI/CD pipeline](https://circleci.com/docs/building-docker-images/). You can use cnspec to verify the Docker image before you push it to the registry. This configuration runs a `docker build` and a `cnspec scan`: + +```yml title=".circleci/config.yml" +version: 2 + jobs: + build: + docker: + - image: centos:7 + steps: + - setup_remote_docker + - checkout + # use a primary image that already has Docker (recommended) + # or install it during a build like we do here + - run: + name: Install Docker client + command: | + set -x + VER="18.09.3" + curl -L -o /tmp/docker-$VER.tgz https://download.docker.com/linux/static/stable/x86_64/docker-$VER.tgz + tar -xz -C /tmp -f /tmp/docker-$VER.tgz + mv /tmp/docker/* /usr/bin + - run: + name: Install cnspec + command: | + bash -c "$(curl -sSL https://install.mondoo.com/sh)" + ./cnspec version + # - run: docker login -u $DOCKER_USER -p $DOCKER_PASS + - run: docker build -t yourorg/docker-image:0.1.$CIRCLE_BUILD_NUM . + # be sure to change the score-threshold value to control the minimum accepted asset score before CI jobs fail + - run: ./cnspec scan docker yourorg/docker-image:0.1.$CIRCLE_BUILD_NUM --score-threshold 90 + # - run: docker push docker yourorg/docker-image:0.1.$CIRCLE_BUILD_NUM +``` + +You can view the results directly in the CircleCI job or in the Mondoo CI/CD view. + +![Run a mondoo scan in CircleCI](/img/platform/infra/circleci/mondoo-cicd-circleci-result-text.png) + +--- diff --git a/docs/platform/infra/supply/cicd/gcp-cloudbuild.bak b/docs/platform/infra/supply/cicd/gcp-cloudbuild.bak new file mode 100644 index 000000000..f9994690a --- /dev/null +++ b/docs/platform/infra/supply/cicd/gcp-cloudbuild.bak @@ -0,0 +1,68 @@ +--- +title: GCP Cloud Build +sidebar_label: GCP Cloud Build +sidebar_position: 8 +description: This page details how to integrate Mondoo with GCP Cloud Build. +--- + +![Illustration of GCP Cloud Build integration](/img/platform/infra/cloud/gcp/integration-gcp-cloudbuild.png) + +GCP Cloud Build is a Docker-based pipeline where each task executes in its own Docker container. To run a vulnerability scan, we use the Mondoo's docker image and verify the image before its being uploaded to GCR. + +```yaml title="cloudbuild.yaml" +# Scan Docker image with Mondoo before pushing to GCR +substitutions: + _IMAGE_NAME: demo_image + _MONDOO_AGENT_ACCOUNT: "" +steps: + # build docker image + - name: "gcr.io/cloud-builders/docker" + args: ["build", "-t", "gcr.io/$PROJECT_ID/${_IMAGE_NAME}", "."] + # store docker image in workspace + - name: "gcr.io/cloud-builders/docker" + args: + [ + "save", + "-o", + "/workspace/${_IMAGE_NAME}.tar", + "gcr.io/$PROJECT_ID/${_IMAGE_NAME}", + ] + # store mondoo credentials into workspace + - name: "mondoolabs/mondoo" + entrypoint: /bin/sh + args: + [ + "-c", + "echo ${_MONDOO_AGENT_ACCOUNT} | base64 -d > /workspace/mondoo.json", + ] + # run mondoo config + - name: "mondoolabs/mondoo" + args: + [ + "scan", + "docker", + "/workspace/${_IMAGE_NAME}.tar", + "--config", + "/workspace/mondoo.json", + ] + # optional environment variables, those enable you to reference the mondoo report with your build + env: + - "CLOUDBUILD=true" + - "BUILD=$BUILD_ID" + - "PROJECT=$PROJECT_ID" + - "COMMIT_SHA=$COMMIT_SHA" + - "SHORT_SHA=$SHORT_SHA" + - "REPO_NAME=$REPO_NAME" + - "BRANCH_NAME=$BRANCH_NAME" + - "TAG_NAME=$TAG_NAME" + - "REVISION_ID=$REVISION_ID" +images: ["gcr.io/$PROJECT_ID/${_IMAGE_NAME}"] +``` + +You need to configure a [substitution variable](https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values) to store the credentials for Mondoo/cnspec in `_MONDOO_AGENT_ACCOUNT`. You can either [download the credentials](/cnspec/cnspec-adv-install/registration.md) or use the GCP Cloud Build integration page. For GCP Code Build, you need to encode the [credentials as base64](#store-mondoo-credentials). Next, you create a new `_MONDOO_AGENT_ACCOUNT` variable and paste the content of the agent credentials: + +![Paste the configuration as GCP substitution variable](/img/platform/infra/cloud/gcp/mondoo-cicd-cloudbuild-setup.png) + +You can see the vulnerability report as part of the CI/CD job. + +![Run a mondoo scan in GCP Cloud Build](/img/platform/infra/cloud/gcp/mondoo-cicd-cloudbuild-result-text.png) diff --git a/docs/platform/infra/supply/cicd/github-actions.md b/docs/platform/infra/supply/cicd/github-actions.md new file mode 100644 index 000000000..40a219ad6 --- /dev/null +++ b/docs/platform/infra/supply/cicd/github-actions.md @@ -0,0 +1,147 @@ +--- +title: Scan in GitHub Actions +sidebar_label: GitHub Actions +sidebar_position: 4 +description: This page details how to integrate Mondoo with GitHub Actions. +image: /img/featured_img/github.jpg +--- + +The [Mondoo GitHub Action](https://github.com/mondoohq/actions) allows you to scan Kubernetes manifests, Terraform configuration files, and Docker containers for common security misconfigurations. The scan results are available directly in the GitHub Actions UI as well as the Mondoo Console. The action handles the installation and configuration of [cnspec](/cnspec/cnspec-about/), Mondoo's CLI security tool. That way, all you have to do is specify what you want to scan and point the action to your Mondoo credentials. + +:::tip + +You can also use Mondoo to continuously assess the security of your GitHub repositories and organization. To learn more, read [Secure GitHub with Mondoo](/platform/infra/saas/github/). + +::: + +## Configure GitHub Actions security + +To set up a GitHub Actions integration with Mondoo: + +- Create Mondoo credentials + +- Store those credentials in GitHub + +### Create credentials in Mondoo + +To fetch policies and send scan results to Mondoo Platform, first configure a Mondoo service account for use in your CI/CD pipeline: + +1. In the [Mondoo Console](https://console.mondoo.com) side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. + +2. Under **CI/CD**, select **GitHub Actions**. + +3. Copy the value in the **Copy the Mondoo Platform credentials** box to use it as a variable in your pipeline. + +4. Select the **START SCANNING** button. + +The credential is a base64-encrypted code that contains all the information needed to send the results of the scan to Mondoo. You can decrypt and check the content easily using this command: + +```bash +echo | base64 -d +``` + +### Securely store credentials in GitHub + +1. Go to your GitHub repo and, in the top-right corner, select **Settings**. + +2. In the left navigation panel, under **Security**, select **Secrets and variables** and then select **Actions**. + +3. Select the **New repository secret** button. + +4. Name the secret MONDOO_CONFIG_BASE64 and, in the **Secret** box, paste the credentials you copied in the steps above. + + ![Create a GitHub Actions secret](/img/platform/infra/github/secret.png) + +5. Select the **Add secret** button. + +### Workflow configuration options + +The Mondoo GitHub Action has two required `with` values that you must set in your workflow configuration file: + +- **path** is the file to scan with Mondoo when using the `k8s-manifest` or `terraform` action. + +- **image** is the container image name when using the `docker-image` action. + +The Mondoo GitHub Action has one required `env` value that must be set in your workflow configuration file: **MONDOO_CONFIG_BASE64** is the Mondoo service account credentials that you stored in the GitHub secret. Do not set credentials directly in the workflow configuration file. Once you've set up the secret (as described above) you can reference that secret in your workflow configuration file as `${{ secrets.MONDOO_SERVICE_ACCOUNT }}`. + +## Example workflows + +### Kubernetes manifest scanning + +This example runs a Mondoo scan against a Kubernetes manifest: + +```yaml title=".github/workflows/manifest-scan.yml" +name: mondoo-scan + +on: + pull_request: + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Scan with Mondoo + uses: mondoohq/actions/k8s-manifest@main + env: + MONDOO_CONFIG_BASE64: ${{ secrets.MONDOO_SERVICE_ACCOUNT }} + with: + path: nginx.yml +``` + +### Terraform configuration files scanning + +This example runs a simple scan of Terraform files: + +```yaml title=".github/workflows/terraform-scan.yml" +name: mondoo-scan + +on: + pull_request: + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Scan with Mondoo + uses: mondoohq/actions/terraform@main + env: + MONDOO_CONFIG_BASE64: ${{ secrets.MONDOO_SERVICE_ACCOUNT }} + with: + path: "*.tf" +``` + +### Docker image scanning + +This example scans a Docker image in a registry or built in a previous GitHub Action: + +```yaml title=".github/workflows/docker-image-scan.yml" +name: mondoo-scan + +on: + pull_request: + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Scan with Mondoo + uses: mondoohq/actions/docker-image@main + env: + MONDOO_CONFIG_BASE64: ${{ secrets.MONDOO_SERVICE_ACCOUNT }} + with: + image: ubuntu:22.04 +``` + +--- diff --git a/docs/platform/infra/supply/cicd/gitlab.md b/docs/platform/infra/supply/cicd/gitlab.md new file mode 100644 index 000000000..ac1c7deb1 --- /dev/null +++ b/docs/platform/infra/supply/cicd/gitlab.md @@ -0,0 +1,132 @@ +--- +title: Scan in GitLab CI/CD +sidebar_label: GitLab CI/CD +sidebar_position: 5 +description: This page details how to integrate Mondoo with GitLab CI/CD Pipelines. +image: /img/featured_img/mondoo-gitlab.jpg +--- + +Integrate Mondoo security scans with your GitLab projects using GitLab's built-in runner functionality. With this integration, you'll get Mondoo security scans for Kubernetes manifests, Terraform configuration files, and Docker images. + +## Configure GitLab CI/CD security + +To set up a GitLab CI/CD integration with Mondoo: + +- Create Mondoo credentials + +- Store those credentials in GitLab + +### Create credentials in Mondoo + +To fetch policies and send scan results to Mondoo Platform, first configure a Mondoo service account for use in your CI/CD pipeline: + +1. In the [Mondoo Console](https://console.mondoo.com) side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. + +2. Under **CI/CD**, select **GitLab CI/CD**. + +3. Copy the value in the **Copy the Mondoo Platform credentials** box to use it as a variable in your pipeline. + +4. Select the **START SCANNING** button. + +The credential is a base64-encrypted code that contains all the information needed to send the results of the scan to Mondoo. You can decrypt and check the content easily using this command: + +```bash +echo | base64 -d +``` + +### Securely store credentials in GitLab + +1. In the GitLab console, select the repository you want to scan with Mondoo. + +2. Go to **Settings -> CI/CD** and expand the **Variables** section. + +3. Select **Add variable**. + ![Store Credentials in GitLab](/img/platform/infra/gitlab/mondoo-cicd-gitlab-config.png) + +4. In the Add Variable dialog box, name the key `MONDOO_CONFIG_BASE64`. + +5. Paste the Base64-encoded credential you downloaded from Mondoo.com into the **Value** field. + +6. Keep the default values for **Type** and **Environment scope**. + +7. Be sure to uncheck **Protect variable** so that this secret can be used for tests running in merge requests. + +8. Check **Mask variable** to hide this secret in logs. + +9. Select **Add variable**. + +## Create the GitLab pipeline config + +Now that you have Mondoo credentials for running CI security scans, you can set up a [GitLab Pipeline](https://docs.gitlab.com/ee/ci/pipelines/) by creating a [`.gitlab-ci.yml`](https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html) configuration file. + +Every release of cnspec is published as a Docker image to Docker Hub. Because GitLab makes heavy use of Docker containers as a runtime environment, it is easiest to use Mondoo's Docker image to run your scans. + +This example creates a dummy GitLab pipeline configuration with two jobs, `build-docker` and `mondoo`, as well as two stages, `build` and `test`: + +```yml title=".gitlab-ci.yml" +stages: + - build + - test + + # Build docker image + build-docker: + image: docker:latest + stage: build + services: + - docker:dind + script: + - docker build . --tag mondoo_test_image + + # Scan docker image + mondoo-cnspec: + stage: test + image: + name: mondoo/cnspec:latest + entrypoint: [""] + script: + - mkdir -p /root/.docker/ && echo "{"auths":{"$CI_REGISTRY":{"username":"$CI_REGISTRY_USER","password":"$CI_REGISTRY_PASSWORD"}}}" > /root/.docker/config.json + # be sure to change the score-threshold value to control the minimum accepted asset score before CI jobs fail + - cnspec scan container ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} --score-threshold 90 + dependencies: + - build-docker +``` + +If medium asset scores are allowed, i.e. if the pipeline should still turn green with a medium asset score, then set the `--score-threshold` to 40. + +## JUnit report + +If you prefer to store the report as a JUnit file to use GitLab's JUnit Report view feature, you can use: + +```yml title=".gitlab-ci.yml" +mondoo: + stage: test + image: + name: mondoo/cnspec:latest + entrypoint: [""] + script: + - mkdir -p /root/.docker/ && echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /root/.docker/config.json + - cnspec scan container ${CI_REGISTRY_IMAGE}:latest --score-threshold 90 --output junit > mondoo-junit.xml + artifacts: + paths: + - mondoo-junit.xml + expire_in: 1 week + reports: + junit: mondoo-junit.xml + # allow_failure: true + dependencies: + - build +``` + +## Get more example pipeline configs + +You can copy example GitLab pipeline configs from the Mondoo Console. + +1. In the [Mondoo Console](https://console.mondoo.com) side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. + +2. Under **CI/CD**, select **GitLab CI/CD**. + +3. Scroll to step **3**. Select the tab for the config you want to copy. + +4. In the top-right corner of the sample config, select the copy icon to copy the config to your clipboard. + +--- diff --git a/docs/platform/infra/supply/cicd/jenkins.md b/docs/platform/infra/supply/cicd/jenkins.md new file mode 100644 index 000000000..c58d613e9 --- /dev/null +++ b/docs/platform/infra/supply/cicd/jenkins.md @@ -0,0 +1,104 @@ +--- +title: Scan in Jenkins +sidebar_label: Jenkins +sidebar_position: 6 +description: This page details how to integrate Mondoo with Jenkins. +image: /img/featured_img/mondoo-jenkins.jpg +--- + +Integrate Mondoo security with [Open Source Jenkins](https://jenkins.io/) and [CloudBees Jenkins Distribution](https://www.cloudbees.com/products/cloudbees-jenkins-distribution) to scan Kubernetes manifests, Terraform configuration files, and Docker images for common misconfigurations and CVEs. + +## Configure Jenkins security + +To set up a Jenkins integration with Mondoo: + +- Create Mondoo credentials + +- Store those credentials in Jenkins + +### Create credentials in Mondoo + +To fetch policies and send scan results to Mondoo Platform, first configure a Mondoo service account for use in your CI/CD pipeline: + +1. In the [Mondoo Console](https://console.mondoo.com) side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. + +2. Under **CI/CD**, select **Jenkins**. + +3. Copy the value in the **Copy the Mondoo Platform credentials** box to use it as a variable in your pipeline. + +4. Select the **START SCANNING** button. + +The credential is a base64-encrypted code that contains all the information needed to send the results of the scan to Mondoo. You can decrypt and check the content easily using this command: + +```bash +echo | base64 -d +``` + +### Securely store credentials in Jenkins + +Configure Jenkins to store the credentials for cnspec in the `MONDOO_CONFIG_BASE64` environmental variable. + +![Paste the configuration as GCP substitution variable](/img/platform/infra/jenkins/mondoo-cicd-jenkins-credentials.png) + +## Example configuration + +```jdp title="Jenkinsfile.jdp" +pipeline { + environment { + REGISTRY = "jenkins-docker-example" + } + agent any + stages { + stage('Cloning Git Repository') { + steps { + // be sure to change this to your project repository + git 'https://github.com/lunalectric/backend.git' + } + } + stage('Building image') { + steps{ + script { + dockerImage = docker.build("${REGISTRY}:${env.BUILD_ID}") + } + } + } + stage('Scan image') { + environment { + MONDOO_CONFIG_BASE64 = credentials('MONDOO_CONFIG_BASE64') + } + steps{ + sh 'bash -c "$(curl -sSL https://install.mondoo.com/sh)"' + sh './cnspec version' + // be sure to change the score-threshold value to control the minimum accepted asset score before CI jobs fail + sh "./cnspec scan docker ${REGISTRY}:${env.BUILD_ID} --score-threshold 90" + } + } + stage('Deploy Image') { + // For a Docker Registry which requires authentication, + // add a "Username/Password" Credentials intro-item from the Jenkins home page and use the + // Credentials ID as a second argument to withRegistry(): + environment { + REGISTRY_CREDS = credentials('REGISTRY_CREDS') + } + steps{ + script { + docker.withRegistry( '', REGISTRY_CREDS ) { + dockerImage.push() + } + } + } + } + stage('Remove Unused docker image') { + steps{ + sh "docker rmi ${REGISTRY}:${env.BUILD_ID}" + } + } + } + } +``` + +You can view the results directly in the Jenkins UI or in the Mondoo CI/CD view. + +![Run a mondoo scan in Jenkins](/img/platform/infra/jenkins/mondoo-cicd-jenkins-result-text.png) + +--- diff --git a/docs/platform/infra/supply/cicd/overview.md b/docs/platform/infra/supply/cicd/overview.md new file mode 100644 index 000000000..d2fcf347b --- /dev/null +++ b/docs/platform/infra/supply/cicd/overview.md @@ -0,0 +1,71 @@ +--- +title: Integrate Mondoo with CI/CD Platforms +sidebar_label: Overview +sidebar_position: 1 +description: This page provides an overview of integrating Mondoo with CI/CD platforms. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo integrates with major CI/CD platforms to shift security out of production and into the development and testing phases of the software development life cycle (SDLC). This shift prevents insecure changes from making it to test environments and keeps security findings from holding up production deployments. + +With Mondoo security scanning in CI/CD systems, you can: + +- Scan system images such as AMIs (using [Mondoo's Packer integration](/cnspec/supplychain/packer), for example) + +- Scan application container images (with [Docker](/cnspec/supplychain/docker/), for example) + +- Scan [Kubernetes manifests](/cnspec/cnspec-k8s/cnspec-k8s-manifest/) + +- Scan infrastructure as code configuration files (such as [Terraform configurations](/cnspec/supplychain/terraform/)) + +## Supported platforms + +Mondoo supports these CI/CD platforms: + +- [Azure Pipelines](/platform/infra/supply/cicd/azure-pipelines) + +- [CircleCI](/platform/infra/supply/cicd/circleci) + +- [GitHub Actions](/platform/infra/supply/cicd/github-actions) + +- [GitLab CI/CD](/platform/infra/supply/cicd/gitlab) + +- [Jenkins](/platform/infra/supply/cicd/jenkins) + +## General CI/CD setup + +No matter if you want to scan Kubernetes manifests, container images, or deployed VMs, the setup follows a basic pattern: + +1. [Install cnspec](/cnspec/) or use the [Mondoo Docker image](https://hub.docker.com/r/mondoolabs/mondoo). + +2. Store Mondoo credentials securely in your CI system. + +3. Run cnspec to scan systems or repository files. + +## Exit code handling + +Exit codes allow CI systems to properly raise failure conditions to users. Mondoo has several methods of controlling how and when a scan causes a CI system to fail a job. + +### Pass on successful scan + +By default, `cnspec scan` returns these exit codes: + +- `0` indicates a successful scan with no critical policy failures. + +- `1` indicates that the scan found critical policy failures. + +Instead of blocking the pipeline, you can choose to always pass the build if the scan was successful using the `--score-threshold 0` flag. + +```bash +cnspec scan docker a3592cc01fdf --score-threshold 0 +``` + +## Store Mondoo credentials + +Mondoo uses a private key to encrypt all communication with the Mondoo API. Because CI/CD systems do not allow persistent configuration on build nodes, the configuration must be passed into the CI/CD job. + +All CI/CD environments have a way to store environment variables. Some provide extra capabilities to store secrets, which we recommend. Set an environment variable with the content of the [agent credentials file](/cnspec/cnspec-adv-install/registration-keys). + +The JSON configuration file includes the agent's private key and certificate. The PEM format requires proper newlines, and some CI/CD systems interpret the newlines, which causes failures reading the credentials. To prevent this, encode the credentials data using base64 encoding. Mondoo automatically encodes credentials generated for CI integrations to avoid errors. + +--- diff --git a/docs/platform/infra/supply/overview.md b/docs/platform/infra/supply/overview.md new file mode 100644 index 000000000..9bb34beaf --- /dev/null +++ b/docs/platform/infra/supply/overview.md @@ -0,0 +1,47 @@ +--- +title: Software Supply Chain Security with Mondoo +sidebar_label: Overview +sidebar_position: 1 +description: This page provides an overview of how to use Mondoo for software supply chain security. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo integrates into existing developer software development workflows with minimal friction. It empowers all developers to easily surface security vulnerabilities and misconfigurations before they reach production. + +## Ways to use Mondoo in software development + +There are many ways to use Mondoo within the software development process: + +- **CI/CD testing** - Mondoo integrates easily into all major CI tooling, such as: + + - [Azure Pipelines](/platform/infra/supply/cicd/azure-pipelines/) + + - [CircleCI](/platform/infra/supply/cicd/circleci/) + + - [GitHub Actions](/platform/infra/supply/cicd/github-actions/) + + - [GitLab CI/CD](/platform/infra/supply/cicd/gitlab/) + + - [Jenkins](/platform/infra/supply/cicd/jenkins/) + +- **Secure base images** - Use cnspec to ensure you build virtual instances that are free of security vulnerabilities. It integrates with: + + - [Docker](/cnspec/supplychain/docker/) + + - [HashiCorp Packer](/cnspec/supplychain/packer/) + + - [HashiCorp Terraform](/cnspec/supplychain/terraform/) + +- **Container image security** - Use [cnspec](/cnspec/cnspec-about/) to test containers for security vulnerabilities during development on your workstation before publishing to container registries, including: + + - [AWS Elastic Container Registry](/cnspec/supplychain/registry/aws_ecr/) + + - [Azure Container Registry](/cnspec/supplychain/registry/azure_acr/) + + - [Google Container Registry](/cnspec/supplychain/registry/gcp_gcr/) + + - [Docker Hub](/cnspec/supplychain/registry/docker_hub/) + + - [Harbor Container Registry](/cnspec/supplychain/registry/harbor/) + +--- diff --git a/docs/platform/intel/annotations.mdx b/docs/platform/intel/annotations.mdx new file mode 100644 index 000000000..647e33431 --- /dev/null +++ b/docs/platform/intel/annotations.mdx @@ -0,0 +1,68 @@ +--- +title: Annotate (Tag) Assets +sidebar_label: Annotate (Tag) Assets +sidebar_position: 4 +description: Add annotations +image: /img/featured_img/mondoo-feature.jpg +--- + +Use Mondoo annotations to add metadata to an asset. Annotations are key-value pairs that let you tag or categorize your assets. Add whatever metadata you need. Some examples are: + +| Example key | Example value | +| ----------- | --------------------- | +| owner | cosmo@lunalectric.com | +| build | terraform | +| asset-tag | luna000262 | +| team | 01research | + +You can reuse key-value pairs or you can reuse only the key and give each asset a unique value. + +For example, suppose you want to create annotations that match the physical asset tags on your company's workstations. You'd give every workstation in your inventory an `asset-tag` key, but give each workstation a unique value to match the unique physical tags. + +As another example, you might assign the key `build` and the value `terraform` to every asset in your inventory that is built using Terraform. + +Annotations display in the Mondoo Console when you view an asset. When you export data from Mondoo, annotations are included. You can search for assets based on their annotations. To learn how, read [Search Your Inventory](/platform/intel/search/) + +## Annotate an asset + +You can annotate an asset in the Mondoo Console. + +:::tip + +You can also add an annotation from the command line or using automation. To learn how, read [Annotate (tag) an asset during registration](/cnspec/cnspec-adv-install/registration/#annotate-tag-an-asset-during-registration). + +::: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the asset you want to annotate. + +2. In the bottom-right corner of the asset page, locate **MONDOO ANNOTATIONS**. + + ![Find MONDOO ANNOTATIONS on the Mondoo asset page](/img/platform/intel/asset-no-annotations.png) + +3. Select the **+** icon. + + ![Add and annotation to a Mondoo asset](/img/platform/intel/add-annotation.png) + +4. Enter a key and a value, then select the :heavy_check_mark: icon to add the annotation. + + ![Annotation on a Mondoo asset](/img/platform/intel/existing-annotation.png) + +## Change or remove an annotation + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the asset containing the annotation you want to change or remove. + +2. In the bottom-right corner of the asset page, locate **MONDOO ANNOTATIONS**. + + ![Annotation on a Mondoo asset](/img/platform/intel/existing-annotation.png) + +3. Select the pencil icon. + + ![Add and annotation to a Mondoo asset](/img/platform/intel/add-annotation.png) + +4. Change the key and/or the value, then select the :heavy_check_mark: icon to save the changes. + + ![Annotation on a Mondoo asset](/img/platform/intel/existing-annotation.png) + + To remove the annotation, select the trash can icon. + +--- diff --git a/docs/platform/intel/inventory.mdx b/docs/platform/intel/inventory.mdx new file mode 100644 index 000000000..ec0a33472 --- /dev/null +++ b/docs/platform/intel/inventory.mdx @@ -0,0 +1,73 @@ +--- +title: Inventory Your Assets +sidebar_label: Inventory Your Assets +sidebar_position: 2 +description: Use Mondoo to conduct an inventory of your entire infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo can provide a thorough and detailed inventory of your entire infrastructure. In the [Mondoo Console](https://console.mondoo.com), you can explore all the assets registered with your account and investigate configuration details. + +Mondoo's inventory lets you drill down into an asset's configuration to learn details about that asset. + +![View inventory detail in the Mondoo Console](/img/platform/intel/inventory-explore.png) + +## Enable an inventory + +To view an inventory of a space, you must first enable the inventories you want to see for the space. For example, if you want to inventory your AWS infrastructure, you must enable the AWS inventory for the space you want to see. You manage inventories in the registry. + +1. In the [Mondoo Console](https://console.mondoo.com), use the top navigation bar to choose the space you want to inventory. + +2. In the left navigation menu, select **Registry**. + +3. Under **REGISTRY**, select **Query Packs**. + +4. In the **Filter** search box, type `inventory`. + + The registry shows only inventories. The toggles for enabled inventories are purple. The toggles for disabled inventories are white and gray. + + ![Registry showing inventories](/img/platform/intel/inventory-policyhub.png) + +5. Select the toggle beside an inventory to enable it. + +Mondoo inventories the applicable assets registered to the space. + +## View asset inventory details in the Inventory view + +1. In the [Mondoo Console](https://console.mondoo.com), use the [top navigation bar](/platform/start/navigate) to choose the [organization and space](/platform/start/organize/overview/) you want to view. + + The Inventory view displays by default when you access a different organization or space. If you're currently in a different view, use the [left navigation bar](/platform/start/navigate): Select **Inventory**. + + ![Inventory view in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. To drill down into a space, select the box representing the space. + + Mondoo organizes your space by integration type, showing summary scores for each integration. You can select an integration type box to see only that type of asset, or you can select the **INVENTORY** box to access and search all assets in the space. + + ![Space view in the Mondoo Console](/img/platform/security/monitor-space.png) + +3. Select the asset type (such as AWS or GCP) to filter the list of assets to only the type(s) for which you've enabled inventory. + +4. Select the asset. + +5. To see the results of all the enabled queries on the asset, select the **Data Queries** tab. + + ![View data queries in the Mondoo Console](/img/platform/intel/data-queries.png) + +6. To see detailed resource information, select the **Resources** tab. + + ![View inventory detail in the Mondoo Console](/img/platform/intel/inventory-explore.png) + +7. Select different elements to drill down into different details. + +:::tip + +To look up the meanings of different icons, select **LEGEND**. + +::: + +#### See also + +[Annotations](/platform/intel/annotations/) + +--- diff --git a/docs/platform/intel/overview.mdx b/docs/platform/intel/overview.mdx new file mode 100644 index 000000000..d082f9fe1 --- /dev/null +++ b/docs/platform/intel/overview.mdx @@ -0,0 +1,37 @@ +--- +title: Asset Intelligence - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Maintain a detailed inventory on all the assets in your infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo makes your entire infrastructure visible and discoverable. It allows you to build an inventory of all your deployed technologies across cloud, Kubernetes, hardware, and other assets. + +Mondoo's powerful engine collects detailed data on every asset, and even shows relationships between assets. It continuously monitors for changes and automatically discovers assets and technologies you're using. + +With Mondoo you can: + +- **Find blind spots in your infrastructure.** Unknown and lost assets can drain your resources and expose your environment to attackers. Mondoo automatically exposes potentially costly assets. + +- **Educate strategic operations and engineering decisions.** Mondoo helps you eliminate redundancies and waste or plan updates in your infrastructure. Make smarter choices and more efficient migrations by finding assets running common technologies. + +- **Eliminate manual labor.** You no longer need to perform complex manual comparisons of assets or trace connections to determine how the different elements in your environments are related. Mondoo reveals relationships automatically. + +- **Respond to an incident quickly and precisely.** Mondoo can create a snapshot of running components (such as processes, ports, services, and packages) to help you make the right decisions fast. + +- **Detect drift.** As your team grows, infrastructure deployment becomes more difficult to manage. Mondoo easily finds unusual and unexpected changes to your infrastructure. + +Only your imagination limits what you can do with Mondoo. + +- [Inventory Your Infrastructure](/platform/intel/inventory/) + +- [Search Your Inventory](/platform/intel/search/) + +- [Annotate (Tag) Assets](/platform/intel/annotations/) + +#### See also + +- To learn how to add your assets to Mondoo, read [Integrate Your Infrastructure with Mondoo](/platform/infra/overview/). + +- To learn how to export inventory information to different data stores, read [Export Data](/platform/maintain/export/overview/). diff --git a/docs/platform/intel/search.mdx b/docs/platform/intel/search.mdx new file mode 100644 index 000000000..0697df8d6 --- /dev/null +++ b/docs/platform/intel/search.mdx @@ -0,0 +1,359 @@ +--- +title: Search Your Inventory +sidebar_label: Search Your Inventory +sidebar_position: 3 +description: Search for assets in your Mondoo inventory +image: /img/featured_img/mondoo-feature.jpg +--- + +You can quickly search an entire organization from the Mondoo Console's top navigation bar. Find assets by name, platform, and more. + +Mondoo's inventory search is straightforward but powerful. Specialized search predicates that are unique to Mondoo provide capabilities beyond a simple text search. + +## Search for assets + +1. In the Mondoo Console, [navigate](/platform/start/navigate/) to the organization or space where you want to search. + +2. Locate the search box in the top-left corner of the Mondoo Console. + + ![Search an organization in the Mondoo Console](/img/platform/intel/search-box-org.png) + +3. Enter search parameters in the search box and press **Enter**. To learn about search syntax and capabilities, read the section below. + + ![Mondoo search results](/img/platform/intel/simple-results.png) + +4. Use the drop-down in the top-right corner to change the scope of the search: + + - To limit your search to the current space, select **IN SPACE**. (This option is available only if you're currently working in a space.) + + - To extend your search to the entire current organization, select **IN ORGANIZATION**. + +5. From the results list, select the asset you want to view. + + To cancel the search, press **Esc** or select the **x** on the right side of the search box. + +## Mondoo inventory search syntax and predicates + +Mondoo search supports text matching, partial text matching, and Boolean operators. It includes specialized predicates to help you refine your search. + +### Text matching and partial matching + +Enter a number or word to find assets with names containing that number or word. Text search is not case sensitive. + +For example, if you search for `luna`, the results include assets named: + +- gcr.io/luna-store/currencyservice@bd0fa063169b + +- AltaLuna44005 + +- AWS Account lunalectric-prod (69892234400) + +Enter multiple words and/or numbers separated by a space to find assets with names containing both. + +For example, if you search for `luna AWS`, the results include assets named: + +- AltaLuna44005AWS4 + +- AWS Account lunalectric-prod (69892234400) + +- 11440075 Calluna AWS + +Mondoo treats the aws in the search text as a Boolean AND. If you prefer, you can type `luna AND aws` for the same result. + +Mondoo also supports the OR operator. The search `luna OR aws` returns assets named: + +- AltaLuna44005AWS4 + +- AWS Account lunalectric-prod (69892234400) + +- 11440075 Calluna AWS + +- lunalectric-gke-001 + +- AWS Account marsrover-prod (69892234499) + +For a text match that includes a space, put the search terms in quotes: Of the results above, only `11440075 Calluna AWS` shows up in a search for `"luna aws"`. + +### Specialized predicates + +By default, Mondoo searches based on the asset name. However, Mondoo's specialized search predicates let you target a different attribute, such as hostname or annotation. For example, enter `platform:redhat` to find all Red Hat assets. + +Mondoo supports these search predicates: + +- [`platform`](#platform) + +- [`kind`](#kind) + +- [`annotation`](#annotation) + +- [`name`](#name) + +#### platform + +The `platform` predicate lets you limit search results by the asset platform. For example, enter `platform:windows` to find Windows assets. + +The Boolean operators, text matching, and partial text matching guidelines described above apply to the `platform` predicate. For example: + +- `platform:win` finds Windows assets. + +- `platform:k8s` finds assets with the `platform` value `k8s-node`, `k8s-pod`, `k8s-admission`, and so on. + +- `platform:alpine OR amazonlinux` finds assets that have either `alpine` or `amazonlinux` as their `platform` value. + +
+Show or hide a list of platform values. + +- `alpine` + +- `amazonlinux` + +- `arch` + +- `arista-eos` + +- `aws` + +- `aws-cloudtrail-trail` + +- `aws-cloudwatch-loggroup` + +- `aws-dynamodb-table` + +- `aws-ebs-snapshot` + +- `aws-ebs-volume` + +- `aws-ecs-instance` + +- `aws-iam-group` + +- `aws-iam-user` + +- `aws-kms-key` + +- `aws-lambda-function` + +- `aws-rds-dbinstance` + +- `aws-rds-dbcluster` + +- `aws-s3-bucket` + +- `aws-security-group` + +- `aws-vpc` + +- `azure` + +- `azure-compute-vm` + +- `azure-mysql-server` + +- `azure-network-security-group` + +- `busybox` + +- `centos` + +- `clear-linux-os` + +- `cloudlinux` + +- `cos` + +- `debian` + +- `docker-image` + +- `euleros` + +- `fedora` + +- `gcp-bigquery-dataset` + +- `gcp-compute-firewall` + +- `gcp-compute-image` + +- `gcp-compute-instance` + +- `gcp-compute-network` + +- `gcp-compute-subnetwork` + +- `gcp-folder` + +- `gcp-gke-cluster` + +- `gcp-org` + +- `gcp-organization` + +- `gcp-project` + +- `gcp-storage-bucket` + +- `gentoo` + +- `github-org` + +- `github-repo` + +- `github-user` + +- `gitlab` + +- `google-workspace` + +- `k8s-admission` + +- `k8s-cluster` + +- `k8s-cronjob` + +- `k8s-daemonset` + +- `k8s-deployment` + +- `k8s-ingress` + +- `k8s-job` + +- `k8s-manifest` + +- `k8s-namespace` + +- `k8s-node` + +- `k8s-pod` + +- `k8s-replicaset` + +- `k8s-statefulset` + +- `kali` + +- `linuxmint` + +- `macos` + +- `manjaro-arm` + +- `mariner` + +- `microsoft365` + +- `oci` + +- `okta-org` + +- `opensuse-leap` + +- `oraclelinux` + +- `parrot` + +- `photon` + +- `pop` + +- `raspbian` + +- `redhat` + +- `rhcos` + +- `rockylinux` + +- `scratch` + +- `slack-team` + +- `sles` + +- `terraform-hcl` + +- `terraform-plan` + +- `terraform-state` + +- `ubuntu` + +- `vmware-esxi` + +- `vmware-vsphere` + +- `windows` + +If you need to search for a platform that you don't see in this list, please ask us about it in the [Mondoo Community Slack Channel](https://mondoo.link/slack). + +
+ +#### kind + +The `kind` predicate lets you limit search results by their type or kind, which is a categorization unique to Mondoo. + +
+Show or hide a list of kind values. + +- `api` + +- `aws_object` + +- `azure_object` + +- `bare_metal` + +- `code` + +- `container` + +- `container_image` + +- `gcp_object` + +- `k8s_object` + +- `network` + +- `package` + +- `process` + +- `unknown` + +- `virtual_machine` + +- `virtual_machine_image` + +
+ +#### annotation + +Mondoo annotations are metadata you can add to assets. They're key-value pairs containing any text you want. To learn more, read [Annotate (Tag) Assets](/platform/intel/annotations). + +You can search for assets that have a certain key-value pair or you can search for assets that have any value for a certain key. These are examples: + +- `annotation:owner=stella@lunalectric.com` finds assets that have the "owner" annotation with "stella@lunalectric.com" in the value. This is a fast way to find assets belonging to one user. + +- `annotation:project` finds all assets that have the "project" annotation with any value. + +- `annotation:project=rover` finds all assets that have the "project" annotation with "rover" in the value. This search finds assets that belong to the Mars Rover and Moon Rover projects. + +#### name + +`name` is the default predicate for an asset search, so you don't need to specify `name` if you _only_ want to search asset names. For example, a search for `southwest` is the same as a search for `name:southwest`. + +When you combine predicates in a single search, you don't have to include `name` if it's the first predicate in the search. For example this search finds only assets that have both `southwest` in their name and have the type `azure_object`: + +`southwest AND platform=aws-ec2-snapshot` + +However, if the `name` predicate in a search comes after another predicate, you must include the `name` predicate. For example, this search fails because it tries to find assets that have both `aws-ec2-snapshot` and `southwest` in the platform: + +`platform=aws-ec2-snapshot AND southwest` + +If you add the `name` predicate, then you search for assets that have both `aws-ec2-snapshot` in their platform and `southwest` in the name: + +`platform=aws-ec2-snapshot AND name:southwest` + +--- diff --git a/docs/platform/maintain/access/_category_.json b/docs/platform/maintain/access/_category_.json new file mode 100644 index 000000000..d73b95187 --- /dev/null +++ b/docs/platform/maintain/access/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Manage Access to Mondoo", + "position": 2 +} diff --git a/docs/platform/maintain/access/api-tokens.mdx b/docs/platform/maintain/access/api-tokens.mdx new file mode 100644 index 000000000..94b4f2361 --- /dev/null +++ b/docs/platform/maintain/access/api-tokens.mdx @@ -0,0 +1,89 @@ +--- +title: Create and Manage API Tokens +sidebar_label: Manage API Tokens +sidebar_position: 5 +description: Generate and manage API tokens for programmatic access to Mondoo Platform. +image: /img/featured_img/mondoo-feature.jpg +--- + +API tokens let you communicate with Mondoo's GraphQL API. With API tokens, programs can authenticate with the Mondoo API, which is useful for incorporating Mondoo in different workflows and automation. + +The API token you generate can provide access to a single space or all spaces within an organization. + +## Generate an API token for access to a single space + +1. [Navigate](/platform/start/navigate/) to the space in which you want to create an API token. + +2. In the left navigation, select **Settings**. Then select the **API Tokens** tab. + +3. Select the plus symbol on the right of the page. + + ![Add a Mondoo API token](/img/platform/maintain/access/space-token.png) + +4. Enter a unique name and description for the token that help you recognize its purpose. + +5. Check the Mondoo permissions you want to give to programs that use this token: + + - **Viewer** permissions let the program browse most information in the space but not make changes. + + - **Editor** permissions let the program make all changes possible in the space except deleting the space or reporting scan results. + + - **Owner** permissions let the program make all changes possible in the space except reporting scan results. + + - **Agent** permissions let the program read and use policy bundles and query packs and report the results to the space. + +6. Select **GENERATE API TOKEN**. + +## Generate an API token for access to all spaces in an organization + +1. [Navigate](/platform/start/navigate/) to the organization in which you want to create an API token. + +2. In the left navigation, select **Settings**. Then select the **API Tokens** tab. + +3. Select the plus symbol on the right of the page. + + ![Add a Mondoo API token](/img/platform/maintain/access/org-token.png) + +4. Enter a unique name and description for the token that helps you recognize its purpose. + +5. Check the Mondoo permissions you want to give to programs that use this token: + + - **Viewer** permissions let the program browse most information in all spaces in the organization but not make changes. + + - **Editor** permissions let the program make all changes possible in all spaces in the organization except reporting scan results or deleting the organization or spaces. + + - **Owner** permissions let the program make all changes possible in the space except reporting scan results. + + - **Agent** permissions let the program read and use policy bundles and query packs and report the results to spaces in the organization. + +6. Select **GENERATE API TOKEN**. + +## Change an API token's permissions + +1. [Navigate](/platform/start/navigate/) to the organization or space containing the API token. + +2. In the left navigation, select **Settings**. Then select the **API Tokens** tab. + +3. Search for or scroll to the API token you want to change and select it. + + ![Manage API tokens](/img/platform/maintain/access/select-api-token.png) + +4. Select the **PERMISSIONS** button. + + ![Change API token permissions](/img/platform/maintain/access/permissions.png) + +5. Change the permissions as desired. To learn about each permission, read the previous sections. + +6. Select the **SET PERMISSIONS** button. + +## Delete an API token + +1. [Navigate](/platform/start/navigate/) to the organization or space containing the API token. + +2. In the left navigation, select **Settings**. Then select the **API Tokens** tab. + +3. Search for or scroll to the API token you want to delete and select it. + + ![Manage API tokens](/img/platform/maintain/access/select-api-token.png) + +4. Select the **DELETE** button and select the **DELETE** button to confirm. diff --git a/docs/platform/maintain/access/overview.md b/docs/platform/maintain/access/overview.md new file mode 100644 index 000000000..db2cb867a --- /dev/null +++ b/docs/platform/maintain/access/overview.md @@ -0,0 +1,17 @@ +--- +title: Manage Access to Mondoo - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Manage who and what can access your Mondoo organizations and spaces +image: /img/featured_img/mondoo-feature.jpg +--- + +Give people and software access to your Mondoo organizations and spaces: + +- Grant your [team members](/platform/maintain/access/team_members) different levels access to Mondoo organizations and spaces. + +- Integrate Mondoo with [Microsoft Entra ID](/platform/maintain/access/saml) to enable single sign-on with SAML. + +- Use [service accounts](/platform/maintain/access/service_accounts) or [API tokens](/platform/maintain/access/service_accounts) to authenticate external services (such as CI pipelines) with the Mondoo Platform APIs. + +--- diff --git a/docs/platform/maintain/access/saml.md b/docs/platform/maintain/access/saml.md new file mode 100644 index 000000000..2d532f139 --- /dev/null +++ b/docs/platform/maintain/access/saml.md @@ -0,0 +1,106 @@ +--- +title: Use SAML (Microsoft Entra ID) for Mondoo Access +sidebar_label: SAML (Microsoft Entra ID) +sidebar_position: 3 +description: Configure SAML support in for Mondoo Platform, including Microsoft Entra ID. +image: /img/featured_img/mondoo-feature.jpg +--- + +The integration of Mondoo with Microsoft Entra ID (formerly Active Directory) provides you with single sign-on (SSO), which has these advantages: + +- Control who has access to Mondoo using Entra +- Enable users to log into Mondoo with their Entra account +- Central user management using Entra + +## Prerequisites + +To configure the integration, you need: + +- An Microsoft Entra ID subscription +- Single sign-on (SSO) enabled in Mondoo (contact your Mondoo representative) + +For SSO you need to establish a link relationship between an Entra user and the related user in Mondoo. Mondoo supports just-in-time user provisioning. + +## Configure Entra SSO + +1. Sign in to the Azure portal. + +2. Select **Microsoft Entra ID**. + +3. Navigate to **Enterprise Applications** and then select **All Applications**. + +4. To add new application, select **New application**. + +5. In the **Add from the gallery** section, select **Create your own application**. + +![Entra Enterprise Applications](/img/platform/maintain/access/saml/create-own-app.png) + +6. Type the application name, select **Integrate any other application you don't find in the gallery**, and select the **Create** button. Wait while the app is added to your Azure tenant. + +7. Navigate to **Single sign-on** and select SAML. + +![Entra Create SAML](/img/platform/maintain/access/saml/add-single-sign-on.png) + +8. On the Basic SAML Configuration section, configure the application for IDP initiated mode: + + ![Entra SAML Configuration](/img/platform/maintain/access/saml/saml-config.png) + + - In the **Identifier** box, type a unique name using this pattern: + + `urn:mondoo:saml-YOUR-ORG-ID` + + For YOUR-ORG-ID, substitute the ID of the Mondoo organization you want to integrate. You can find it on the Organizations page in gray text below the Organization name. In the example image below, the organization ID is `lunalectric-us-org` so the identifier is `urn:mondoo:saml-lunalectric-us-org`. + + ![Organizations page](/img/platform/maintain/access/saml/org-id.png) + + - In the **Reply URL** box, type this URL: `https://auth.mondoo.app/__/auth/handler` + + - In the **Sign on URL** box, type this URL: `https://console.mondoo.com` + +9. Select **Save** and close the panel. + +10. On the SAML-based Sign-on page, scroll to step 3, **SAML Certificates**. + +11. Locate **Certificate (Base64)** and select **Download** beside it to save the certificate on your computer. + +![Entra SAML Application](/img/platform/maintain/access/saml/download-cert.png) + +12. Keep the SAML-based Sign-on page open and follow the steps below. + +## Configure Mondoo SSO + +1. In a new web browser window, sign in to Mondoo as an administrator. + +2. Navigate to the organization you want to integrate with SAML. + +3. Select **Settings** and select the **Authentication** tab. + + ![Mondoo SSO Configuration](/img/platform/maintain/access/saml/authentication.png) + +4. Under SAML 2.0 Connection, select **Configure**. + + ![Mondoo SSO Configuration](/img/platform/maintain/access/saml/authentication-detail.png) + +5. Return to your browser with the SAML-based Sign-on page open so you can copy and paste these values: + + - In the Mondoo **Single Sign-ON URL** box, paste the value from the Entra **Login URL**. + + - In the Mondoo **Identity Provider Entity ID** box, paste the value from **Microsoft Entra Identifier**. + + - In the Mondoo **Service Provider Entity ID** box, paste your the value from **Logout URL**. + +6. In the **X.509 Certificates** box, paste the content of the Base64-encoded certificate that you downloaded and select `Save` + +7. Enable the SAML integration by toggling the `Enabled` switch. + +## Assign users + +1. Return to your browser with the SAML-based Sign-on page. + +2. Select **Users and groups**. + +3. Select **Add user**, then add the users and groups that should have access to Mondoo. + + ![Entra ID User Assignment](/img/platform/maintain/access/saml/users.png) + +4. Confirm the assignments in the **Add Assignment** dialog, select the **Assign** button. diff --git a/docs/platform/maintain/access/service_accounts.md b/docs/platform/maintain/access/service_accounts.md new file mode 100644 index 000000000..86818d060 --- /dev/null +++ b/docs/platform/maintain/access/service_accounts.md @@ -0,0 +1,113 @@ +--- +title: Create and Manage Service Accounts +sidebar_label: Manage Service Accounts +sidebar_position: 4 +description: Create and manage service accounts that provide machine access to Mondoo Platform. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can use a service account to authenticate external services (such as CI pipelines) with the Mondoo Platform APIs. Clients use service account credentials to authorize themselves with Mondoo APIs and perform actions within the permissions granted to the service account. + +The account and certificate you generate can provide access to a single space or all spaces within an organization. Space service accounts are scoped to the space where you create them; they can't access any other space in the organization. Organization service accounts are scoped to the organization where you create them; they can access all spaces in the organization but can't access any other organization. + +Every service account has permissions that limit the actions it can perform. + +One example for relying on a service account is in a CI/CD workflow in which worker nodes test builds of infrastructure and applications. You can create a service account that can access the policies in a space and execute the policies on builds to assess security risks. + +## Generate a service account for access to a single space + +1. [Navigate](/platform/start/navigate/) to the space in which you want to create a service account. + +2. In the left navigation, select **Settings**. Then select the **Service Accounts** tab. + +3. Select the plus symbol on the right of the page. + + ![Add a service account to a Mondoo organization](/img/platform/maintain/access/add-service-account.png) + +4. Enter a unique name and description for the service account that help you recognize its purpose. + +5. Check the Mondoo permissions you want to give to programs that use this service account: + + - **Viewer** permissions let the program browse most information in the space but not make changes. + + - **Editor** permissions let the program make all changes possible in the space except deleting the space itself or reporting scan results. + + - **Owner** permissions let the program make all changes possible in the space except reporting scan results. + + - **Agent** permissions let the program read and use policy bundles and query packs and report the results to the space. + +6. Select **GENERATE SERVICE ACCOUNT**. + +7. To download the service account's credentials in a .JSON file, select the **DOWNLOAD CREDENTIALS** button. Or you can select the copy icon in the **Plain .JSON** text box to copy the credentials for the new service account. + + If you need base64-encoded credentials, select the copy icon in the **Base64** text box instead. + + ![Get Mondoo service account credentials](/img/platform/maintain/access/credentials.png) + +8. Select the **FINALIZE** button. + +## Generate a service account for access to all spaces in an organization + +1. [Navigate](/platform/start/navigate/) to the organization in which you want to create a service account. + +2. In the left navigation, select **Settings**. Then select the **Service Accounts** tab. + +3. Select the plus symbol on the right of the page. + +4. Enter a unique name and description for the service account that helps you recognize its purpose. + +5. Check the Mondoo permissions you want to give to programs that use this service account: + + - **Viewer** permissions let the program browse most information in all spaces in the organization but not make changes. + + - **Editor** permissions let the program make all changes possible in all spaces in the organization except deleting the organization or spaces or reporting scan results. + + - **Owner** permissions let the program make all changes possible in the space except reporting scan results. + + - **Agent** permissions let the program read and use policy bundles and query packs and report the results to spaces in the organization. + +6. Select **GENERATE SERVICE ACCOUNT**. + +7. To download the service account's credentials in a .JSON file, select the **DOWNLOAD CREDENTIALS** button. Or you can select the copy icon in the **Plain .JSON** text box to copy the credentials for the new service account. + + If you need base64-encoded credentials, select the copy icon in the **Base64** text box instead. + +8. Select the **FINALIZE** button. + +## Decrypt base64 service account to use with cnspec + +```shell +echo | base64 -d > mondoo.json +``` + +Configure cnspec to use the mondoo.json file by either passing the `--config /path/to/mondoo.json` flag or by setting the `MONDOO_CONFIG_PATH` environment variable. + +## Change a service account's permissions + +1. [Navigate](/platform/start/navigate/) to the organization or space containing the service account. + +2. In the left navigation, select **Settings**. Then select the **Service Accounts** tab. + +3. Search for or scroll to the service account you want to change and select it. + + ![Manage service account tokens](/img/platform/maintain/access/select-service-account.png) + +4. Select the **PERMISSIONS** button. + +5. Change the permissions as desired. To learn about each permission, read the previous sections. + +6. Select the **SET PERMISSIONS** button. + +## Delete a service account + +1. [Navigate](/platform/start/navigate/) to the organization or space containing the service account. + +2. In the left navigation, select **Settings**. Then select the **Service Accounts** tab. + +3. Search for or scroll to the service account you want to delete and select it. + + ![Manage service accounts](/img/platform/maintain/access/select-service-account.png) + +4. Select the **DELETE** button and select the **DELETE** button to confirm. + +--- diff --git a/docs/platform/maintain/access/team_members.md b/docs/platform/maintain/access/team_members.md new file mode 100644 index 000000000..528c34755 --- /dev/null +++ b/docs/platform/maintain/access/team_members.md @@ -0,0 +1,95 @@ +--- +title: Manage Team Members (Mondoo Users) +sidebar_label: Manage Team Members +sidebar_position: 2 +description: Manage team members (Mondoo users) across organizations and spaces in Mondoo Platform. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can invite team members at the organization level or at an individual space level. + +Team members of an organization have access to all of the spaces under that organization, as well any additional spaces created in the future. + +## Role-based access control + +Team members of organizations and spaces are granted one of these role-based access controls: + +- **Viewer** - Read-only access +- **Editor** - Manage integrations, assets, policies, and team members +- **Owner** - Editor access plus the ability to create and delete spaces and organizations + +## Add team members to an organization + +To add additional team members to an organization: + +1. [Navigate](/platform/start/navigate/) to the organization to which you want to add a team member. + +2. In the side navigation bar, select **Settings**. + +3. Select the **Members** tab. + +4. Select the **INVITE MEMBER** button. + +5. Enter the email address and select a role for the team member. + +6. Select **ADD**. + +The team member receives an invitation inviting them to the organization. + +## Add team members to a space + +To add additional team members to a space: + +1. [Navigate](/platform/start/navigate/) to the space to which you want to add a team member. + +2. In the side navigation bar, select **Settings**. + +3. Select the **Members** tab. + +4. Select the **INVITE MEMBER** button. + +5. Enter the email address and select a role for the team member. + +6. Select **ADD**. + +The team member receives an invitation inviting them to the space. + +## Resend or revoke an invitation + +1. [Navigate](/platform/start/navigate/) to the organization or space in which you want to resend or revoke an invitation. + +2. In the side navigation bar, select **Settings**. + +3. Select the **Members** tab. + +4. To see pending invitations, select the **INVITATIONS** tab. + + ![Managing team invites](/img/platform/maintain/access/invitations.png) + + - To resend an invitation, select the circular arrow icon beside the invitation's status. + + - To revoke an invitation, select the X icon beside the invitation's status. + +## Edit a team member's role + +1. [Navigate](/platform/start/navigate/) to the organization or space to which you want to edit a team member's access. + +2. In the side navigation bar, select **Settings**. + +3. Select the **Members** tab. + +4. In the row for the team member you want to edit, select the three vertical dots and then select **Edit**. + +5. Select the new role and select the **SAVE** button. + +## Delete a team member + +1. [Navigate](/platform/start/navigate/) to the organization or space to which you want to remove a team member's access. + +2. In the side navigation bar, select **Settings**. + +3. Select the **Members** tab. + +4. In the row for the team member you want to remove, select the three vertical dots and then select **Delete**. + +--- diff --git a/docs/platform/maintain/alerting/_category_.json b/docs/platform/maintain/alerting/_category_.json new file mode 100644 index 000000000..6a84f662f --- /dev/null +++ b/docs/platform/maintain/alerting/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Manage Alerts", + "position": 5 +} diff --git a/docs/platform/maintain/alerting/msteams.md b/docs/platform/maintain/alerting/msteams.md new file mode 100644 index 000000000..4b5034013 --- /dev/null +++ b/docs/platform/maintain/alerting/msteams.md @@ -0,0 +1,51 @@ +--- +title: Receive Microsoft Teams Alerts from Mondoo +sidebar_label: Microsoft Teams +sidebar_position: 4 +description: Send Mondoo alerts to Microsoft Teams. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can configure Mondoo to send a message to a Microsoft Teams channel whenever there's a change to an asset's security score. You do this by integrating Microsoft Teams with the Mondoo space from which you want to receive alerts. + +Before you set up the integration, you must generate a new Microsoft Teams webhook URL. + +## Create a webhook in Microsoft Teams + +1. In Microsoft Teams app, select the team and channel where you want Mondoo to send alerts. + +2. On the right side of the selected channel, select the ellipsis (...). + +3. Select **Connectors**. + + ![Add a new Connector to your channel](/img/platform/maintain/alerting/msteams/msteams-webhook-new.png) + +4. Search the Incoming webhook connector and select **Add** or **Configure**. + + ![Select a webhook in Microsoft Teams](/img/platform/maintain/alerting/msteams/msteams-webhook-add.png) + +5. Provide a webhook name and icon and select Create. + + ![Create a new webhook in Microsoft Teams](/img/platform/maintain/alerting/msteams/msteams-webhook-create.png) + +6. Select the Copy icon next to the generated webhook URL. + + ![Copy the confirmed URL](/img/platform/maintain/alerting/msteams/msteams-webhook-created.png) + +## Set up the integration with your Mondoo space + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate to the space](/platform/start/navigate) for which you want to see Microsoft Teams alerts. + +2. In the side navigation bar, under **Integrations**, select **Add New Integration**. + +3. Scroll down to **Chat Ops** and select **Microsoft Teams**. + + ![Configure Microsoft Teams webhook in Mondoo](/img/platform/maintain/alerting/msteams/msteams-mondoo-configure.png) + +4. On the right side of the page, set the toggle to **Enabled**. + +5. In the **URL** box, paste the URL you copied in Microsoft Teams. + +6. Select the **SAVE** button. + +--- diff --git a/docs/platform/maintain/alerting/overview.md b/docs/platform/maintain/alerting/overview.md new file mode 100644 index 000000000..05500b65a --- /dev/null +++ b/docs/platform/maintain/alerting/overview.md @@ -0,0 +1,27 @@ +--- +title: Manage Alerts - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Receive Mondoo alerts in your preferred messaging platform +image: /img/featured_img/mondoo-feature.jpg +--- + +You can configure Mondoo to send an alert whenever there's a change to an asset's security score. These are examples of alert messages: + +![Sample alert in Mondoo](/img/platform/maintain/alerting/sample-alert-regress.png) + +![Sample alert in Mondoo](/img/platform/maintain/alerting/sample-alert-improve.png) + +For Mondoo to send alerts over your messaging platform, you must integrate the messaging platform with your Mondoo space. Mondoo has dedicated support for these platforms: + +- [Microsoft Teams](/platform/maintain/alerting/msteams) + +- [Slack](/platform/maintain/alerting/slack) + +- [Telegram](/platform/maintain/alerting/telegram) + +If Mondoo doesn't yet support your messaging platform, you can use the [Mondoo webhook integration](/platform/maintain/alerting/webhook). + +For information on receiving email alerts and other Mondoo messages in your inbox, read [Manage Email from Mondoo](/platform/maintain/user/email). + +--- diff --git a/docs/platform/maintain/alerting/slack.md b/docs/platform/maintain/alerting/slack.md new file mode 100644 index 000000000..51b4475e7 --- /dev/null +++ b/docs/platform/maintain/alerting/slack.md @@ -0,0 +1,47 @@ +--- +title: Receive Slack Alerts from Mondoo +sidebar_label: Slack +sidebar_position: 3 +description: Send Mondoo alerts to Slack. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can configure Mondoo to send a message to a Slack channel whenever there's a change to an asset's security score. You do this by integrating Slack with the Mondoo space from which you want to receive alerts. + +Before you set up the integration, you must create an incoming webhook app for Slack. + +## Create and customize an incoming webhook in Slack + +![Slack Directory](/img/platform/maintain/alerting/slack/slack-webhook-directory.png) + +1. Open the [Incoming WebHooks app](https://slack.com/apps/A0F7XDUAZ-incoming-webhooks) in your browser and select **Add to Slack**. + + ![Slack webhook Directory](/img/platform/maintain/alerting/slack/slack-webhook-create.png) + +2. In the **Post to Channel** configuration, select the name of the Slack channel that you want to send alerts to, and then select **Add Incoming WebHooks integration**. + + ![Slack webhook Directory](/img/platform/maintain/alerting/slack/slack-webhook-created.png) + +3. Under **Sending Messages**, customize the message. + + If you want, configure the details of the webhook, including a descriptive name, label, and icon. + +4. Select **Save Settings**. + +## Set up the integration with your Mondoo space + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate to the space](/platform/start/navigate) for which you want to see Slack alerts. + +2. In the side navigation bar, under **Integrations**, select **Add New Integration**. + +3. Scroll down to **Chat Ops** and select **Slack**. + + ![Configure Slack integration](/img/platform/maintain/alerting/slack/slack-mondoo-configure.png) + +4. On the right side of the page, set the toggle to **Enabled**. + +5. In the **URL** box, paste the URL you copied. + +6. Select the **SAVE** button. + +--- diff --git a/docs/platform/maintain/alerting/telegram.md b/docs/platform/maintain/alerting/telegram.md new file mode 100644 index 000000000..4c242734f --- /dev/null +++ b/docs/platform/maintain/alerting/telegram.md @@ -0,0 +1,62 @@ +--- +title: Receive Telegram Alerts from Mondoo +sidebar_label: Telegram +sidebar_position: 5 +description: Send Mondoo alerts to Telegram. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can configure Mondoo to send a message to a Telegram account whenever there's a change to an asset's security score. You do this by integrating Telegram with the Mondoo space from which you want to receive alerts. + +Before you set up the integration, you must create Telegram bot token and get your Telegram chat ID. + +## Create a Telegram bot token + +1. Open Telegram and search for the [@BotFather](https://telegram.me/botfather) username. Then start a new conversation with @BotFather with `/newbot`. `@BotFather` responds: + + ![Telegram Botfather](/img/platform/maintain/alerting/telegram/telegram-botfather.png) + +2. During the conversation, the bot provides a Telegram access token: + +> Use this token to access the HTTP API: +> `` + +## Get your Telegram chat ID + +1. Create a new chat group in Telegram. + + ![Create a new chat group](/img/platform/maintain/alerting/telegram/telegram-new-group.png) + +2. Invite the [@myidbot](https://telegram.me/myidbot). + + ![Invite the myidbot](/img/platform/maintain/alerting/telegram/telegram-new-group-idbot.png) + +3. Enter a chat group name. + + ![Configure the group name](/img/platform/maintain/alerting/telegram/telegram-new-group-name.png) + +4. Ask the myidbot `/getgroupid@myidbot` for the chat ID. + + ![Ask the myidbot for the chat ID](/img/platform/maintain/alerting/telegram/telegram-chatid.png) + +5. Uninvite `@myidbot`. + +## Set up the integration + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate to the space](/platform/start/navigate) for which you want to see Telegram alerts. + +2. In the side navigation bar, under **Integrations**, select **Add New Integration**. + +3. Scroll down to **Chat Ops** and select **Telegram**. + + ![Telegram Integration Setup](/img/platform/maintain/alerting/telegram/telegram-mondoo-configure.png) + +4. On the right side of the page, set the toggle to **Enabled**. + +5. In the **Chat ID** box, paste the Telegram chat ID that `@myidbot` provided in the instructions above. + +6. In the **Secret** box, paste the Telegram secret that `@botfather` provided in the instructions above. + +7. Select the **SAVE** button. + +--- diff --git a/docs/platform/maintain/alerting/webhook.md b/docs/platform/maintain/alerting/webhook.md new file mode 100644 index 000000000..997a39be9 --- /dev/null +++ b/docs/platform/maintain/alerting/webhook.md @@ -0,0 +1,25 @@ +--- +title: Receive Webhook Alerts from Mondoo +sidebar_label: Webhook +sidebar_position: 6 +description: Integrate Mondoo alerts with API webhooks. +image: /img/featured_img/mondoo-feature.jpg +--- + +Even if Mondoo doesn't have dedicated support for your messaging platform, you can configure Mondoo to send you alerts. A _webhook_ makes this possible. Mondoo's custom webhook integration posts asset alerts as JSON-encoded data to an HTTP endpoint. To learn how to create a webhook, read your messaging platform documentation. + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate to the space](/platform/start/navigate) for which you want to send alerts. + +2. In the side navigation bar, under **Integrations**, select **Add New Integration**. + +3. Scroll down to **Chat Ops** and select **Outbound Webhook**. + + ![Configure webhook in Mondoo](/img/platform/maintain/alerting/webhook/webhook-mondoo-configure.png) + +4. On the right side of the page, set the toggle to **Enabled**. + +5. In the **Webhook URL** box, paste the URL for your messaging platform's HTTP endpoint URL. + +6. Select the **SAVE** button. + +--- diff --git a/docs/platform/maintain/export/_category_.json b/docs/platform/maintain/export/_category_.json new file mode 100644 index 000000000..65a0da236 --- /dev/null +++ b/docs/platform/maintain/export/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Export Data", + "position": 3 +} diff --git a/docs/platform/maintain/export/azure-blob.mdx b/docs/platform/maintain/export/azure-blob.mdx new file mode 100644 index 000000000..9b1daf4e6 --- /dev/null +++ b/docs/platform/maintain/export/azure-blob.mdx @@ -0,0 +1,123 @@ +--- +title: Export Data to Azure Blob Storage +sidebar_label: Azure Blob Storage +sidebar_position: 3 +description: Configure a Mondoo Azure Blob Storage integration to export data to an Azure storage blob +image: /img/featured_img/mondoo-azure.jpg +--- + +The Mondoo Azure Blob Storage integration lets you continuously export your space data, such as assets and vulnerabilities, to Azure storage blobs. The export runs approximately every 24 hours. An integration exports data only from the space where you add the integration. + +## Requirements + +- A [Microsoft Azure account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) with an active subscription + +- Permission to manage storage containers in the Azure account + +- An existing storage container where you want to export data from the Mondoo space + +## Create a container access token + +Mondoo relies on a _shared access token_ to export data to Azure storage blobs. Create a shared access token for the container where you want Mondoo to export data from the Mondoo space. + +1. Log into the [Azure portal](https://portal.azure.com/) as a global administrator, application administrator or cloud application administrator. + +2. Select or search for **Storage accounts**. + +3. Select the storage account that holds the container where you want to export Mondoo data. + +4. In the left navigation, select **Containers**. + + ![Azure containers](/img/platform/maintain/export/azure-blob/containers.png) + +5. Select the container where you want to export Mondoo data. + +6. In the left navigation, select **Shared access tokens**. + + ![Add a shared access token in Azure](/img/platform/maintain/export/azure-blob/add-token.png) + +7. In the **Permissions** drop-down list, select: + + - Read + + - Add + + - Create + + - Write + + - List + +8. Under **Expiry**, set a date far in the future so that your Mondoo export continues working. + +9. Select the **Generate SAS token and URL** button. + + ![Copy Blob SAS URL](/img/platform/maintain/export/azure-blob/copy-url.png) + +10. In the **Blob SAS URL** box, select the copy icon to copy the URL to your clipboard. You need this for your next steps below. + +## Add a new Azure Blob Storage integration + +1. In a new browser tab, access the Integrations > Add > Azure Blob Storage page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Azure Blob Storage**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Exports, select **Azure Blob Storage**. + + ![Add new export integration in Mondoo](/img/platform/maintain/export/add-integration-exports.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Azure storage container. + + ![Add an Azure Blob Storage export integration in Mondoo](/img/platform/maintain/export/azure-blob/add-blob.png) + +3. In the **Blob SAS URL** box, paste the URL you copied in the previous section. + +4. In the **Export as** box, select whether to export Mondoo data to Azure blobs in JSON or CSV format. + +5. To complete the integration, select the **CREATE EXPORT** button. + + Mondoo begins exporting information from your space. When this initial export completes, the integration status becomes **ACTIVE**. Mondoo performs an export approximately every 24 hours. + +## View your Azure Blob Storage integration + +1. In the side navigation bar, under Integrations, select **Azure Blob Storage**. + + ![View a list of Azure Blob Storage integrations](/img/platform/maintain/export/azure-blob/view-list.png) + +2. In the list of Azure Blob Storage integrations, select the integration you want to view. + + ![View an Azure Blob Storage integration](/img/platform/maintain/export/azure-blob/view.png) + +### Statuses + +The possible statuses for an Azure Blob Storage integration are: + +- **pending**: The export hasn't run yet. + +- **active**: The export integration is healthy. + +- **error**: Mondoo detected an error during export. + +### Export data to Azure Blob Storage at any time + +Mondoo exports your data to Azure Blob Storage approximately every 24 hours. You can also manually export data at any time. Use the **SCHEDULE NOW** button to request an export right away. Mondoo begins the export as soon as possible. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering exports from this space to Azure storage blobs. + +:::info + +Mondoo does not delete the blobs or the exported data in them. You must delete the data manually. + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Export data to other platforms](/platform/maintain/export/overview) + +--- diff --git a/docs/platform/maintain/export/bigquery-integration.mdx b/docs/platform/maintain/export/bigquery-integration.mdx new file mode 100644 index 000000000..91bc3cf80 --- /dev/null +++ b/docs/platform/maintain/export/bigquery-integration.mdx @@ -0,0 +1,114 @@ +--- +title: Export Data to Google BigQuery +sidebar_label: Google BigQuery +sidebar_position: 4 +description: Configure a Mondoo BigQuery integration to export data to a Google BigQuery dataset +image: /img/featured_img/mondoo-gcp.jpg +--- + +The Mondoo BigQuery integration lets you continuously export your space data, such as assets and vulnerabilities, to a Google BigQuery dataset. The export runs approximately every 24 hours. + +## Requirements + +- The GCP IAM API enabled +- The GCP BigQuery API enabled +- The GCP CLI installed + +## Create a service account for your Google BigQuery integration + +To access the data it needs, your BigQuery integration needs a GCP service account. To learn about service accounts, read [Understanding service accounts](https://cloud.google.com/iam/docs/understanding-service-accounts) in the Google documentation. + +1. Create a new GCP service account for the Mondoo integration to use. + + For instructions, read [Creating and managing service accounts](https://cloud.google.com/iam/docs/creating-managing-service-accounts#iam-service-accounts-create-gcloud) in the Google documentation. + + Note the email address created for the new service account. + +2. Create a JSON key for the service account. + + For instructions, read [Create and manage service account keys](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-get-gcloud) in the Google documentation. + + Save the JSON file that downloads to your workstation when you create the key. You need it to configure the integration (in the next section below). + +## Create a BigQuery dataset + +Your BigQuery integration needs a GCP BigQuery dataset to which to export data. To learn about BigQuery datasets, read [Introduction to datasets](https://cloud.google.com/bigquery/docs/datasets-intro) in the Google documentation. + +1. Create a new GCP BigQuery dataset for the Mondoo integration to use. + + For instructions, read [Creating datasets](https://cloud.google.com/bigquery/docs/datasets) in the Google documentation. + +2. Assign the "BigQuery Data Editor" role to the GCP service account you created in the instructions above. + + For instructions, read [Grant access to a dataset](https://cloud.google.com/bigquery/docs/control-access-to-resources-iam#grant_access_to_a_dataset) in the Google documentation. + + For a description of the permissions that the "BigQuery Data Editor" role grants, read [Understanding roles](https://cloud.google.com/iam/docs/understanding-roles#bigquery-roles) in the Google documentation. + +## Add a new BigQuery integration + +1. Access the Integrations > Add > BigQuery page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **BigQuery**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Exports, select **BigQuery**. + + ![integration-create-image](/img/platform/maintain/export/bigquery/add-int-bigquery-top.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the GCP BigQuery dataset. + +3. Identify the BigQuery dataset to use for the export. + + In the **Enter the Dataset ID** box, enter your BigQuery dataset's resource ID. To learn how to retrieve this value, read [Listing datasets](https://cloud.google.com/bigquery/docs/listing-datasets) in the Google documentation. + +4. Under **Provide your Google Service Account config**, upload the GCP service account's JSON key that you downloaded in the previous section: + + Drag the file and drop it in the **Drag and drop your .json file here** box. + + OR + + In the **Drag and drop your .json file here** box, select the cloud icon and choose the file to upload. + + ![integration-create-image](/img/platform/maintain/export/bigquery/add-int-bigquery-bottom.png) + +5. To complete the integration, select the **CREATE INTEGRATION** button. + + Mondoo begins exporting information from your space. When this initial export completes, the integration status becomes **ACTIVE**. Mondoo performs an export approximately every 24 hours. + +## View your BigQuery integration + +1. In the side navigation bar, under Integrations, select **BigQuery**. + +2. In the list of BigQuery integrations, select the integration you want to view. + + ![integration-view-image](/img/platform/maintain/export/bigquery/view-int-bigquery.png) + +### Statuses + +The possible statuses for a BigQuery integration are: + +- **active**: The integration is active/healthy. +- **error**: Mondoo detected an error during export. + +### Export data to BigQuery at any time + +Mondoo exports your data to BigQuery approximately every 24 hours. You can also manually export data at any time. Use the **SCHEDULE NOW** button to request an export right away. Mondoo begins the export as soon as possible. If Mondoo is processing a lot of data, there can be some delay until Mondoo has sufficient resources. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering exports for the BigQuery dataset. + +:::info + +Mondoo does not delete your GCP BigQuery dataset or existing exported data. You must delete the dataset manually. + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Export data to other platforms](/platform/maintain/export/overview) + +--- diff --git a/docs/platform/maintain/export/gcs-bucket.mdx b/docs/platform/maintain/export/gcs-bucket.mdx new file mode 100644 index 000000000..c9668cd8f --- /dev/null +++ b/docs/platform/maintain/export/gcs-bucket.mdx @@ -0,0 +1,111 @@ +--- +title: Export Data to a Google Cloud Storage Bucket +sidebar_label: Google Cloud Storage +sidebar_position: 4 +description: Configure a Mondoo Google Cloud Storage integration to export data to a Google Cloud Storage bucket +image: /img/featured_img/mondoo-gcp.jpg +--- + +The Mondoo Google Cloud Storage integration lets you continuously export your space data, such as assets and vulnerabilities, to a [Cloud Storage bucket](https://cloud.google.com/storage/docs/buckets). The export runs approximately every 24 hours. + +## Requirements + +- A GCP account + +## Create a service account for your Google Cloud Storage integration + +To access the data it needs, your Cloud Storage integration needs a GCP service account. To learn about service accounts, read [Understanding service accounts](https://cloud.google.com/iam/docs/understanding-service-accounts) in the Google documentation. + +1. Create a new GCP service account for the Mondoo integration to use. + + For instructions, read [Creating and managing service accounts](https://cloud.google.com/iam/docs/creating-managing-service-accounts#iam-service-accounts-create-gcloud) in the Google documentation. + + Note the email address created for the new service account. + +2. Create a JSON key for the service account. + + For instructions, read [Create and manage service account keys](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-get-gcloud) in the Google documentation. + + Save the JSON file that downloads to your workstation when you create the key. You need it to configure the integration (in the next section below). + +## Create a Cloud Storage bucket + +Your Cloud Storage integration needs a bucket to which to export data. To learn about buckets, read [About Cloud Storage buckets](https://cloud.google.com/storage/docs/buckets) in the Google documentation. + +Create a new GCP Cloud Storage bucket for the Mondoo integration to use. For instructions, read [Create buckets](https://cloud.google.com/storage/docs/creating-buckets) in the Google documentation. + +2. Assign the "Storage Object Creator" role (roles/storage.objectCreator) for the bucket to the GCP service account you created in the instructions above. + + For instructions, read [Manage access to projects, folders, and organizations](https://cloud.google.com/iam/docs/granting-changing-revoking-access) in the Google documentation. + + For a description of the permissions that the "Storage Object Creator" role grants, read [Understanding roles](https://cloud.google.com/iam/docs/understanding-roles#storage.objectCreator) in the Google documentation. + +## Add a new Cloud Storage integration + +1. Access the Integrations > Add > GCP Cloud Storage Bucket page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **GCP Cloud Storage Bucket**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Exports, select **GCP Cloud Storage Bucket**. + + ![integration-create-image](/img/platform/maintain/export/gcp-bucket/add-int-export-gcp-bucket.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the GCP project and bucket. + +3. Identify the Cloud Storage bucket to which to export data. + + In the **Bucket name** box, enter the ID of the bucket you created in the previous section. + +4. Under **Export as**, choose whether to export in JSONL or CSV format. + +5. Under **Provide your Google Service Account config**, upload the GCP service account's JSON key that you downloaded in the previous section: + + Drag the file and drop it in the **Drag and drop your .json file here** box. + + OR + + In the **Drag and drop your .json file here** box, select the cloud icon and choose the file to upload. + +6. To complete the integration, select the **CREATE EXPORT** button. + + Mondoo begins exporting information from your space. When this initial export completes, the integration status becomes **ACTIVE**. Mondoo performs an export approximately every 24 hours. + +## View your Cloud Storage integration + +1. In the side navigation bar, under Integrations, select **Cloud Storage**. + +2. In the list of Cloud Storage integrations, select the integration you want to view. + + ![integration-view-image](/img/platform/maintain/export/gcp-bucket/view-int-export-gcp-bucket.png) + +### Statuses + +The possible statuses for a Cloud Storage integration are: + +- **pending**: The integration has been created but not yet run. +- **active**: The integration is active/healthy. +- **error**: Mondoo detected an error during export. + +### Export data to Cloud Storage at any time + +Mondoo exports your data to the bucket approximately every 24 hours. You can also manually export data at any time. Use the **SCHEDULE NOW** button to request an export right away. Mondoo begins the export as soon as possible. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering exports to the bucket. + +:::info + +Mondoo does not delete your GCP Cloud Storage bucket or existing exported data. You must delete the bucket manually. + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Export data to other platforms](/platform/maintain/export/overview) + +--- diff --git a/docs/platform/maintain/export/overview.mdx b/docs/platform/maintain/export/overview.mdx new file mode 100644 index 000000000..d14759e02 --- /dev/null +++ b/docs/platform/maintain/export/overview.mdx @@ -0,0 +1,29 @@ +--- +title: Export Data - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Export Mondoo data for analysis and reporting +image: /img/featured_img/mondoo-feature.jpg +--- + +You can export data from Mondoo so that you can analyze it, compare it with other data, or manipulate it as needed. This is useful for strategizing, planning, and reporting. + +Export data from Mondoo to: + +- [Amazon S3](/platform/maintain/export/s3) + +- [Microsoft Azure Blob Storage](/platform/maintain/export/azure-blob) + +- [Google BigQuery](/platform/maintain/export/bigquery-integration) + +- [Google Cloud Storage Bucket](/platform/maintain/export/gcs-bucket) + +- [PostgreSQL](/platform/maintain/export/postgresql) + +- [S3-Compatible Services](/platform/maintain/export/s3-compatible) + +- [Snowflake](/platform/maintain/export/snowflake) + +- Other data platforms coming soon! Check back for updates. + +--- diff --git a/docs/platform/maintain/export/postgresql.mdx b/docs/platform/maintain/export/postgresql.mdx new file mode 100644 index 000000000..5b7ac6849 --- /dev/null +++ b/docs/platform/maintain/export/postgresql.mdx @@ -0,0 +1,79 @@ +--- +title: Export Data to PostgreSQL +sidebar_label: PostgreSQL +sidebar_position: 5 +description: Configure a Mondoo PostgreSQL integration to export Mondoo data to a PostgreSQL database +image: /img/featured_img/mondoo-feature.jpg +--- + +The Mondoo PostgreSQL integration lets you continuously export your space data, such as assets, vulnerabilities, and scan results, to a PostgreSQL database. The export runs approximately every 24 hours. + +## Requirements + +To export data to PostgreSQL you must have a PostgreSQL database already created. The database must: + +- Run using port 5432. This is the default PostgreSQL port. + +- Be externally accessible; it can't be behind a firewall or used a blocked port. + +To learn about setting up a PostgreSQL database, read the [PostgreSQL documentation](https://www.postgresql.org/). + +## Add a new PostgreSQL integration + +1. Access the Integrations > Add > PostgreSQL page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **PostgreSQL**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Exports, select **PostgreSQL**. + + ![PostgreSQL integration - top](/img/platform/maintain/export/postgresql/add-int-postgresql.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the PostgreSQL data warehouse. + +3. In the **Database server host** box, enter the IP address or FQDN of the server to which you want to export Mondoo data. + +4. Under **Enter your credentials**, enter the user name and password for your PostgreSQL account. + +5. To complete the integration, select the **CREATE EXPORT** button. + + Mondoo begins exporting information from your space. When this initial export completes, the integration status becomes **ACTIVE**. Mondoo performs an export approximately every 24 hours. + +## View your PostgreSQL integration + +1. In the side navigation bar, under Integrations, select **PostgreSQL**. + + ![PostgreSQL integrations list](/img/platform/maintain/export/postgresql/view-int-postgresql.png) + +2. In the list of PostgreSQL integrations, select the integration you want to view. + +### Statuses + +The possible statuses for a PostgreSQL integration are: + +- **ACTIVE**: The integration is active/healthy. +- **PENDING**: Mondoo has not yet tried to connect to PostgreSQL. +- **ERROR**: Mondoo detected an error during export. + +### Export data to PostgreSQL at any time + +Mondoo exports your data to PostgreSQL approximately every 24 hours. You can also manually export data at any time. Use the **SCHEDULE NOW** button to request an export right away. Mondoo begins the export as soon as possible. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering exports to the PostgreSQL database. + +:::info + +Mondoo does not delete existing exported data. You must delete the data manually. + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Export data to other platforms](/platform/maintain/export/overview) + +--- diff --git a/docs/platform/maintain/export/s3-compatible.mdx b/docs/platform/maintain/export/s3-compatible.mdx new file mode 100644 index 000000000..32bba2678 --- /dev/null +++ b/docs/platform/maintain/export/s3-compatible.mdx @@ -0,0 +1,97 @@ +--- +title: Export Data to an S3-Compatible Storage Service +sidebar_label: S3-Compatible Service +sidebar_position: 7 +description: Configure a Mondoo S3-compatible service integration to export Mondoo data to S3-compatible object storage systems such as MinIO or Ceph +image: /img/featured_img/mondoo-feature.jpg +--- + +The Mondoo S3-compatible service integration lets you continuously export your space data, such as assets, vulnerabilities, and scan results to an S3-compatible object store such as MinIO or Ceph. The export runs approximately every 24 hours. + +## Requirements + +To export data to your S3-compatible object store, you must have: + +- Your S3-compatible object storage service up and running. + +- The endpoint URL of your S3-compatible object storage service. To learn how to find this URL, read your object storage system documentation or consult your vendor. + +- An _access key ID_ and _secret access key_ pair for programmatic access to the S3-compatible object storage service. To learn how to generate an access key pair, read your object storage service documentation or consult your vendor. + +## Add a new S3-compatible service integration + +1. Access the Integrations > Add > S3 Compatible Service page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **S3 Compatible Service**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Exports, select **S3 Compatible Service**. + + ![Add an export integration](/img/platform/maintain/export/add-integration-exports.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the your S3-compatible service bucket. + + ![your S3-compatible store integration - top](/img/platform/maintain/export/s3-compatible/s3-compatible-add-top.png) + +3. In the **S3 compatible endpoint URL** box, enter the URL of your S3-compatible service. + +4. In the **Bucket name** box, enter the name of the S3-compatible storage bucket to which you want to export Mondoo data. + +5. Under **Export as**, select the file format in which to export Mondoo data: + + - To export as JSON Lines, select **.jsonl**. + + - To export as comma-separated values, select **.csv**. + +6. To use the legacy list objects API for the export, select **Use the legacy list objects API**. To learn whether you need this, consult your S3-compatible service vendor. + +7. To use path-style bucket addressing instead of virtual hosted addressing, select **Use path style**. To learn whether you need this, consult your S3-compatible service vendor. + +8. In the **Access Key ID** box, enter the ID portion of the access key pair you generated for programmatic access to the bucket. + +9. In the **Secret Access Key** box, enter the secret portion of the access key pair you generated for programmatic access to the bucket. + +10. To complete the integration, select the **CREATE EXPORT** button. + + Mondoo begins exporting information from your space. When this initial export completes, the integration status becomes **ACTIVE**. Mondoo performs an export approximately every 24 hours. + +## View an S3-compatible service integration + +1. In the side navigation bar, under Integrations, select **S3 Compatible Service**. + + ![your S3-compatible service integrations list](/img/platform/maintain/export/s3/s3-status.png) + +2. In the list of your S3-compatible service integrations, select the integration you want to view. + + ![your S3-compatible service integrations list](/img/platform/maintain/export/s3/s3-view-int.png) + +### Statuses + +The possible statuses for a your S3-compatible service integration are: + +- **ACTIVE**: The integration is active/healthy. +- **PENDING**: Mondoo has not yet attempted to connect to your S3-compatible service. +- **ERROR**: Mondoo detected an error during export. + +### Export data to your S3-compatible service at any time + +Mondoo exports your data to your S3-compatible service approximately every 24 hours. You can also manually export data at any time. Use the **SCHEDULE NOW** button to request an export right away. Mondoo begins the export as soon as possible. If Mondoo is processing a lot of data, there can be some delay until Mondoo has sufficient resources. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering exports to the your S3-compatible service. + +:::info + +Mondoo does not delete existing exported data. You must delete the data manually. + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Export data to other platforms](/platform/maintain/export/overview) + +--- diff --git a/docs/platform/maintain/export/s3.mdx b/docs/platform/maintain/export/s3.mdx new file mode 100644 index 000000000..ca8be189f --- /dev/null +++ b/docs/platform/maintain/export/s3.mdx @@ -0,0 +1,91 @@ +--- +title: Export Data to Amazon S3 +sidebar_label: Amazon S3 +sidebar_position: 2 +description: Configure a Mondoo S3 integration to export Mondoo data to S3 storage +image: /img/featured_img/mondoo-aws.jpg +--- + +The Mondoo Amazon S3 integration lets you continuously export your space data, such as assets, vulnerabilities, and scan results to an Amazon S3 bucket. The export runs approximately every 24 hours. + +## Requirements + +To export data to Amazon S3, you must have: + +- An Amazon account with an S3 bucket. To learn more, read the [Amazon S3 documentation](https://docs.aws.amazon.com/s3/index.html). + +- An _access key ID_ and _secret access key_ pair for programmatic access to the S3 bucket. To learn more, read [Programmatic Access](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#sec-access-keys-and-secret-access-keys) in the AWS documentation. + +## Add a new Amazon S3 integration + +1. Access the Integrations > Add > Amazon S3 page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Amazon S3**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Exports, select **Amazon S3**. + + ![Add an export integration](/img/platform/maintain/export/add-integration-exports.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Amazon S3 data warehouse. + + ![Amazon S3 integration - top](/img/platform/maintain/export/s3/s3-add-top.png) + +3. In the **Bucket name** box, enter the name of the S3 storage bucket to which you want to export Mondoo data. + +4. In the **Region** box, enter the region ID of the bucket to which you want to export Mondoo data. + +5. Under **Export as**, select the file format in which to export Mondoo data: + + - To export as JSON Lines, select **.jsonl**. + + - To export as comma-separated values, select **.csv**. + +6. In the **Access Key ID** box, enter the ID portion of the access key pair you generated for programmatic access to the S3 bucket. + +7. In the **Secret Access Key** box, enter the secret portion of the access key pair you generated for programmatic access to the S3 bucket. + +8. To complete the integration, select the **CREATE EXPORT** button. + + Mondoo begins exporting information from your space. When this initial export completes, the integration status becomes **ACTIVE**. Mondoo performs an export approximately every 24 hours. + +## View your Amazon S3 integration + +1. In the side navigation bar, under Integrations, select **Amazon S3**. + + ![Amazon S3 integrations list](/img/platform/maintain/export/s3/s3-status.png) + +2. In the list of Amazon S3 integrations, select the integration you want to view. + + ![Amazon S3 integrations list](/img/platform/maintain/export/s3/s3-view-int.png) + +### Statuses + +The possible statuses for a Amazon S3 integration are: + +- **ACTIVE**: The integration is active/healthy. +- **PENDING**: Mondoo has not yet attempted to connect to Amazon S3. +- **ERROR**: Mondoo detected an error during export. + +### Export data to Amazon S3 at any time + +Mondoo exports your data to Amazon S3 approximately every 24 hours. You can also manually export data at any time. Use the **SCHEDULE NOW** button to request an export right away. Mondoo begins the export as soon as possible. If Mondoo is processing a lot of data, there can be some delay until Mondoo has sufficient resources. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering exports to the Amazon S3 database. + +:::info + +Mondoo does not delete existing exported data. You must delete the data manually. + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Export data to other platforms](/platform/maintain/export/overview) + +--- diff --git a/docs/platform/maintain/export/schema/README.md b/docs/platform/maintain/export/schema/README.md new file mode 100644 index 000000000..9c6e0a529 --- /dev/null +++ b/docs/platform/maintain/export/schema/README.md @@ -0,0 +1,12 @@ +--- +title: Export JSONL Schema +description: Schema for exporting Mondoo data to JSONL +--- + +Mondoo uses these schemas when exporting data to JSONL: + +- [**Asset**](./asset.md) + +- [**Result**](./result.md) + +- [**Vulnerability**](./vulns.md) diff --git a/docs/platform/maintain/export/schema/asset.md b/docs/platform/maintain/export/schema/asset.md new file mode 100644 index 000000000..dbeb90004 --- /dev/null +++ b/docs/platform/maintain/export/schema/asset.md @@ -0,0 +1,120 @@ +--- +title: Asset Export Schema +sidebar_label: Asset +description: Asset schema for the Mondoo JSONL export +--- + +This is the schema Mondoo uses when exporting asset data to JSONL. + +## Asset type + +`object` + +## Asset properties + +| Property | Type | Required? | Nullable? | +| :--------------------------------------------- | :----- | :-------- | :-------- | +| [annotations](#annotations-property) | Object | Yes | No | +| [asset_mrn](#asset_mrn-property) | String | Yes | No | +| [error](#error-property) | String | Yes | Yes | +| [exported_at](#exported_at-property) | String | Yes | No | +| [labels](#labels-property) | Object | Yes | No | +| mrn (deprecated) | String | Yes | No | +| [name](#name-property) | String | Yes | No | +| [platform_name](#platform_name-property) | String | Yes | No | +| [score_updated_at](#score_updated_at-property) | String | Yes | No | +| [updated_at](#updated_at-property) | String | Yes | No | + +### annotations property + +Metadata that Mondoo adds to assets + +`annotations` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| Object | Yes | No | + +### asset_mrn property + +Unique identifier for the asset + +`asset_mrn` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### error property + +The error if any (needs better description) + +`error` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | Yes | + +### exported_at property + +Timestamp when this data was exported. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`exported_at` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### labels property + +Metadata that Mondoo users add to assets + +`labels` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| Object | Yes | No | + +### mrn + +Deprecated. Use `asset_mrn` instead. + +### name property + +The name of the asset + +`name` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### platform_name property + +The name of the platform + +`platform_name` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### score_updated_at property + +Timestamp when the score of this asset was last updated. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`score_updated_at` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### updated_at property + +Timestamp when this asset was last updated. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +--- diff --git a/docs/platform/maintain/export/schema/result.md b/docs/platform/maintain/export/schema/result.md new file mode 100644 index 000000000..13b218d35 --- /dev/null +++ b/docs/platform/maintain/export/schema/result.md @@ -0,0 +1,128 @@ +--- +title: Result Export Schema +sidebar_label: Result +description: Result schema for the Mondoo JSONL export +--- + +This is the schema Mondoo uses when exporting result data to JSONL. + +## Result type + +`object` + +## Result properties + +| Property | Type | Required? | Nullable? | +| :----------------------------------- | :------------ | :-------- | :-------- | +| [asset_mrn](#asset_mrn-property) | `string` | Yes | No | +| [query_mrn](#query_mrn-property) | `string` | Yes | No | +| [title](#title-property) | `string` | Yes | No | +| [mql](#mql-property) | `string` | Yes | No | +| [data](#data-property) | Not specified | Yes | No | +| [exported_at](#exported_at-property) | `string` | Yes | No | +| [score](#score-property) | `integer` | Yes | No | +| [status](#status-property) | `string` | Yes | No | +| [modified_at](#modified_at-property) | `string` | Yes | No | +| [failed_at](#failed_at-property) | `string` | Yes | No | + +### asset_mrn property + +Unique identifier for the query result item's asset + +`asset_mrn` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### query_mrn property + +Unique identifier for the query + +`query_mrn` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### title property + +The title of the query result item + +`title` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### mql property + +MQL of the query result item + +`mql` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### data property + +The data of the query result item + +`data` + +| Type | Required? | Nullable? | +| :------ | :-------- | :-------- | +| Unknown | Yes | No | + +### exported_at property + +Timestamp from when the data was exported. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`exported_at` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### score property + +Score of the check result item + +`score` + +| Type | Required? | Nullable? | +| :------ | :-------- | :-------- | +| Integer | Yes | No | + +### status property + +Status of the check result item + +`status` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### modified_at property + +Timestamp from when this check result item was last modified. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`modified_at` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### failed_at property + +Optional timestamp from when this check result item failed This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`failed_at` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +--- diff --git a/docs/platform/maintain/export/schema/vulns.md b/docs/platform/maintain/export/schema/vulns.md new file mode 100644 index 000000000..660588545 --- /dev/null +++ b/docs/platform/maintain/export/schema/vulns.md @@ -0,0 +1,106 @@ +--- +title: Vulnerability Export Schema +sidebar_label: Vulnerability +description: Vulnerability schema for the Mondoo JSONL export +--- + +This is the schema Mondoo uses when exporting vulnerability data to JSONL. + +## Vulnerability type + +`object` + +## Vulnerability properties + +| Property | Type | Required? | Nullable? | +| :----------------------------------------------- | :------- | :-------- | :-------- | +| [asset_mrn](#asset_mrn-property) | `string` | Yes | No | +| [vuln_mrn](#vuln_mrn-property) | `string` | Yes | No | +| [vuln_id](#vuln_id-property) | `string` | Yes | No | +| [type](#type-property) | `string` | Yes | No | +| [summary](#summary-property) | `string` | Yes | No | +| [first_detected_on](#first_detected_on-property) | `string` | Yes | No | +| [resolved_on](#resolved_on-property) | `string` | Yes | No | +| [exported_at](#exported_at-property) | `string` | Yes | No | + +### asset_mrn property + +Unique identifier for the vulnerability item's asset + +`asset_mrn` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### vuln_mrn property + +Unique identifier for the vulnerability + +`vuln_mrn` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### vuln_id property + +Unique CVE number or advisory number + +`vuln_id` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### type property + +The type of the vulnerability: CVE or Advisory + +`type` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### summary property + +Brief summary of the vulnerability + +`summary` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### first_detected_on property + +Timestamp from when the vulnerability was first detected. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`first_detected_on` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### resolved_on property + +Optional timestamp from when the vulnerability was resolved. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`resolved_on` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +### exported_at property + +Timestamp from when this vulnerability data was exported. This is a date-time string matching [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification"). + +`exported_at` + +| Type | Required? | Nullable? | +| :----- | :-------- | :-------- | +| String | Yes | No | + +--- diff --git a/docs/platform/maintain/export/snowflake.mdx b/docs/platform/maintain/export/snowflake.mdx new file mode 100644 index 000000000..c62d17723 --- /dev/null +++ b/docs/platform/maintain/export/snowflake.mdx @@ -0,0 +1,105 @@ +--- +title: Export Data to Snowflake +sidebar_label: Snowflake +sidebar_position: 8 +description: Configure a Mondoo Snowflake integration to export Mondoo data to a Snowflake database +image: /img/featured_img/mondoo-feature.jpg +--- + +The Mondoo Snowflake integration lets you continuously export your space data, such as assets, vulnerabilities, and scan results, to a Snowflake database. The export runs approximately every 24 hours. + +![Mondoo data in Snowflake](/img/platform/maintain/export/snowflake/mondoo-in-snowflake.png) + +## Requirements + +To export data to Snowflake you must have a Snowflake account, database, warehouse, and schema already defined. To learn about setting these up, read the [Snowflake documentation](https://docs.snowflake.com/). + +### Find your Snowflake account ID and region ID + +Mondoo needs the ID and region ID of a Snowflake account to which to export data. To find it: + +1. Log into the [Snowflake web-based UI](https://app.snowflake.com/). + +2. Find the Snowflake logo at the bottom-left corner of the window. Select the nearby dropdown arrow and then hover over your user ID for the account to which you want to export data. + +![Find your Snowflake account ID](/img/platform/maintain/export/snowflake/find-snowflake-account-id.png) + +3. Find the **Locator** value. This is the account ID that Mondoo requires. + +4. Find the **Region** value. Snowflake shows the description of the region, such as `US Central 1 (Iowa)`. Instead of the description, Mondoo needs the ID, such as `us-central1.gcp`. + +## Add a new Snowflake integration + +1. Access the Integrations > Add > Snowflake page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Snowflake**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: Navigate to **INTEGRATIONS**. Under Exports, select **Snowflake**. + + ![Add an export integration](/img/platform/maintain/export/add-integration-exports.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that lets you easily recognize the Snowflake data warehouse. + + ![Snowflake integration - top](/img/platform/maintain/export/snowflake/snowflake-top.png) + +3. In the **Snowflake Account ID** box, enter the account's **Locator** value. To learn more, read the _Find your Snowflake account ID and region ID_ section above. + +4. In the **Database** box, enter the name of the database to which you want to export Mondoo data. + +5. In the **Warehouse** box, enter the name of the warehouse to which you want to export Mondoo data. + +6. In the **Schema** box, enter the name of the schema to use for the export. + + ![Snowflake integration - bottom](/img/platform/maintain/export/snowflake/snowflake-bottom.png) + +7. In the **Region** box, enter the region ID. To learn more, read the _Find your Snowflake account ID and region ID_ section above. + +8. Under **Account credentials**, enter the user name and password for your Snowflake account. + +9. If you require a specific role to access the database you've specified, enter that role in the **Role** box. + +10. To complete the integration, select the **CREATE INTEGRATION** button. + + Mondoo begins exporting information from your space. When this initial export completes, the integration status becomes **ACTIVE**. Mondoo performs an export approximately every 24 hours. + +## View your Snowflake integration + +1. In the side navigation bar, under Integrations, select **Snowflake**. + + ![Snowflake integrations list](/img/platform/maintain/export/snowflake/snowflake-int-status.png) + +2. In the list of Snowflake integrations, select the integration you want to view. + + ![Snowflake integrations list](/img/platform/maintain/export/snowflake/snowflake-view-int.png) + +### Statuses + +The possible statuses for a Snowflake integration are: + +- **ACTIVE**: The integration is active/healthy. +- **PENDING**: Mondoo has not yet attempted to connect to Snowflake. +- **ERROR**: Mondoo detected an error during export. + +### Export data to Snowflake at any time + +Mondoo exports your data to Snowflake approximately every 24 hours. You can also manually export data at any time. Use the **SCHEDULE NOW** button to request an export right away. Mondoo begins the export as soon as possible. If Mondoo is processing a lot of data, there can be some delay until Mondoo has sufficient resources. + +### Remove an integration + +To remove an integration, select the trash can icon. A confirmation prompt displays. Once you confirm the deletion, Mondoo removes the configured integration and stops triggering exports to the Snowflake database. + +:::info + +Mondoo does not delete existing exported data. You must delete the data manually. + +::: + +## Next steps + +- [Learn more about Mondoo](/platform/start/plat-what-is/) + +- [Export data to other platforms](/platform/maintain/export/overview) + +--- diff --git a/docs/platform/maintain/jira.mdx b/docs/platform/maintain/jira.mdx new file mode 100644 index 000000000..85666d001 --- /dev/null +++ b/docs/platform/maintain/jira.mdx @@ -0,0 +1,85 @@ +--- +title: Create Atlassian Jira Issues from Mondoo +sidebar_label: Create Jira Issues from Mondoo +sidebar_position: 4 +description: With the Mondoo Jira integration you can create a Jira issue directly from the Mondoo Console. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo can create issues directly in Atlassian Jira so you can schedule remediation work within your team's existing project workflows. Without ever leaving the Mondoo console, you can create Jira issues (tickets) that include all the details necessary for infrastructure owners to remediate findings, even if they don't have access to Mondoo. + +Once you set up a Jira integration, a Create Jira Issue icon on each asset's page lets team members add an issue to your Jira project: + +![Icon to add a Jira issue from Mondoo](/img/platform/ticket/jira-icon-closeup.png) + +Mondoo's Jira integration even provides remediation details right in the issues, so the team members fixing issues have all the information they need. + +![Add a Jira issue from Mondoo](/img/platform/ticket/add-jira-issue.png) + +## Integrate Jira with a Mondoo space + +Adding a Mondoo Jira integration to a space allows users in that space to add Jira issues from within the Mondoo Console. + +### Prerequisites + +- Owner or Editor access to the Mondoo space + +- A Jira account with access to the project where you want Mondoo to add issues + +- The _project key_ of the project where you want Mondoo to add issues + + A project key is the short name that Jira adds to all issues in a project. For example, you might have a project named Security with the project key SEC. All the issues in the Security project include the key SEC in their issue IDs, such as SEC-233 or SEC-1438. + + You can also view a project key in Jira by selecting the **Projects** menu and then **View all projects**. The table listing all your projects shows the key for each project. + +- An API token for Jira account access + + To learn how to create and copy an API token, read [Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/) in the Atlassian documentation. + +### Add a Jira integration + +1. Access the Integrations > Add > Atlassian Jira page in one of two ways: + + - New space setup: After creating a new Mondoo account or creating a new space, the initial setup guide welcomes you. Select **BROWSE INTEGRATIONS** and then select **Atlassian Jira**. + + ![Welcome to Mondoo Page](/img/platform/start/welcome_to_mondoo.png) + + - INTEGRATIONS page: In the side navigation bar, under **INTEGRATIONS**, select **Add New Integration**. Under Ticket Systems, select **Atlassian Jira**. + + ![Add an integration - ticket system](/img/platform/ticket/add-int-ticket.png) + +2. In the **Choose an integration name** box, enter a name for the integration. Make it a name that clearly shows this is a Jira integration. + + ![Add a Jira integration to a Mondoo space](/img/platform/ticket/add-jira-int-top.png) + +3. In the **Jira HOST** box, type the domain for your Jira instance. Do not include a slash at the end of the domain. Example: `https://lunalectric-workspace.atlassian.net` + +4. In the **Email address** box, enter the email address you use to log into your Jira instance. + +5. In the **API Token** box, paste your API token for access to your Jira account. To learn how to create and copy an API token, read [Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/) in the Atlassian documentation. + +6. In the **Provide a default project** box, enter the project key for the project where you want Mondoo to add issues. To learn about project keys, read the Prerequisites section above. + +7. Select the **CREATE INTEGRATION** button. + +## Add a Jira issue from Mondoo + +When a Mondoo space has a Jira integration, team members can add Jira issues directly from the Mondoo Console. Any team member can add issues, as long as their email address (in Mondoo) matches the email address they use to log into the Jira instance. + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate) to a space that is integrated with Jira and. + +2. [In the Inventory view, access the asset](/platform/security/posture/monitor/) for which you want to create a Jira issue. + + ![Add a Jira issue on a Mondoo asset](/img/platform/ticket/jira-icon-fleet.png) + +3. To the right of the asset name, select the Jira icon. + + ![Create a new Jira issue in Mondoo](/img/platform/ticket/add-jira-issue.png) + +4. Edit the issue summary and description as you wish and select the **CREATE ISSUE** button. + +In the Jira project, you can view the tickets that Mondoo creates on your behalf. It's like any other Jira issue. + +![Jira issue created by Mondoo](/img/platform/ticket/issue-in-jira.png) + +--- diff --git a/docs/platform/maintain/log.mdx b/docs/platform/maintain/log.mdx new file mode 100644 index 000000000..ddc7604e5 --- /dev/null +++ b/docs/platform/maintain/log.mdx @@ -0,0 +1,42 @@ +--- +title: View Audit Logs +sidebar_label: View Audit Logs +sidebar_position: 7 +description: Learn about Mondoo's audit logs +--- + +Mondoo tracks administrative events, such as organization and access management tasks, in audit logs. You access the logs in the Mondoo Console. There are two types of logs: + +- For each organization in your account, an _organization log_ tracks member (user) access management. + +- For each space in an organization, a _space log_ tracks management tasks, such as creation and deletion of service accounts and agents. + +## Access a space audit log + +1. [Navigate](/platform/start/navigate) to the organization that contains the space you want to see the log for. + + ![Select a Mondoo organization](/img/platform/start/select-org.png) + +2. Select the space you want to see the log for. + + ![Mondoo space log](/img/platform/maintain/space-log.png) + +3. In the left navigation bar, select **Settings**. + +4. Select **Audit Log**. + +## Access an organization audit log + +1. [Navigate](/platform/start/navigate) to the organization you want to see the log for. + + ![Select a Mondoo organization](/img/platform/start/select-org.png) + +2. In the left navigation bar, select **Settings**. + +3. Select **Audit Log**. + +## Get help + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/platform/maintain/overview.md b/docs/platform/maintain/overview.md new file mode 100644 index 000000000..110e6a722 --- /dev/null +++ b/docs/platform/maintain/overview.md @@ -0,0 +1,29 @@ +--- +title: Manage Mondoo - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Manage Mondoo access, exports, alerting, ticketing, logging, and versions +image: /img/featured_img/mondoo-feature.jpg +--- + +Learn how to manage your account, data, and organization(s) in Mondoo: + +- [Manage team members and accounts that can access Mondoo](/platform/maintain/access/overview) + +- [Export data from Mondoo](/platform/maintain/export/overview) + +- [Add Atlassian Jira issues directly from the Mondoo Console](/platform/maintain/jira/) + +- [Manage alerts](/platform/maintain/alerting/overview) + +- [Stay up to date on releases and versions](/platform/maintain/version/) + +- [View audit logs](/platform/maintain/log/) + +- [Manage your email, login, and display settings](/platform/maintain/user/overview) + +## Access the Mondoo Console + +Access the Mondoo Console in your web browser at [https://console.mondoo.com](https://console.mondoo.com). + +--- diff --git a/docs/platform/maintain/user/_category_.json b/docs/platform/maintain/user/_category_.json new file mode 100644 index 000000000..8764734d8 --- /dev/null +++ b/docs/platform/maintain/user/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Manage Your User Settings", + "position": 8 +} diff --git a/docs/platform/maintain/user/colorblind.mdx b/docs/platform/maintain/user/colorblind.mdx new file mode 100644 index 000000000..922441feb --- /dev/null +++ b/docs/platform/maintain/user/colorblind.mdx @@ -0,0 +1,37 @@ +--- +title: Enable Colorblind Mode in the Mondoo Console +sidebar_label: Enable Colorblind Mode +sidebar_position: 2 +description: Change the Mondoo Console display to accommodate color vision differences +image: /img/featured_img/mondoo-feature.jpg +--- + +You can change the Mondoo Console to accommodate color vision differences. The console's colorblind mode visualizes data using a different color palette. + +With colorblind mode disabled: + +![Mondoo space overview with colorblind mode disabled](/img/platform/maintain/user/full-color.png) + +With colorblind mode enabled: + +![Mondoo space overview with colorblind mode enabled](/img/platform/maintain/user/colorblind.png) + +You choose your preferred color mode in your Mondoo user settings: + +1. In the [Mondoo Console](https://console.mondoo.com), select your user icon in the top-right corner. + +2. On the **General Settings** tab, locate the **Display** options. + + ![Mondoo general user settings](/img/platform/maintain/user/general.png) + +3. Select the Colorblind Mode toggle to enable or disable it. + + Mondoo saves your change automatically. + +:::tip + +You can also switch the Mondoo Console display between light and dark mode by selecting the sun or moon icon on the toolbar. + +::: + +--- diff --git a/docs/platform/maintain/user/email.mdx b/docs/platform/maintain/user/email.mdx new file mode 100644 index 000000000..c860f7bab --- /dev/null +++ b/docs/platform/maintain/user/email.mdx @@ -0,0 +1,51 @@ +--- +title: Manage Your Email Preferences +sidebar_label: Email Preferences +sidebar_position: 3 +description: Manage the email notifications you receive from Mondoo +image: /img/featured_img/mondoo-feature.jpg +--- + +You control what email you receive from Mondoo. By default, Mondoo sends a weekly report on activity in your spaces. We also send news about: + +- Our company and projects + +- Product improvements and features + +- Conferences we're attending and webinars we're hosting + +## Unsubscribe from newsletters + +1. In the [Mondoo Console](https://console.mondoo.com), select your user icon in the top-right corner. + +2. Select the **Email Preferences** tab. + + ![Mondoo security settings](/img/platform/maintain/user/email.png) + +3. Under **Newsletter Subscriptions**, select the toggle next to the type of message you no longer want to receive. + + Mondoo saves your changes automatically. + +## Re-subscribe to newsletters + +If you chose to stop receiving any of our newsletters but have changed your mind, contact us to re-subscribe: + +- Mondoo community Slack channel + +- + Mondoo GitHub community + + +## Subscribe or unsubscribe to weekly space reports + +1. In the [Mondoo Console](https://console.mondoo.com), select your user icon in the top-right corner. + +2. Select the **Email Preferences** tab. + + ![Mondoo security settings](/img/platform/maintain/user/email.png) + +3. Under **Email Notifications**, select the toggle next to **Send me weekly reports** to enable or disable weekly messages about the activity in all the spaces of which you're a member. + + Mondoo saves your changes automatically. + +--- diff --git a/docs/platform/maintain/user/login.mdx b/docs/platform/maintain/user/login.mdx new file mode 100644 index 000000000..bf6d883d1 --- /dev/null +++ b/docs/platform/maintain/user/login.mdx @@ -0,0 +1,41 @@ +--- +title: Manage Your Mondoo Login +sidebar_label: Manage Your Login +sidebar_position: 4 +description: Control how you log into the Mondoo Console +image: /img/featured_img/mondoo-feature.jpg +--- + +You can sign up for Mondoo with your universal login (Google, GitHub, or Microsoft) account or using your email address and a password. After you've signed up, you use that method to log into Mondoo. You can change your login options any time. + +## Log in with your Google, GitHub, or Microsoft account + +You can connect your Mondoo account with a universal login account so that you can use the universal login account to securely access Mondoo. For example, suppose you signed up for Mondoo with an email and password, but you want to log in using your Google account. You simply connect your Google account to your Mondoo account. The next time you log in, you can use Google for authentication. + +Connect your universal login with your Mondoo account: + +1. In the [Mondoo Console](https://console.mondoo.com), select your user icon in the top-right corner. + +2. Select the **Security** tab. + + ![Mondoo security settings](/img/platform/maintain/user/login.png) + +3. Under **Connected Accounts**, select the **CONNECT** button next to the universal login provider you want to use to log into Mondoo. + +4. Provide the confirmation that the universal login provider requests. + +## Change your email address or password + +1. In the [Mondoo Console](https://console.mondoo.com), select your user icon in the top-right corner. + +2. Select the **Security** tab. + +3. Select the **MANAGE** button next to **Email & Password**. + + ![Mondoo email and password settings](/img/platform/maintain/user/login-email.png) + +4. Type a new user name and/or type and retype a new password. + +5. Select the **CONNECT** button. + +--- diff --git a/docs/platform/maintain/user/overview.md b/docs/platform/maintain/user/overview.md new file mode 100644 index 000000000..25236580a --- /dev/null +++ b/docs/platform/maintain/user/overview.md @@ -0,0 +1,17 @@ +--- +title: Manage Your User Settings - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Manage your Mondoo user preferences and login +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo's user settings include display and email preferences as well as control over your Mondoo login method. + +- [Enable Colorblind Mode in the Mondoo Console](/platform/maintain/user/colorblind/) + +- [Manage Your Email Preferences](/platform/maintain/user/email/) + +- [Manage Your Mondoo Login](/platform/maintain/user/login/) + +--- diff --git a/docs/platform/maintain/version.mdx b/docs/platform/maintain/version.mdx new file mode 100644 index 000000000..8bbf0fce1 --- /dev/null +++ b/docs/platform/maintain/version.mdx @@ -0,0 +1,28 @@ +--- +title: Releases and Versions +sidebar_label: Releases and Versions +sidebar_position: 6 +description: Learn about Mondoo's versioning policy and how to make sure you have the latest release +--- + +Mondoo Platform is web-based SaaS, so you never need to upgrade to get the latest Mondoo Console and administrative software. However, [cnspec](/platform/infra/opsys/mondoo-cnspec/), Mondoo's CLI that powers some Mondoo integrations, is a binary that you manage on your assets. + +:::note + +You're responsible for updating cnspec across your infrastructure. To learn how, read [Update cnspec](/cnspec/cnspec-adv-install/update/). + +::: + +## How Mondoo versioning works + +Mondoo's versioning policy is _based on_ the semantic versioning standard. For example, in version 6.3.2, 6 is the major version, 3 is the minor version, and 2 is the patch. When we release a new version, we increment one of these three version components depending on the type of changes we introduce. + +### Breaking changes + +Major version releases of Mondoo contain _soft-breaking_ changes. These may require you to update your integrations, policies, or automation scripts in order to avoid disruption, but you have a long time to make those updates. We provide advanced warning before we make these changes, and they don't become _hard-breaking_ changes until the next major release. + +## Get help + +Can't find what you need? Join our community Slack channel to chat with us and other Mondoo users. + +--- diff --git a/docs/platform/security/_plan/__category_.json b/docs/platform/security/_plan/__category_.json new file mode 100644 index 000000000..708e8473e --- /dev/null +++ b/docs/platform/security/_plan/__category_.json @@ -0,0 +1,4 @@ +{ + "label": "Plan Security Improvement", + "position": 4 +} diff --git a/docs/platform/security/_plan/_example.mdx b/docs/platform/security/_plan/_example.mdx new file mode 100644 index 000000000..d6beb3d51 --- /dev/null +++ b/docs/platform/security/_plan/_example.mdx @@ -0,0 +1,65 @@ +--- +title: Example Security Improvement Plan +sidebar_label: Example +sidebar_position: 2 +description: An example of how to to create an achievable plan for improving security posture +image: /img/featured_img/mondoo-feature.jpg +--- + +This topic provides a sample case study of how to create an achievable plan for improving security posture. To learn about planning with Mondoo, read [Plan Security Improvement - Overview]. For instructions on planning security improvement, read [Plan Security Improvement Using Risk Actions](/platform/security/plan/plansteps/). + +Suppose our imaginary company, Lunalectric, wants to improve security for the inventory in their Employee Workstations space. + +The Employee Workstations space has a current score of 39 based on the enabled policies in the space, which include Mondoo's workstation and OS-specific policies (Linux policies, a macOS policy, and so on). All checks in the policies are currently enabled. + +The Lunalectric team's goal for this space is to reach and maintain a score of 99. But scoring 99 right now just isn't possible. They need to make changes to password policies that affect all employees, get dozens of people to upgrade software, and more. + +What Lunalectric does is adjust the baseline for the Employee Workstations space so that it scores 99 right now. They plan progressive improvements using achievable milestones. At each milestone, their baseline will rise; Mondoo assesses the security of the space based on an increasing number of checks. + +## Lunalectric's adjusted baseline + +In the Risk Actions - Establish Your Baseline step, the Lunalectric team uses the slider to set their target score to 99. Based on this selection, Mondoo moves most of the failing checks from the Active list to the Future Goals list. + +![Mondoo - establish a security baseline](/img/platform/security/plan/luna-baseline.png) + +The suggestion is that in order to achieve the target score right now, Mondoo not use the Future Goals checks when assessing the security of the assets in the Employee Workstations space. + +In the next step, the Lunalectric team plans how to address those failing checks in the future. + +## Lunalectric's goals + +In the Risk Actions - Plan Your Goals step, Mondoo shows all the checks that it moved to Future Goals. Here the Lunalectric team can define exceptions for the checks that don't matter to them and set milestones for passing the checks that do matter. + +### Lunalectric's exceptions + +There are some checks that Lunalectric doesn't ever want to include in workstation security assessments, such as _Disable printer sharing_ and _Enable "Show Wi-Fi status in menu bar"_. + +![Mondoo - select checks to make exceptions](/img/platform/security/plan/luna-select-checks.png) + +Because these checks are irrelevant to Lunalectric, they make them exceptions. + +![Mondoo - exceptions](/img/platform/security/plan/luna-exceptions.png) + +### Lunalectric's milestones + +133 checks remain in the Future Goals list. That means that there are 133 checks that the Lunalectric team _wants_ their Employee Workstations space to pass, but they can't pass right now. What they can do is set milestones for when they _can_ pass some of those checks. The team plans batches of improvements and creates a milestone for each batch. + +For example, they set one milestone for improving password security. Typing `password` in the Search box filters the lists to show only checks containing the word `password`. This makes it easy to review password-related checks and choose two to batch together under a single milestone. + +![Mondoo - move checks to milestone](/img/platform/security/plan/luna-password.png) + +They set the milestone for mid-July. + +![Mondoo - milestone date](/img/platform/security/plan/create-milestone.png) + +And now the milestone appears in the space's future goals. + +![Mondoo - show milestones](/img/platform/security/plan/view-milestones.png) + +The Lunalectric team creates several milestones to plan the next few months of security progress. Every two weeks, Mondoo will raise their baseline based on the milestones they set in the planning process. If they stay on track and implement security improvements to meet the milestones, their score will remain 99 or higher. If they fail to make the planned improvements, their score will drop (unless they make adjustments to their planning). + +The risk actions feature allows the Lunalectric team to hold themselves to a steadily increasing security standard that is based on careful and realistic planning. They avoid the worry and discouragement that low scores can cause, but don't let important security measures slip through the cracks. + +For detailed instructions on planning security improvement, read [Plan Security Improvement Using Risk Actions](/platform/security/plan/plansteps/). + +--- diff --git a/docs/platform/security/_plan/_overview.mdx b/docs/platform/security/_plan/_overview.mdx new file mode 100644 index 000000000..9fdc53b4b --- /dev/null +++ b/docs/platform/security/_plan/_overview.mdx @@ -0,0 +1,29 @@ +--- +title: Plan Security Improvement - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Use Mondoo to create an achievable plan for improving security posture. +image: /img/featured_img/mondoo-feature.jpg +--- + +Once you've used Mondoo to reveal the misconfigurations and vulnerabilities in your infrastructure, you can fix the problems you've uncovered. Mondoo's _risk actions_ feature helps you create an achievable plan to boost your security posture. It provides a structure for you to incrementally improve security one milestone at a time. + +The combined assets in your space have a score that represents their security posture based on all the [checks in the enabled policies](/platform/security/posture/policies/). When you first integrate your infrastructure with Mondoo, your score is likely to be low. A low score shows opportunity for great improvement! However, in some cases, reporting a low score can alarm upper management and discourage your team. You can prevent this negative impact by adjusting your security baseline and planning progressive improvement. + +You plan improvements in three steps: + +A. **Set a target score.** You choose the security score you want this space to achieve. Based on this target score, Mondoo creates a baseline for you, excluding less important failing checks so that the space's current scan results reach the target score. + +B. **Plan your goals.** You determine what to do with each excluded check. You can: + +- _Set a milestone_, a date when Mondoo adds the check to the baseline. Beginning on the milestone date, the becomes part of the basis by which Mondoo measures the security of the space. By that date, the assets in the space must pass the check, or the space score drops. You can set multiple milestones, each with one or more added checks, to steadily raise the security standard for the space. + +- _Define exceptions_, checks that aren't relevant to the your organization or to the assets in the space. An exception is a security standard that you don't need to meet and will never meet. + +C. **Review and apply your plan.** Verify the space's current score based on your new baseline, the milestones you defined for raising the baseline, and the checks that you chose to ignore. Then apply the plan to begin your new basis for measuring the space's security posture. + +For a detailed example, read [Example Security Improvement Plan](/platform/security/plan/example/). + +For instructions on planning, read [Plan Security Improvement Using Risk Actions](/platform/security/plan/plansteps/). + +--- diff --git a/docs/platform/security/_plan/_plansteps.mdx b/docs/platform/security/_plan/_plansteps.mdx new file mode 100644 index 000000000..e606992ba --- /dev/null +++ b/docs/platform/security/_plan/_plansteps.mdx @@ -0,0 +1,55 @@ +--- +title: Plan Security Improvement Using Risk Actions +sidebar_label: Plan Improvement Using Risk Actions +sidebar_position: 3 +description: Use Mondoo's Risk Actions feature to create an achievable plan for improving security posture. +image: /img/featured_img/mondoo-feature.jpg +--- + +To learn about planning with Mondoo, read [Plan Security Improvement - Overview]. For a detailed example of planning security improvement, read [Example Security Improvement Plan](/platform/security/plan/example/). + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate) to the space for which you want to plan security improvements. + +2. In the side navigation bar, select **Risk Actions**. + + ![Mondoo - navigate to Risk Actions for a space](/img/platform/security/plan/plan-start.png) + +3. Select the **START PLANNING** button. The Establish Your Baseline step displays. + + ![Mondoo - establish a security baseline](/img/platform/security/plan/luna-baseline.png) + +4. Use the slider to choose the score you want to achieve now and maintain moving forward. As you move the slider, Mondoo moves checks between the Active list and the Future Goals list. + +5. Select the **NEXT STEP** button. The Plan Your Goals step displays. + + ![Mondoo - establish a security baseline](/img/platform/security/plan/luna-baseline.png) + +6. Turn any checks that you want to permanently ignore into exceptions: + + ![Mondoo - select checks to make exceptions](/img/platform/security/plan/luna-select-checks.png) + + a. Select the checkmark next to each check that you want to ignore. + + b. Select the **MOVE TO** drop-down menu and select **Exceptions**. + +7. Create milestones for checks that you want the space to pass in the future: + + ![Mondoo - move checks to milestone](/img/platform/security/plan/luna-password.png) + + a. Select the checkmark next to all the checks that you want to add to a shared milestone. + + b. Select the **MOVE TO** drop-down menu and select **New Milestone**. + + c. Choose a date for the milestone and select the **CREATE MILESTONE** button. + + Repeat steps a through c for more milestones. + +8. When you finish creating exceptions and milestones for the space, select the **NEXT STEP** button. The Review Your Plan step displays. + + ![Mondoo - review plan](/img/platform/security/plan/review.png) + +9. Review the milestones you've set. If you need to make changes, go to the bottom of the page and select the **BACK** button. If you're satisfied with the plans you've created, select the **APPLY PLAN** button. + +Mondoo recompiles the space's overall score using the new baseline you defined. Each time milestones dates occur, Mondoo recompiles the score again based on the new baseline. + +--- diff --git a/docs/platform/security/customize/_category_.json b/docs/platform/security/customize/_category_.json new file mode 100644 index 000000000..73edf6042 --- /dev/null +++ b/docs/platform/security/customize/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Customize Security", + "position": 3 +} diff --git a/docs/platform/security/customize/checks.mdx b/docs/platform/security/customize/checks.mdx new file mode 100644 index 000000000..be20b206a --- /dev/null +++ b/docs/platform/security/customize/checks.mdx @@ -0,0 +1,81 @@ +--- +title: Snooze or Disable Checks in Policies +sidebar_label: Disable/Snooze Checks +sidebar_position: 2 +description: Control which portions of policies Mondoo uses to assess your infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Make _exceptions_ in a policy to customize how Mondoo evaluates your assets. Exceptions tell Mondoo to exclude certain [checks](/platform/security/posture/pac/) when calculating your overall security posture. + +If a policy contains some checks that don't apply to your space or that, for any reason, you don't want to include in your security assessments, you can _disable_ them. Doing so instructs Mondoo to skip them entirely. Mondoo doesn't track disabled checks, report their progress, or include them in your overall score. + +To temporarily or indefinitely exclude a check from your overall results, you can _snooze_ it. While a check is snoozed, its failures don't affect your asset or space scores. Snoozing is useful when you intend to comply with a guideline eventually but don't want it distracting your team right now. + +## Disable or snooze checks + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space in which you want to disable a check. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Security**, select **Policies**. + + ![Security policies in the Mondoo Console](/img/platform/security/policies.png) + +3. Select the **Checks** tab to see all the checks in the policy. + +4. Check the boxes to the left of the checks you want to snooze or disable. + + ![Mondoo security - set an exception](/img/platform/security/set-exception.png) + +5. Select the **SET EXCEPTION** button. + +6. Select whether to **Snooze** or **Disable** the check. + + If you select Snooze, select how long to snooze the check. Select **Indefinitely** to keep the check snoozed unless you un-snooze it. + +7. Select the **SAVE EXCEPTION** button. + +## Approve or reject an exception + +Exceptions take effect the moment they're added. However, as an extra tracking step, a team member can approve or reject an exception: + +- Approving an exception allows it to remain. + +- Rejecting an exception removes it. + +To approve or reject an exception: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space in which you want to approve or deny exceptions. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Security**, select **Policies**. + + ![Security policies in the Mondoo Console](/img/platform/security/policies.png) + +3. Select a policy and select the **Exceptions** tab to see all the exceptions in the policy. + + ![Security policies in the Mondoo Console](/img/platform/security/accept-reject.png) + +4. Select the **Reject** button to remove the exception, or select the **Approve** button to keep the exception with your approval. + +## Un-snooze or re-enable a check + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the space in which you want to disable a check. + + ![Space in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, under **Security**, select **Policies**. + + ![Security policies in the Mondoo Console](/img/platform/security/policies.png) + +3. Select the **Checks** tab to see all the checks in the policy. The list indicates snoozed or disabled checks. + +4. Check the boxes to the left of the checks you want to un-snooze or re-enable. + + ![Mondoo security - select checks](/img/platform/security/remove-exception.png) + +5. Select **Delete Exception and Enable**. + +--- diff --git a/docs/platform/security/customize/overview.mdx b/docs/platform/security/customize/overview.mdx new file mode 100644 index 000000000..af3093423 --- /dev/null +++ b/docs/platform/security/customize/overview.mdx @@ -0,0 +1,23 @@ +--- +title: Customize Security - Overview +sidebar_label: Overview +sidebar_position: 1 +description: To suit your business needs, modify how your Mondoo space uses policies +image: /img/featured_img/mondoo-feature.jpg +--- + +To meet your business's unique security needs, you can customize policies: + +- [Disable or snooze a check](/platform/security/customize/checks/) in a policy to exclude it from security assessments. + +- [Change check properties](/platform/security/customize/checks/) to customize the values that Mondoo scans for. + +#### See also + +- To learn about Mondoo policies, read [Policy as Code](/platform/security/posture/pac/). + +- To learn how to enable, disable, and preview policies, read [Manage Policies](/platform/security/posture/policies/) + +- To learn how to write policies to meet your organization's specific needs, read the [Policy Authoring Guide](/cnspec/cnspec-policies/write/). + +--- diff --git a/docs/platform/security/customize/props.mdx b/docs/platform/security/customize/props.mdx new file mode 100644 index 000000000..4941af91e --- /dev/null +++ b/docs/platform/security/customize/props.mdx @@ -0,0 +1,53 @@ +--- +title: Change Check Properties in Policies +sidebar_label: Change Check Properties +sidebar_position: 3 +description: Change the values Mondoo uses to assess your infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Many policies have _properties_ that you can customize to suit your organization's needs. Properties are the ideal values that policies check against. + +For example, the ideal value for AWS users' minimum password lengths is 14 characters. The "Amazon Web Services (AWS) Best Practices for NIST 1800 25" policy checks that users are required to have passwords 14 characters or longer. The property `iamPasswordPolicyMinimumPasswordLength` tells Mondoo what the ideal value is. By default, that value is `14`. If your organization has a different requirement for minimum password length, you can change this value. + +Some other examples of properties are: + +- Whether to require an alert when certain events occur + +- Maximum time between password or key rotations + +- What SSL or TLS ciphers to allow + +- Allowed domains + +- Allowed algorithms + +- Blocked ports + +When you change a property in a policy, that change is for the current space only. It doesn't apply to other spaces in your organization. + +To change a property in a policy: + +1. Access the registry for the space as instructed above. + +2. Locate the policy in which you want to change a property: Scroll through the list of available policies or use the **Filter** search box. + +3. Select the policy to see its details. + + If the policy has properties, you see a Properties tab. + +4. Select the Properties tab to view all the properties in the policy. + + ![Mondoo - properties in a policy](/img/platform/security/registry-properties.png) + +5. Select the property you want to change. + + ![Mondoo - change a policy property](/img/platform/security/customize-props.png) + +6. Type the new property value over the old one and then press **Command + Return**. + + A popup message confirms the change. + +The change takes effect immediately. The next time Mondoo scans applicable assets in the space, it uses the new value. + +--- diff --git a/docs/platform/security/overview.mdx b/docs/platform/security/overview.mdx new file mode 100644 index 000000000..4352fae0e --- /dev/null +++ b/docs/platform/security/overview.mdx @@ -0,0 +1,30 @@ +--- +title: Secure Your Infrastructure with Mondoo +sidebar_label: Overview +hide_table_of_contents: true +sidebar_position: 1 +description: Mondoo continuously assesses the security of your infrastructure throughout the development cycle and in production. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo continuously assesses the security of your IT infrastructure throughout the development cycle and in production. Using Mondoo's deep integrations and automated scanning, you can identify risks, vulnerabilities, and misconfigurations in order to improve your overall security posture. + +Mondoo features out-of-the-box security and best practice policies certified by Mondoo and the Center for Internet Security. You integrate your infrastructure with Mondoo, enable the policies you want to adhere to, and Mondoo does the heavy lifting. It continuously scans, providing up-to-date information on your security and instructions for improving. + +## Secure your infrastructure + +- [Assess your security posture](/platform/security/posture/overview/) with Mondoo's policy as code. + +- [Find vulnerabilities and advisories](/platform/security/vuln/overview/) across your infrastructure. + +- [Customize your Mondoo security](/platform/security/customize/overview/) to meet the unique needs of your organization. + +#### See also + +- [Create a Mondoo Account](/platform/start/plat-start-acct/) + +- [Begin Securing Your Infrastructure](/platform/start/plat-start-2/) + +- [Integrate Your Infrastructure with Mondoo](/platform/infra/overview/) + +--- diff --git a/docs/platform/security/posture/_category_.json b/docs/platform/security/posture/_category_.json new file mode 100644 index 000000000..ee35effdd --- /dev/null +++ b/docs/platform/security/posture/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Assess Your Security Posture", + "position": 1 +} diff --git a/docs/platform/security/posture/monitor.mdx b/docs/platform/security/posture/monitor.mdx new file mode 100644 index 000000000..c58045164 --- /dev/null +++ b/docs/platform/security/posture/monitor.mdx @@ -0,0 +1,56 @@ +--- +title: Monitor Your Infrastructure Security +sidebar_label: Monitor Your Infrastructure +sidebar_position: 4 +description: Use Mondoo to monitor the security of your entire infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo provides continuous security monitoring of the assets in your digital infrastructure. In the [Mondoo Console](https://console.mondoo.com), you can always see up-to-date scan results for all the assets registered with your account. + +The **Inventory** view in the Mondoo Console provides many ways to monitor your infrastructure security, from overall scores for spaces in your organization down to how an individual asset scores on different checks in a policy. + +## Access the Inventory view and monitor assets + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate/) to the organization containing the space you want to view. + + ![Monitor organization security in the Mondoo Console](/img/platform/security/monitor-org.png) + +2. In the side navigation bar, select **Spaces**. + +3. To drill down into a space, select the box representing the space. To drill down into the assets in the space, select the **INVENTORY** box. + + ![Space view in the Mondoo Console](/img/platform/security/monitor-space.png) + +4. Filter the list of assets: + + - If there are multiple types of assets in the space, you can select a type to show only assets of that type. For example, select AWS to show only AWS assets. To stop filtering by integration type, select the integration type again. + + - To filter by account, namespace, or configuration keywords, type the word or part of the word in the search box. + + ![Filter assets in the Mondoo Console](/img/platform/security/monitor-filter.png) + + - To remove a filter, select the **x** next to the filter. + +5. To see details on an asset's most recent security scan, select the asset. + + ![View security detail in the Mondoo Console](/img/platform/security/monitor-asset.png) + +## How Mondoo scores policies + +When Mondoo scans your assets, it produces a graded score to assess risk to your business. Mondoo scoring is based on policies that match the type of asset scanned. For example, there are policies for Windows, Linux, Kubernetes clusters, and so on. You [choose which policies are enabled](/platform/security/posture/policies/) in a space. An asset can match multiple policies enabled in a space. + +These are the ranges for Mondoo scores: + +```text +score: + 80 .. 100 A (100 A+ 95 A 85 A- 80) + 60 .. 79 B ( 79 B+ 75 B 65 B- 60) + 30 .. 59 C ( 59 C+ 50 C 40 C- 30) + 10 .. 29 D ( 29 D+ 25 D 15 D- 10) + 0 .. 9 F +``` + +To learn more about scoring, read [Score Policies](/cnspec/cnspec-policies/write/policy-scoring/). + +--- diff --git a/docs/platform/security/posture/overview.mdx b/docs/platform/security/posture/overview.mdx new file mode 100644 index 000000000..2955cb744 --- /dev/null +++ b/docs/platform/security/posture/overview.mdx @@ -0,0 +1,25 @@ +--- +title: Assess and Improve Your Security Posture - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Use Mondoo to continuously assess and improve your security posture. +image: /img/featured_img/mondoo-feature.jpg +--- + +Your _security posture_ is your organization's ability to identify, respond to, and recover from security threats and risks. Do you understand your current security posture? Do you know what your greatest risks are right now? Do you know exactly how to eliminate those risks? With Mondoo, the answer is always "Yes." + +Mondoo continuously assesses the security of your infrastructure based on security policies that you select. These policies are the standards to which you hold your organization, benchmarks you want your systems to meet. Mondoo is always evaluating your security performance against these policies and providing both high-level and detailed data on your current risk. Based on Mondoo's security data and detailed mitigation instructions, you can close security gaps and eliminate risks. + +- Learn how Mondoo's [policy as code](/platform/security/posture/pac) automates continuous security monitoring. + +- [Choose and manage the policies](/platform/security/posture/policies) that are the basis for Mondoo's security assessments. + +- [Monitor your security](/platform/security/posture/monitor) and learn what the greatest risks are to your environments. + +#### See also + +- [Integrate Your Infrastructure with Mondoo](/platform/infra/overview/) + +- [Vulnerabilities and Advisories](/platform/security/vuln/overview/) + +--- diff --git a/docs/platform/security/posture/pac.mdx b/docs/platform/security/posture/pac.mdx new file mode 100644 index 000000000..351e28dcb --- /dev/null +++ b/docs/platform/security/posture/pac.mdx @@ -0,0 +1,31 @@ +--- +title: Policy as Code +sidebar_label: Policy as Code +sidebar_position: 2 +description: Mondoo's policy as code powers automated and continuous security management +image: /img/featured_img/mondoo-feature.jpg +--- + +Security policies and compliance frameworks typically are documents. Text in these documents describes each guideline and its rationale, and sometimes the consequences of not complying. + +But documents don't evaluate your environments. The work to verify that your infrastructure follows security standards is often manual, time intensive, and error prone. For example, if you need to manually demonstrate compliance for an audit, it can take weeks just to provide a snapshot of a single moment in time. + +_Policy as code_ lets you automate compliance using security benchmarks and best practices. The code serves two purposes: It documents the security guidelines and it tests your systems to ensure they follow those guidelines. + +Each Mondoo policy is a codified collection of _checks_, assertions that test for certain configurations. Each check can be true or false, and has an impact score that determines its importance within the policy. For example, the _Linux Security_ policy might include checks that ensure the asset: + +- Doesn't accept ICMP redirects + +- Has prelink disabled + +- Has reverse path filtering enabled + +... and dozens more. + +To learn more about policy as code, read [About Policies](/cnspec/cnspec-policies/). To learn more about checks, read [Checks](https://mondoo.love/docs/cnspec/cnspec-policies/write/simple/#checks). + +You choose whether to enable the _Linux Security_ policy. If it's enabled, then when Mondoo scans Linux-based assets, it evaluates them based on the checks defined in that policy (as well as any other applicable policies you enable). + +Mondoo has hundreds of policies for dozens of different types of platforms. You choose which policies you want to use as a basis to assess the security of your infrastructure. To learn how, read [Manage Policies](/platform/security/posture/policies/). + +--- diff --git a/docs/platform/security/posture/policies.mdx b/docs/platform/security/posture/policies.mdx new file mode 100644 index 000000000..7de48eb6e --- /dev/null +++ b/docs/platform/security/posture/policies.mdx @@ -0,0 +1,89 @@ +--- +title: Manage Policies +sidebar_label: Manage Policies +sidebar_position: 3 +description: Mondoo security policies. +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo comes stocked with a constantly growing collection of policies, which are codified benchmarks used to assess your infrastructure. Policies control what misconfigurations and security issues Mondoo checks for when it evaluates your digital business assets. Mondoo's built-in policies are production ready, simple to deploy and customize in any environment, and actionable. + +Mondoo continuously assesses your systems according to the policies _you enable_. The **registry** is where you control which policies Mondoo uses to assess your infrastructure. + +In Mondoo, you manage policies separately for each space in your organization. When you create a new space, it contains a default set of policies. Each space in your account can have a unique set of policies, which you manage in the registry for that space. + +Managing policies involves: + +- **Enabling a policy** to use it as a basis for scanning assets in the space + +- **Disabling a policy** to stop using it in the space + +- **Previewing a policy** to use it as a basis for scanning but exclude it from scoring + +Any policies you enable, disable, preview in a space's registry affect only that space. + +To learn more about Mondoo policies, read [Policy as Code](/platform/security/posture/pac/) + +## Access the registry for a space + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate](/platform/start/navigate) to the space. + +2. In the side navigation bar, select **Registry**. + + ![Mondoo - navigate to the security registry for a space](/img/platform/security/registry-nav.png) + +## Enable policies + +Enable a policy to use that policy as a basis for evaluating assets in the space. + +1. Access the registry for the space as instructed above. + +2. Locate the policy you want to enable by scrolling through the list of available policies or using the **Filter** search box. + +3. To enable a policy, select the enable icon (a bar chart) on that policy's row. + + ![Mondoo - enable the policy for a space](/img/platform/security/enable-a-policy.png) + +Changes take effect immediately. The next time Mondoo scans applicable assets in the space, it includes this policy. + +## Disable policies + +Disable a policy to stop using that policy as a basis for assessing the security of assets in the space. + +:::caution + +Disabling a policy deletes any existing reports from that policy in the space. + +::: + +1. Access the registry for the space as instructed above. + +2. Locate the policy you want to enable by scrolling through the list of available policies or using the **Filter** search box. + +3. To disable the policy, select the disable icon (a moon with Zs) on that policy's row. + + ![Mondoo - disable a policy for a space](/img/platform/security/disable-a-policy.png) + +Changes take effect immediately. The next time Mondoo scans applicable assets in the space, it does not include this policy. + +## Preview policies + +Preview a policy to use the policy as a basis for evaluating assets in the space but **not score** the policy. When Mondoo calculates an asset's overall score, it doesn't factor in how the asset performs in the scan based on this policy. When Mondoo calculates a space's or an organization's overall score, it doesn't factor in how any assets perform in a scan based on this policy. + +1. Access the registry for the space as instructed above. + +2. Locate the policy you want to enable by scrolling through the list of available policies or using the **Filter** search box. + +3. To preview the policy, select the preview icon (a light bulb) on that policy's row. + + ![Mondoo - preview a policy for a space](/img/platform/security/preview-a-policy.png) + +Changes take effect immediately. The next time Mondoo scans applicable assets in the space, it includes this policy's results but not its scores. + +#### See also + +- [Monitor Your Infrastructure Security](/platform/security/posture/monitor/) + +- [Customize Security](/platform/security/customize/overview/) + +--- diff --git a/docs/platform/security/vuln/_category_.json b/docs/platform/security/vuln/_category_.json new file mode 100644 index 000000000..4e87a57c4 --- /dev/null +++ b/docs/platform/security/vuln/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Identify Vulnerabilities", + "position": 2 +} diff --git a/docs/platform/security/vuln/advisories.md b/docs/platform/security/vuln/advisories.md new file mode 100644 index 000000000..07eef417e --- /dev/null +++ b/docs/platform/security/vuln/advisories.md @@ -0,0 +1,35 @@ +--- +title: Find Advisories +sidebar_label: Find Advisories +sidebar_position: 3 +description: Use Mondoo to find advisories that put your infrastructure at risk +image: /img/featured_img/mondoo-feature.jpg +--- + +Software vendors often release _advisories_ that provide recommendations on how to fix or mitigate vulnerabilities in their products. Advisories may or may not be released before vulnerabilities are disclosed. Sometimes advisories provide workarounds or other steps that users can take to mitigate a security weakness in the vendor’s products. + +## Find advisories in your infrastructure + +Find advisories for assets in a space: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate to the space](/platform/start/navigate) in which you want to see vulnerabilities + +2. In the left navigation bar, under **Vulnerabilities**, select **Advisories**. + + ![Find Advisories](/img/platform/security/advisories.png) + + The list shows advisories found in your infrastructure. + +3. To filter the list, enter text in the search bar. These are some examples: + + - To show only advisories for a certain platform, enter all or part of the platform name. For example, type `windows`, `debian`, or `google`. + + - To find an advisory related to a specific CVE number, enter all or part of the number. For example, type `2023-21755` or `1325`. + + - To find advisories for a certain service, tool, API, or other technology, enter all or part of its name. For example, enter `winsock`, `curl`, or `cim`. + +4. To see the assets in your space where the advisory is found, select the advisory. + +See also: [Find Vulnerabilities (CVEs)](/platform/security/vuln/vulnerabilities) + +--- diff --git a/docs/platform/security/vuln/overview.mdx b/docs/platform/security/vuln/overview.mdx new file mode 100644 index 000000000..d0ab8cf84 --- /dev/null +++ b/docs/platform/security/vuln/overview.mdx @@ -0,0 +1,21 @@ +--- +title: Identify Vulnerabilities - Overview +sidebar_label: Overview +sidebar_position: 1 +description: Rely on Mondoo to find vulnerabilities and advisories in your infrastructure +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo identifies vulnerabilities and advisories that affect the assets across your entire infrastructure, including operating systems, software applications, and more. + +![Vulnerabilities dashboard in the Mondoo Console](/img/platform/security/vuln-dash.png) + +A _vulnerability_ is a weakness in a computer system that an attacker can exploit to gain access or extract information. Vulnerabilities have descriptions that may or may not include exploits and methods to address the weakness. + +[Find vulnerabilities in your infrastructure](/platform/security/vuln/vulnerabilities/) + +Vendors often release _advisories_ that provide recommendations on how to fix or mitigate vulnerabilities in their products. Mondoo let you know if there are advisories relevant to your infrastructure. + +[Find advisories in your infrastructure](/platform/security/vuln/advisories). + +--- diff --git a/docs/platform/security/vuln/vulnerabilities.md b/docs/platform/security/vuln/vulnerabilities.md new file mode 100644 index 000000000..a563c9364 --- /dev/null +++ b/docs/platform/security/vuln/vulnerabilities.md @@ -0,0 +1,149 @@ +--- +title: Find Vulnerabilities (CVEs) and Assess Their Risk +sidebar_label: Find Vulnerabilities (CVEs) +sidebar_position: 2 +description: Use Mondoo to find vulnerabilities that put your infrastructure at risk +image: /img/featured_img/mondoo-feature.jpg +--- + +A _vulnerability_ is a weakness in a computer system that an attacker can exploit to gain access or extract information. Also known as CVEs (common vulnerabilities and exposures), vulnerabilities may or may not contain exploits or methods to address the weaknesses. + +![Vulnerabilities dashboard in the Mondoo Console](/img/platform/security/vuln-dash.png) + +:::note + +Vendors often release _advisories_ that provide recommendations on how to fix or mitigate vulnerabilities in their products. To learn more, read [Find Advisories](/platform/security/vuln/advisories). + +::: + +## Find CVEs in your infrastructure + +Find vulnerabilities for assets in a space: + +1. In the [Mondoo Console](https://console.mondoo.com), [navigate to the space](/platform/start/navigate) in which you want to see vulnerabilities. + +2. In the left navigation bar, under **Vulnerabilities**, select **CVEs**. + + ![Find vulnerabilities](/img/platform/security/cves.png) + + The list shows CVEs found in your infrastructure. + +3. To filter the list, enter text in the search bar. These are some examples: + + - To show only risks for a certain platform, enter all or part of the platform name. For example, type `windows`, `debian`, or `google`. + + - To find a specific CVE number, enter all or part of the number. For example, type `2023-21755` or `1325`. + + - To find risks to a certain service, tool, API, or other technology, enter all or part of its name. For example, enter `winsock`, `curl`, or `cim`. + +4. Select the CVE to see its description and a detailed analysis. + + ![Vulnerability in Mondoo](/img/platform/security/vulnerability-affected.png) + + The summary on the CVE detail page shows the number of assets affected by this CVE. Select that information to jump to a list of affected assets. + +## Assess a CVE's risk and impact + +Mondoo provides extensive details about a CVE to help you understand the risk it presents to (and the impact it could have on) your organization. The simplest of these are the CVSS score and the EXPLOITABLE flag. + +![Vulnerability in Mondoo](/img/platform/security/vulnerability-top.png) + +At the top of a CVE's detail page (accessed as described above) you find general information about the CVE. If there are any known exploits of the CVE in the wild, an EXPLOITABLE flag displays beside the CVE number. To the right is the CVSS base score (8.8 in the image above). + +### CVSS score and metrics + +The CVSS base score is a single number representing the severity of a vulnerability. It ranges from 0 (low severity) to 10 (critical). The score is calculated based on the Common Vulnerability Scoring System specification from the Forum of Incident Response and Security Teams (FIRST). CVSS scoring is the most widely accepted means of evaluating CVEs. + +![CVSS score in Mondoo](/img/platform/security/vuln-cvss.png) + +The CVSS base score is calculated based on exploitability metrics, a scope metric, and impact metrics. The sections below describe these metrics. To learn more about the CVSS base score and what it means for your infrastructure, read the [FIRST CVSS documentation](https://www.first.org/cvss/). + +#### Exploitability metrics + +These metrics reflect how easy the CVE is to exploit: + +- **Attack vector** is the means by which an attacker can exploit a CVE, such as over a network. An exploit is more likely if an attacker can be access the vulnerable component remotely. Possible values are: + + - Network + + - Adjacent + + - Local + + - Physical + +- **Attack complexity** indicates the amount of effort (beyond the attack itself), such as key theft or an additional attack. Possible values are: + + - Low + + - High + +- **Privileges required** describes the level of access an attacker needs to succeed. Possible values are: + + - None (no privileges) + + - Low (basic privileges) + + - High (broad access to sensitive resources) + +- **User interaction** reflects whether the attacker needs the help of an inside human user. Possible values are: + + - None (does not require another person) + + - Passive (requires an unknowing person) + + - Active (requires a willing participant) + +#### Scope metric + +The Scope metric indicates whether a vulnerability in one component has an impact on other resources beyond its security scope. Possible values are: + +- Unchanged (can only affect resources managed by the same security authority) + +- Changed (can spread outside the original security authority) + +#### Impact metrics + +These metrics reflect the possible results of the exploit: + +- **Confidentiality** represents the portion of data the attacker has access to, how much confidentiality the victim loses. Possible values are: + +- High (total loss of confidentiality) + +- Low (some loss of confidentiality) + +- None (no loss of confidentiality) + +- **Integrity** evaluates how much the exploit diminishes the integrity of the victim's infrastructure. Possible values are: + + - High (for example, attacker can modify protected files with serious consequences) + + - Low (attacker has less control or consequences are not as serious) + + - None (no loss of integrity) + +- **Availability** shows the impact to the availability of the exploited component. Possible values are: + + - High (total loss of availability) + + - Low (reduced performance or interruptions) + + - None (no impact on availability) + +### EPSS score + +Another scoring system from [FIRST](https://www.first.org), the Exploit Prediction Scoring System (EPSS) estimates the probability that a vulnerability will be exploited in the wild in the next 30 days. Because this system focuses on likelihood of an exploit actually occurring, it provides important data to help you prioritize software updates in your environment. + +![EPSS score in Mondoo](/img/platform/security/vuln-epss.png) + +Mondoo provides three EPSS data points for each CVE: + +- **Probability** is the primary data point in the EPSS. It answers the question: How likely is it that an attacker will exploit this CVE in the wild in the next 30 days? Mondoo shows this data as a percentage: 1% probability means a successful exploit is unlikely, while 99% probability means it's extremely likely that an attacker will successfully exploit the CVE within a month. + +- **Percentile** expresses _in a comparative way_ the probability of a CVE being exploited: This CVE is x% more likely to be exploited than all CVEs that have ever been evaluated with EPSS. For example, the CVE in the image above is in the 96.9th percentile; it's more likely to be used for a successful attack in the next 30 days than 96.9% of all CVEs. + +- **CVSS3 score** is the CVSS base score described in the section above. + +The likelihood of a CVE being exploited in the next 30 days and the CVSS base score are strong metrics to help you decide which CVEs are your highest priorities. To learn how the EPSS score is calculated and what it means for your organization, read the [FIRST EPSS documentation](https://www.first.org/epss/). + +--- diff --git a/docs/platform/start/navigate.md b/docs/platform/start/navigate.md new file mode 100644 index 000000000..d17910ce6 --- /dev/null +++ b/docs/platform/start/navigate.md @@ -0,0 +1,51 @@ +--- +title: Navigate the Mondoo Console +sidebar_label: Navigate the Mondoo Console +sidebar_position: 5 +description: Find and secure your spaces and assets in the Mondoo Console. +image: /img/featured_img/mondoo-feature.jpg +--- + +Navigate the [Mondoo Console](/platform/start/navigate) to view and manage different [spaces](/platform/start/organize/spaces) and configurations for your infrastructure security. + +Access the Mondoo Console in your web browser at [https://console.mondoo.com](https://console.mondoo.com). + +![Mondoo Console](/img/platform/start/console-overview-callouts.png) + +The sun/moon icon on the toolbar lets you switch the console display between light and dark display. The Mondoo Console also has a colorblind display option. To learn more, read [Enable Colorblind Mode in the Mondoo Console](/platform/maintain/user/colorblind/). + +## Navigate regions, organizations, and spaces + +![Mondoo Console top navigation menu](/img/platform/start/nav-top.png) + +The assets in your infrastructure are [organized](/platform/start/organize/overview) into [regions](/platform/start/organize/regions), [organizations](/platform/start/organize/organizations), and [spaces](/platform/start/organize/spaces). You move between regions, organizations, and spaces, by selecting the top navigation menu (shown above) and the boxes that represent organizations or spaces. + +For example, the image below shows all organizations in the US region. Select an organization to explore and manage it: + +![Mondoo Console organizations](/img/platform/start/organizations.png) + +In this example, if you select the Lunalectric organization and then select Spaces in the side navigation bar, you see all spaces in the Lunalectric organization. + +![Mondoo Console spaces](/img/platform/security/monitor-org.png) + +From there you can select any space to access and manage its details. For example, select the Online Store box to view the Online Store space. + +You can filter spaces to see a subset of spaces or find a specific one. Type in the **Filter Spaces** box to see only spaces with names that match what you type. The filter is case sensitive and includes partial matches. + +## Perform tasks within a space + +![Mondoo Console side navigation bar](/img/platform/start/nav-side.png) + +The side navigation bar in the Mondoo Console gives you access to tasks you can perform for the current space. + +## Get help and resources + +| To access... | Select... | In the... | +| ----------------------------- | -------------- | -------------------------- | +| Mondoo documentation | The book icon | Top-right toolbar | +| The Mondoo community on Slack | The Slack icon | Top-right toolbar | +| Different support options | Get Support | Bottom-left navigation bar | +| News and alerts | The bell icon | Top-right toolbar | +| Mondoo operational status | Mondoo Status | Bottom-left navigation bar | + +--- diff --git a/docs/platform/start/organize/_category_.json b/docs/platform/start/organize/_category_.json new file mode 100644 index 000000000..ef0093b8e --- /dev/null +++ b/docs/platform/start/organize/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Plan Your Mondoo Organization", + "position": 4 +} diff --git a/docs/platform/start/organize/organizations.md b/docs/platform/start/organize/organizations.md new file mode 100644 index 000000000..4ba878f46 --- /dev/null +++ b/docs/platform/start/organize/organizations.md @@ -0,0 +1,47 @@ +--- +sidebar_label: Organizations +title: Organizations +sidebar_position: 3 +descriptions: This page provides detailed information about organizations in Mondoo Platform. +image: /img/featured_img/mondoo-feature.jpg +--- + +![Organizations](/img/platform/start/organizations.png) + +Organizations provide a way to group [spaces](/platform/start/organize/spaces) together and manage team members and access. + +Every Mondoo account has at least one organization. + +## Create a new organization + +1. In the top-left corner of the Mondoo Console, select the [region](regions.md) in which to create the organization. + +2. Select the **+ ADD ORGANIZATION** box. + +3. Enter a name for the organization. + +4. Mondoo picks an organization ID. To customize the ID, select **EDIT** and enter a new ID. The ID can include only lowercase letters, digits, and hyphens. It must start with a lowercase letter and end with a letter or number. + +5. Check the box to agree to the terms of service and the privacy policy. + +6. Select **CREATE ORGANIZATION** + +## Delete an organization + +:::caution + +Deleting an organization permanently removes it. You can't undo this action. + +::: + +1. In the top-left corner of the Mondoo Console, select the [region](regions.md) containing the organization you want to delete. + +2. Select the organization you want to delete. + +3. In the side navigation bar, select **SETTINGS**. + +4. In the **Danger Zone**, under **Delete Organization**, check the box to confirm you want to delete the organization and all its related content. + +5. Select the **DELETE** button. + +--- diff --git a/docs/platform/start/organize/overview.md b/docs/platform/start/organize/overview.md new file mode 100644 index 000000000..c79fb9922 --- /dev/null +++ b/docs/platform/start/organize/overview.md @@ -0,0 +1,25 @@ +--- +sidebar_label: Overview +title: Plan Your Mondoo Organization - Overview +sidebar_position: 1 +descriptions: Create a manageable structure for monitoring and securing your infrastructure with Mondoo. +image: /img/featured_img/mondoo-feature.jpg +--- + +You can rely on Mondoo to secure an enormous quantity of assets in your infrastructure -- cloud platforms, workstations, servers, containers, SaaS platforms, and much more. For larger businesses, Mondoo provides asset intelligence, security, and compliance for thousands of assets. To make securing and monitoring your infrastructure manageable, you can arrange your Mondoo assets in regions, organizations, and spaces. It's best to plan your infrastructure structure before you begin integrating your infrastructure with Mondoo. + +This is an example of an infrastructure organization: + +![Organize even the largest infrastructure with Mondoo](/img/platform/start/org-complex.png) + +- [Regions](/platform/start/organize/regions) allow you to follow localized policy requirements (such as GDPR). + +- [Organizations](/platform/start/organize/organizations) provide a way to separate and organize different parts of your business and manage team members' access. + +- [Spaces](/platform/start/organize/spaces) are collections of assets, policies, and reports that you manage together. + +You can organize your infrastructure in as complex or simple a structure as you need. All security, compliance, and asset intelligence reports, data exports, and ticketing system exports are organized in the structure you create. + +![Organize a small infrastructure with Mondoo](/img/platform/start/org-simple.png) + +--- diff --git a/docs/platform/start/organize/regions.md b/docs/platform/start/organize/regions.md new file mode 100644 index 000000000..dcc266fd2 --- /dev/null +++ b/docs/platform/start/organize/regions.md @@ -0,0 +1,42 @@ +--- +sidebar_label: Regions +title: Regions +sidebar_position: 2 +descriptions: This page provides detailed information about regions in Mondoo Platform. +image: /img/featured_img/mondoo-feature.jpg +--- + +![Regions](/img/platform/start/regions.png) + +Mondoo operates in different regions so that you can follow localized policy requirements (such as GDPR). Each of the [organizations](organizations.md) and [spaces](spaces.md) in your Mondoo account exists within one region. Currently Mondoo supports two regions: + +- **US** operates in the United States of America. +- **EU** operates in the European Union. + +In a single Mondoo account, you can have some organizations in the US region and others in the EU region. All of the data stored and processing performed in the two regions are completely separate. You can't move assets between the two regions, nor can you share data between the two in any way. + +:::note + +Even if you don't have region-specific requirements, you can choose to operate in the region where you're located just for faster response times. +::: + +When you first create a Mondoo account, the US region is enabled by default; all assets you create are in the US region. + +### Enable the EU region + +If you want to create assets in the EU region, you must first enable it. + +1. In the top-left corner of the Mondoo window, select the **US** region to show the region options. +2. Select EU. +3. Select Enable. + +You can now [add an organization](organizations.md) in the EU region. + +### Switch between regions + +You can view only one region at a time. + +To switch between regions: + +1. In the top-left corner of the Mondoo window, select the current region (US or EU). +2. Select the region you want to view. diff --git a/docs/platform/start/organize/spaces.md b/docs/platform/start/organize/spaces.md new file mode 100644 index 000000000..9b49b2825 --- /dev/null +++ b/docs/platform/start/organize/spaces.md @@ -0,0 +1,47 @@ +--- +title: Spaces +sidebar_label: Spaces +sidebar_position: 4 +description: This page provides detailed information about spaces in Mondoo Platform, and how you can use them. +image: /img/featured_img/mondoo-feature.jpg +--- + +![Spaces](/img/platform/security/monitor-org.png) + +A space is a collection of assets, policies, and reports that you manage together within Mondoo Platform. + +Spaces allow for a great degree of flexibility in managing shared resources. For example, teams may organize their deployments in spaces, setting their own policies and quickly gaining insights for everything they manage. + +Furthermore, users may decide to configure separate spaces for development, staging, and production environments, or specific compliance requirements such as HIPAA or SOC2. + +## Manage spaces + +You can create new spaces as needed and use them to manage cloud account integrations, policies, and team members separately. + +### Create a new space + +1. [Navigate](/platform/start/navigate) to the organization in which you want to create a space. +2. Select **CREATE NEW SPACE** +3. Provide a name for the space +4. Select **CREATE SPACE** + +:::info + +Space IDs are unique namespaces separate from the space display name. You can't edit a space ID after you create the space. The ID must consist of lowercase letters, digits, or hyphens. It must start with a lowercase letter and end with a letter or number. + +::: + +### Delete a space + +:::caution + +Deleting a space permanently removes it. You can't undo this action. + +::: + +1. [Navigate](/platform/start/navigate) to the space you want to delete. +2. Select the **SETTINGS** menu. +3. In the **Danger Zone**, under **Delete Space**, check the box to confirm you want to delete the space and all its related content. +4. Select the **DELETE** button. + +--- diff --git a/docs/platform/start/plat-start-2.mdx b/docs/platform/start/plat-start-2.mdx new file mode 100644 index 000000000..a0aebeb7b --- /dev/null +++ b/docs/platform/start/plat-start-2.mdx @@ -0,0 +1,36 @@ +--- +title: Begin Securing Your Infrastructure +description: Take the first steps in improving your security posture with Mondoo. +id: plat-start-2 +sidebar_label: Begin Securing Your Infrastructure +sidebar_position: 3 +image: /img/featured_img/mondoo-feature.jpg +--- + +When you first log into your Mondoo account, Mondoo welcomes you: + +![Mondoo Platform - Welcome](/img/platform/start/start-welcome.png) + +- To take Mondoo's scanning capabilities for a quick test drive, select **START AGENTLESS SCANNING**. + +- To integrate Mondoo with your infrastructure so that you can begin improving your security posture, select **BROWSE INTEGRATIONS**. You see a vast menu of integrations. Just pick one to get started! + +### Not your first time logging in? + +If you don't see the WELCOME TO MONDOO page when you log in, don't worry. In the navigation on the left side of the page, under **INTEGRATIONS**, select **Add New Integration**. + +### Next steps + +- [Plan your Mondoo organization](/platform/start/organize/overview). + +- Learn how to [navigate in the Mondoo Console](/platform/start/navigate). + +- [Secure your cloud](/platform/infra/cloud/overview/) + +- [Secure your software supply chain](/platform/infra/supply/overview/) + +- [Set up secure deployment automation](/platform/infra/opsys/automation/overview/) + +- [Secure your servers and endpoints](/platform/infra/opsys/osoverview/) + +--- diff --git a/docs/platform/start/plat-start-acct.mdx b/docs/platform/start/plat-start-acct.mdx new file mode 100644 index 000000000..ac53fe860 --- /dev/null +++ b/docs/platform/start/plat-start-acct.mdx @@ -0,0 +1,28 @@ +--- +title: Create a Mondoo Account +description: Sign up for a free Mondoo account to begin improving your infrastructure security posture. +id: plat-start-acct +sidebar_label: Create a Mondoo Account +sidebar_position: 2 +image: /img/featured_img/mondoo-feature.jpg +--- + +To use Mondoo, you first need to sign up. Follow these steps: + +![Sign up for Mondoo Platform](/img/platform/start/mondoo-platform-pricing.png) + +1. In your web browser, go to [the Mondoo signup page](https://mondoo.com/pricing). + +2. Register for a free trial. Mondoo sends you email with new account instructions. + +3. Follow the steps in the email to create your new account. + +Next, you're ready to begin [securing your infrastructure](/platform/start/plat-start-2/) with Mondoo. + +:::info Need help? + +Join us in the [Mondoo Community Slack](https://mondoo.link/slack) channel if you have questions. We're here to help! + +::: + +--- diff --git a/docs/platform/start/what-is-mondoo.md b/docs/platform/start/what-is-mondoo.md new file mode 100644 index 000000000..74dfdf35f --- /dev/null +++ b/docs/platform/start/what-is-mondoo.md @@ -0,0 +1,69 @@ +--- +title: What Is Mondoo? +sidebar_label: What Is Mondoo? +hide_table_of_contents: true +sidebar_position: 1 +id: plat-what-is +description: What Is Mondoo? +image: /img/featured_img/mondoo-feature.jpg +--- + +Mondoo continuously assesses the security of your IT infrastructure throughout the development cycle and in production. Using Mondoo’s policy-as-code automation, you can identify risks, CVEs, and misconfigurations to improve your overall security posture. + +Mondoo policies are written as high-level code that automates security compliance and best practices. Choose out-of-the-box policies certified by Mondoo and the Center for Internet Security, or customize requirements based on your organization’s unique needs. + +Mondoo’s **policy as code** integrates easily with your CI/CD pipeline. Automatic scans detect vulnerabilities and misconfigurations long before they reach production, and without breaking builds. + +With Mondoo, you can: + +- **ASSESS** - Choose ready-made policies to adopt security standards quickly + +- **DISCOVER** - Find vulnerabilities and misconfigurations in real time + +- **BUILD** - Integrate security into every phase of the development lifecycle + +- **COLLABORATE** - Unite DevOps and Security teams with a common goal + +## Security and compliance testing for any infrastructure + +Misconfigurations and unpatched vulnerabilities pose the biggest risk to the technology, infrastructure, and services that power your business. Protect your: + +- **Public cloud** - AWS, Microsoft Azure, and Google Cloud + +- **Private cloud** - VMware (vCenter / ESXi) + +- **Kubernetes** - Kubernetes clusters (EKS, GKE, AKS, self-managed) and Kubernetes manifests + +- **Containers** - Container registries (ECR, ACR, GCR, Harbor, Docker Hub) and running Docker containers + +- **Servers, mainframes, and endpoints** - Linux, IBM AIX, Windows, FreeBSD, and macOS + +- **SaaS services** - Microsoft 365, Google Workspace, Okta, GitHub, GitLab, and Slack + +- **Software supply chain** - Azure Pipelines, CircleCI, GitHub Actions, GitLab CI/CD, and more + +- **Certificates** - SSL and TLS + +## Integrate security into every phase of the change process + +Use Mondoo to find and fix security vulnerabilities and misconfigurations before they reach production. Mondoo helps you by: + +- Testing your infrastructure and services as you build and automate + +- Integrating with your CI/CD pipeline to test every change against your policies + +- Enabling continuous compliance and security across all your environments + +## Get started + +To get started, [create a Mondoo account](/platform/start/plat-start-acct). + +If you already have a Mondoo account: + +- [Plan your Mondoo organization](/platform/start/organize/overview). + +- Learn how to [navigate in the Mondoo Console](/platform/start/navigate). + +Be sure to join us in the [Mondoo Community Slack](https://mondoo.link/slack) and let us know how we can help you on your journey! + +--- diff --git a/docs/trouble/trouble.mdx b/docs/trouble/trouble.mdx new file mode 100644 index 000000000..29be3038c --- /dev/null +++ b/docs/trouble/trouble.mdx @@ -0,0 +1,255 @@ +--- +title: Troubleshoot +sidebar_label: Troubleshoot +sidebar_position: 1 +image: /img/featured_img/mondoo-feature.jpg +description: Troubleshoot issues with Mondoo, cnspec, cnquery, and MQL. +--- + +This page contains troubleshooting information for Mondoo, cnspec, cnquery, and MQL. It's a growing document. + +If you can't find what you're looking for here, try using the search feature in the top-right corner of this page. If you still can't find what you need: + +- Open source users: Join our community discussion on GitHub. + +- Mondoo Platform users: Join our community Slack channel to chat with us and other Mondoo users. + +## Troubleshoot AWS integrations + +If you experience issues with an AWS integration, read [Mondoo AWS Integration Troubleshooting](/platform/infra/cloud/aws/aws-integration-troubleshooting/). + +## Update the Mondoo package for cnquery and cnspec + +### Problem: When upgrading the Mondoo package, you get "Primary key is not live" errors + +YUM and DNF can encounter this error when updating the Mondoo package on Fedora, Red Hat, CentOS, Rocky Linux, or AlmaLinux machines. It occurs when a long time has passed between updates and the signing GPG for the package has expired. + +```bash +cat /etc/os-release + +NAME="Fedora Linux" +VERSION="38 (Workstation Edition)" +ID=fedora +VERSION_ID=38 +VERSION_CODENAME="" +PLATFORM_ID="platform:f38" +PRETTY_NAME="Fedora Linux 38 (Workstation Edition)" +ANSI_COLOR="0;38;2;60;110;180" +LOGO=fedora-logo-icon +CPE_NAME="cpe:/o:fedoraproject:fedora:38" +DEFAULT_HOSTNAME="fedora" +HOME_URL="https://fedoraproject.org/" +DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f38/system-administrators-guide/" +SUPPORT_URL="https://ask.fedoraproject.org/" +BUG_REPORT_URL="https://bugzilla.redhat.com/" +REDHAT_BUGZILLA_PRODUCT="Fedora" +REDHAT_BUGZILLA_PRODUCT_VERSION=38 +REDHAT_SUPPORT_PRODUCT="Fedora" +REDHAT_SUPPORT_PRODUCT_VERSION=38 +SUPPORT_END=2024-05-14 +VARIANT="Workstation Edition" +VARIANT_ID=workstation +++++ + +# actual version +sudo dnf list --installed | grep mondoo + +cnquery.x86_64 8.15.0-1 @mondoo +cnspec.x86_64 8.15.0-1 @mondoo +mondoo.noarch 8.15.0-1 @mondoo ++++ + +# Available packages +sudo dnf update + +Last metadata expiration check: 0:16:58 ago on Fr 30 Jun 2023 16:00:29 CEST. +Dependencies resolved. +============================================================================================================================================================================================================================================== + Package Architecture Version Repository Size +============================================================================================================================================================================================================================================== +Upgrading: + cnquery x86_64 8.16.0-1 mondoo 65 M + cnspec x86_64 8.16.0-1 mondoo 66 M + mondoo noarch 8.16.0-1 mondoo 6.7 k + +Transaction Summary +============================================================================================================================================================================================================================================== +Upgrade 3 Packages + +Total size: 130 M ++++ + +# Result +Downloading Packages: +[SKIPPED] cnquery_8.16.0_linux_amd64.rpm: Already downloaded +[SKIPPED] cnspec_8.16.0_linux_amd64.rpm: Already downloaded +[SKIPPED] mondoo_8.16.0_linux_amd64.rpm: Already downloaded +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +Mondoo Repository 53 kB/s | 3.9 kB 00:00 +GPG key at https://releases.mondoo.io/rpm/pubkey.gpg (0x00E1C42B) is already installed +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +error: Verifying a signature using certificate 4CE909E26AE7439C39CE7647AC69C65100E1C42B (Mondoo Inc ): + 1. Certificate AC69C65100E1C42B invalid: certificate is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z + 2. Key AC69C65100E1C42B invalid: key is not alive + because: The primary key is not live + because: Expired on 2023-01-18T19:56:07Z +The GPG keys listed for the "Mondoo Repository" repository are already installed but they are not correct for this package. +Check that the correct key URLs are configured for this repository.. Failing package is: cnquery-8.16.0-1.x86_64 + GPG Keys are configured as: https://releases.mondoo.io/rpm/pubkey.gpg +Public key for cnspec_8.16.0_linux_amd64.rpm is not trusted. Failing package is: cnspec-8.16.0-1.x86_64 + GPG Keys are configured as: https://releases.mondoo.io/rpm/pubkey.gpg +Public key for mondoo_8.16.0_linux_amd64.rpm is not trusted. Failing package is: mondoo-8.16.0-1.noarch + GPG Keys are configured as: https://releases.mondoo.io/rpm/pubkey.gpg +The downloaded packages were saved in cache until the next successful transaction. +You can remove cached packages by executing 'dnf clean packages'. +Error: GPG check FAILED +++++ +``` + +### Solution: Update GPG + +```bash +rpm -q --qf "%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n" gpg-pubkey | sort -k 2 +gpg-pubkey-00e1c42b-6005e7d7 Mondoo Inc public key + +rpm -e gpg-pubkey-00e1c42b-6005e7d7 + +rpm --import https://releases.mondoo.com/rpm/pubkey.gpg +``` + +## Move servers and endpoints + +### Problem: You need to move a server or endpoint to a different space + +You might have added assets to Mondoo before developing a plan for your organization, or you might have changed your organization strategy. + +### Solution: Unregister the asset and re-register it in the new space + +#### For Linux-based assets: + +1. Log into the asset and open a Linux root shell. + +2. Unregister the asset: + +```bash +cnspec logout --force +``` + +3. Open the [Mondoo Console](https://console.mondoo.com). + +4. [Navigate](/platform/start/navigate/) to the space where you want to move the asset. + +5. In the left navigation, under **Integrations**, select **Add New Integration**. + +6. Select your operating system. + +7. Copy the registration token (the long, blue string in the text box). + +8. Re-register the asset. For `COPIED-TOKEN`, substitute the registration token you copied: + +```bash +cnspec login --token 'COPIED-TOKEN' --config '/etc/opt/mondoo/mondoo.yml' +``` + +9. Run an initial cnspec scan to send the results to the new space: + + ```bash + cnspec scan + ``` + +#### For Windows assets: + +1. Log into the asset and open PowerShell as an administrator. + +2. Unregister the asset: + + ```powershell + cnspec logout --force + ``` + +3. Open the [Mondoo Console](https://console.mondoo.com). + +4. [Navigate](/platform/start/navigate/) to the space where you want to move the asset. + +5. In the left navigation, under **Integrations**, select **Add New Integration**. + +6. Select your operating system. + +7. Copy the registration token (the long, blue string in the text box). + +8. Re-register the asset. For `COPIED-TOKEN`, substitute the registration token you copied: + + ```powershell + cnspec login --token 'COPIED-TOKEN' --config 'C:\ProgramData\Mondoo\mondoo.yml' + ``` + +9. Run an initial cnspec scan to send the results to the new space: + + ```powershell + cnspec scan + ``` + +--- diff --git a/docusaurus.config.js b/docusaurus.config.js new file mode 100644 index 000000000..842683ea3 --- /dev/null +++ b/docusaurus.config.js @@ -0,0 +1,303 @@ +// @type {import('@docusaurus/types').DocusaurusConfig}; + +const { themes } = require("prism-react-renderer"); + +const legacyRedirects = [ + // NOTE: Path / is equivalent to https://mondoo.com/docs/ + // + { + from: "/getstarted/quickstart", + to: "/platform/start/plat-start-acct", + }, + { + from: "/getstarted/overview", + to: "/platform/start/plat-start-acct", + }, + { + from: "/cloud/ms365/", + to: "/platform/infra/saas/ms365/ms365-auto", + }, + { + from: "/agent", + to: "/", + }, + { + from: "/server/registration", + to: "/cnspec/cnspec-adv-install/registration", + }, + { + from: "/getstarted/container", + to: "/cnspec/supplychain/docker", + }, + { + from: "/supplychain/cicd/azure-devops", + to: "/platform/infra/supply/cicd/azure-pipelines", + }, + { + from: "/cnquery/cnquery-get-started", + to: "/cnquery", + }, + { + from: "/cnspec/cnspec-get-started", + to: "/cnspec", + }, + { + from: "/references/cli/mondoo", + to: "/cnspec/cli/cnspec_scan", + }, +]; + +module.exports = { + title: "Mondoo Docs", + tagline: "", + url: "https://mondoo.com", + baseUrl: "/docs/", + onBrokenLinks: "warn", + onBrokenMarkdownLinks: "warn", + trailingSlash: "true", + favicon: "img/favicon.ico", + organizationName: "Mondoo", // Usually your GitHub org/user name. + projectName: "Docs", // Usually your repo name. + + plugins: [ + [ + "@docusaurus/plugin-client-redirects", + { + fromExtensions: ["html", "htm"], // /myPage.html -> /myPage + toExtensions: ["exe", "zip"], // /myAsset -> /myAsset.zip (if latter exists) + redirects: legacyRedirects, + createRedirects(existingPath) { + // creates a reverse redirect for each new page in platform + if (existingPath.includes("/platform/infra/cloud")) { + return [ + existingPath.replace("/platform/infra/cloud", "/platform/cloud"), + ]; + } else if (existingPath.includes("/platform/infra/opsys")) { + return [ + existingPath.replace( + "/platform/infra/opsys", + "/platform/operating_systems", + ), + ]; + } else if (existingPath.includes("/platform/infra/saas")) { + return [ + existingPath.replace("/platform/infra/saas", "/platform/saas"), + ]; + } else if (existingPath.includes("/platform/infra/supply")) { + return [ + existingPath.replace( + "/platform/infra/supply", + "/platform/supplychain", + ), + ]; + } + return undefined; // Return a falsy value: no redirect created + }, + }, + ], + [ + require.resolve("docusaurus-gtm-plugin"), + { + id: "GTM-WC92BL5", // "Default" GTM Workspace + }, + ], + ], + themeConfig: { + hubspot: { + accountId: HS_ACCOUNTID, + }, + docs: { + sidebar: { + hideable: true, + }, + }, + algolia: { + apiKey: "ALGOLIA_API_KEY", + indexName: "mondoo", + contextualSearch: false, // activate if we use versionized docs + appId: "ALGOLIA_APP_ID", + }, + prism: { + theme: themes.nightOwl, + additionalLanguages: [ + "powershell", + "bash", + "json", + "graphql", + "python", + "yaml", + ], + }, + colorMode: { + defaultMode: "light", + disableSwitch: false, + respectPrefersColorScheme: true, + }, + navbar: { + //title: "Docs", + logo: { + alt: "Mondoo Logo", + src: "img/mondoo-logo-newpurple.png", + srcDark: "img/mondoo-logo-newpurple-darkmode.png", + }, + items: [ + { + type: "doc", + position: "left", + docId: "platform/home", + label: "Platform", + }, + { + type: "doc", + position: "left", + docId: "mql/home", + label: "MQL", + }, + { + type: "doc", + position: "left", + docId: "cnquery/home", + label: "cnquery", + }, + { + type: "doc", + position: "left", + docId: "cnspec/home", + label: "cnspec", + }, + { + type: "dropdown", + label: "Community", + position: "right", + items: [ + { + label: "GitHub Discussions", + href: "https://github.com/orgs/mondoohq/discussions", + }, + { + label: "Slack", + href: "https://mondoo.link/slack", + }, + { + label: "GitHub Repositories", + href: "https://github.com/mondoohq/", + }, + ], + }, + { + type: "dropdown", + label: "Updates", + position: "right", + items: [ + { to: "releases", label: "Releases" }, + { + label: "Blog", + href: "https://blog.mondoo.com/", + }, + ], + }, + { + label: "Mondoo Console", + href: "https://console.mondoo.com/", + position: "right", + }, + ], + }, + footer: { + style: "dark", + links: [ + { + title: "Mondoo", + items: [ + { + label: "Mondoo Home", + href: "https://mondoo.com/", + }, + { + label: "Mondoo Console", + href: "https://console.mondoo.com", + }, + { + label: "cnquery", + href: "https://mondoo.com/cnquery", + }, + { + label: "cnqspec", + href: "https://mondoo.com/cnspec", + }, + ], + }, + { + title: "Community", + items: [ + { + label: "Slack", + href: "https://mondoo.link/slack", + }, + { + label: "GitHub", + href: "https://github.com/mondoohq", + }, + { + label: "Twitter", + href: "https://twitter.com/MondooHQ", + }, + { + label: "Mastodon", + href: "https://infosec.exchange/@mondoo", + }, + ], + }, + { + title: "Updates", + items: [ + { to: "releases", label: "Releases" }, + { + label: "Status Page", + href: "https://status.mondoo.com/", + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} Mondoo, Inc.`, + }, + }, + presets: [ + [ + "@docusaurus/preset-classic", + { + docs: { + path: "./docs", + routeBasePath: "/", + sidebarPath: require.resolve("./sidebars.js"), + }, + gtag: { + trackingID: "G-KK53LDX2YM", // You can also use your "G-" Measurement ID here. + anonymizeIP: true, + }, + blog: { + blogTitle: "Releases", + blogDescription: "Mondoo Releases", + path: "releases", + blogSidebarCount: "ALL", + routeBasePath: "releases", + showReadingTime: true, + feedOptions: { + type: "all", + title: "Mondoo Releases", + description: + "Keep up to date with the latest features in each release from Mondoo", + copyright: `Copyright © ${new Date().getFullYear()} Mondoo, Inc.`, + }, + }, + theme: { + customCss: require.resolve("./src/css/custom.css"), + }, + sitemap: { + changefreq: "weekly", + priority: 0.5, + }, + }, + ], + ], +}; diff --git a/package.json b/package.json new file mode 100644 index 000000000..fc6efc79b --- /dev/null +++ b/package.json @@ -0,0 +1,72 @@ +{ + "name": "mondoo-docs", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@algolia/client-search": "^4.22.0", + "@docusaurus/core": "^3.0.0", + "@docusaurus/plugin-client-redirects": "^3.0.0", + "@docusaurus/preset-classic": "^3.0.0", + "@docusaurus/theme-search-algolia": "^3.0.0", + "@fontsource/roboto": "^5.0.7", + "@mdx-js/react": "^3.0.1", + "@stackql/docusaurus-plugin-hubspot": "^1.0.0", + "@svgr/webpack": "^8.1.0", + "ansi-regex": "^6.0.1", + "clsx": "^2.1.0", + "cross-fetch": "^4.0.0", + "docusaurus-gtm-plugin": "^0.0.2", + "file-loader": "^6.2.0", + "got": "^13.0.0", + "minimist": "^1.2.8", + "node-fetch": "^3.3.1", + "normalize-url": "^8.0.0", + "nth-check": "^2.0.1", + "path-parse": "^1.0.7", + "prism-react-renderer": "^2.3.1", + "react": "^18.0.1", + "react-dom": "^18.0.1", + "react-loadable": "^5.5.0", + "search-insights": "^2.13.0", + "terser": "5.28.1", + "trim": "^1.0.1", + "url-loader": "^4.1.1", + "webpack": "^5.90.3", + "ws": "^8.16.0" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "^3.1.1", + "@tsconfig/docusaurus": "^2.0.1", + "@types/react": "^18.2.60", + "@types/react-helmet": "^6.1.11", + "@types/react-router-dom": "^5.1.7", + "prettier": "3.2.5", + "typescript": "^5.3.2" + }, + "engines": { + "node": ">=20.0" + } +} diff --git a/releases/2021-03-02-mondoo-3.5.0-is-out.md b/releases/2021-03-02-mondoo-3.5.0-is-out.md new file mode 100644 index 000000000..5047e8864 --- /dev/null +++ b/releases/2021-03-02-mondoo-3.5.0-is-out.md @@ -0,0 +1,51 @@ +--- +slug: mondoo-3.5.0-is-out/ +title: Mondoo 3.5.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +This weeks release focuses on stability, improves the core DQL engine and improves policy queries to report accurate results. In addition, we managed to squeeze a few new features in: + +- A new space wizard helps to quickly setup policies and agents for new spaces +- Advisories and EOL support for SLES 12, SLES 15, openSUSE and Fedora 32 & 33 +- New Print Button + +FEATURES + +- new: dql `kernel.installed` adds support for the suse family +- new: added SLES 12, 15 and openSUSE advisory detection +- new: we added SLES 12, SLES 15, as well as openSUSE 15 to our EOL tracking +- new: added support for Fedora 32 & 33 advisories (current stable releases) +- new: added platform eol information for Fedora systems +- new: added static container analysis for Fedora 33 + +IMPROVEMENTS + +- improve: we updated our error handling to make it for users to activate policies +- improve: `sshd.config.params` return normalized keys according to ssh spec to ensure the values have the same camelCase +- improve: extend `Ensure time synchronization is in use` control for `systemd-timesyncd` service detection across all benchmarks + +BUG FIXES + +- fix: ssh command execution throw a dql error and prevented dql queries from checking for exit codes +- fix: we fixed an issue were errors from data queries where not properly removed once they were running successfully +- fix: the scoring system for policy benchmarks has been updated from worst score to average score +- fix: vmware advisories have been updated to ensure 2021 advisories are properly stored in our database +- fix: handle case where dql query timeouts had influence on follow-up queries +- fix: update implementation of `Ensure cron daemon is enabled and running` for RHEL-benchmarks +- fix: `Ensure system accounts are secured` also checks for `/usr/sbin/nologin` for Ubuntu-benchmarks +- fix: handle case where hardened Windows 2019 installations do not return their product type, we fallback to member server as default +- fix: we fixed the implementation of Windows 2019 queries 2.3.11.9 and 2.2.32 +- fix: fallback to `/etc/hostname` for platform identifier if `hostname` command is missing e.g on Arch Linux + +_New Space Wizard_ + +![SpaceWizard](/img/releases/2021-03-02-mondoo-3.5.0-is-out/SpaceWizard.png) + +_New Print Button_ + +![PrintButton](/img/releases/2021-03-02-mondoo-3.5.0-is-out/PrintButton.png) diff --git a/releases/2021-03-08-mondoo-3.6.0-is-out.md b/releases/2021-03-08-mondoo-3.6.0-is-out.md new file mode 100644 index 000000000..81bbb27d3 --- /dev/null +++ b/releases/2021-03-08-mondoo-3.6.0-is-out.md @@ -0,0 +1,200 @@ +--- +slug: mondoo-3.6.0-is-out/ +title: Mondoo 3.6.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +## 3.6.0 + +🎉 FEATURES + +- new: add the `--discover` option and harmonize existing discovery methods + +🧹 IMPROVEMENTS + +- improve: queries labels are more detailed and better reflecting its state +- improve: updated the Kubernetes Benchmark and Windows 2019 Benchmark +- improve: added experimental env variable MONDOO_PROCFS to activate procfs use to read processes +- improve: switch arista transport scheme from `aristaeos` to `arista` + +🐛 BUG FIXES AND UPDATES + +- fix: fixes an issue with the k8s:// resolver where the images where not properly detected via `mondoo scan -t k8s://` +- fix: fixes an issue where the Windows service start took too long +- fix: fixes an issue with Linux control that checked the grub 1 and grub 2 bootloader configuration +- fix: fixes an issue where container images and repositories from registries could not be scanned +- fix: handle case where suse 15.0 was not properly detected as eol +- fix: (part two) fallback to `/etc/hostname` for platform identifier if `hostname` command is missing e.g on Arch Linux + +🗑 REMOVED: + +- removed: we removed `SSH Server Policy`, please replace it with the appropriate policy for your environment, eg. DIL + +**🥳 new `--discover` option** + +We introduce a new `--discovery` and `--discover-filter` option to `mondoo scan` and `mondoo shell`. This allows a more clean separation between transport options via `--option` and discovery options. As part of this change we also enabled the discovery of container and images for the local docker agent. + +_Nested Scan for vSphere_ + +```bash +mondoo scan -t vsphere://root@192.168.87.7 --discover host-machines,instances --discover-filter moids="HostSystem-ha-host" + +# previously this would have been: +mondoo scan -t vsphere://root@192.168.87.7 --option host-machines=true --option instances=true --option moids="HostSystem-ha-host" +``` + +_Ability to discover all docker container and images_ + +```bash +mondoo scan -t docker:// --discover all +``` + +_Explicit fetch from Container Registry_ + +When users run `mondoo scan -t docker://centos:7.8.2003` we try to use the local image from docker engine and fall-back to fetch if from remote. Users can now skip the docker resolve step and tell mondoo to go directly to the registry: + +```bash +mondoo scan -t cr://centos:7.8.2003 +``` + +**🧹 switch arista transport scheme from `aristaeos` to `arista`** + +```bash +# before +mondoo scan -t aristaeos://admin@192.168.178.154 --ask-pass --insecure +# after +mondoo scan -t arista://admin@192.168.178.154 --ask-pass --insecure +``` + +**🧪 experimental procfs implementation** + +Allow Linux users to opt-into the procfs implementation for processes via: + +``` +MONDOO_PROCFS="on" mondoo shell -t ssh://root@$(minikube ip) +``` + +**🎉 Kubernetes Server + Agent Scan** + +To run the mondoo service on each node do the following: + +1. Activate the Kubernetes Benchmark in your space +2. Download agent credentials +3. Update the following config + +```yaml +--- +# daemonset.yaml +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: mondoo-daemonset + +spec: + selector: + matchLabels: + name: mondoo-daemonset + template: + metadata: + labels: + name: mondoo-daemonset + spec: + tolerations: + # this toleration is to have the daemonset runnable on master nodes + # remove it if your masters can't run pods + - key: node-role.kubernetes.io/master + effect: NoSchedule + containers: + - name: mondoo-agent + image: docker.io/mondoolabs/mondoo + command: ["mondoo", "serve", "--config", "/etc/opt/mondoo/mondoo.yml"] + volumeMounts: + - name: root + mountPath: /mnt/host/ + readOnly: true + - name: config + mountPath: /etc/opt/mondoo/ + readOnly: true + env: + - name: DEBUG + value: "false" + - name: MONDOO_PROCFS + value: "on" + terminationGracePeriodSeconds: 30 + volumes: + - name: root + hostPath: + path: "/" + - name: config + configMap: + name: mondoo-daemonset-config + items: + - key: config + path: mondoo.yml +``` + +Use your agent credentials and add them to a config map: + +```yaml +--- +# daemonset-config.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: mondoo-daemonset-config +data: + config: | + agentmrn: //agents.api.mondoo.app/spaces/{spaceid}/agents/{agentid} + api-endpoint: https://api.mondoo.app + certificate: | + -----BEGIN CERTIFICATE----- + ... + -----END CERTIFICATE----- + privatekey: | + -----BEGIN PRIVATE KEY----- + ... + -----END PRIVATE KEY----- + spacemrn: //captain.api.mondoo.app/spaces/upbeat-haslett-916671 + assets: + - connection: "fs:///mnt/host" +``` + +```bash +kubectl apply -f daemonset-config.yaml +kubectl apply -f daemonset.yaml + +# verify that the service runs +kubectl get pods +NAME READY STATUS RESTARTS AGE +mondoo-daemonset-dgrrz 1/1 Running 1 3d10h +``` + +**🎉 Equinix API support** + +This is the first iteration of our Equinix Metal integration. It adds the following: + +- New Equinix Metal transport +- New resources to check for equinix content + +We think it is best to use project-scoped API credentials. During development we run into an [issue with the API](https://github.com/packethost/packngo/issues/245) that we worked around. + +To connect to equinix: + +```bash +export PACKET_AUTH_TOKEN="your_token_here" +mondoo shell -t equinix://projects/aa123456-a11a-b22b-c33c-123ab1cd234 +``` + +Here are some sample queries: + +```javascript +equinix.metal.project { id name} +equinix.metal.project.users +equinix.metal.project.users { fullName } +equinix.metal.project.sshKeys {id fingerPrint} +equinix.metal.project.devices { hostname } +``` diff --git a/releases/2021-03-16-mondoo-3.7.0-is-out.md b/releases/2021-03-16-mondoo-3.7.0-is-out.md new file mode 100644 index 000000000..9e743fa22 --- /dev/null +++ b/releases/2021-03-16-mondoo-3.7.0-is-out.md @@ -0,0 +1,39 @@ +--- +slug: mondoo-3.7.0-is-out/ +title: Mondoo 3.7.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +We are excited to announce that the new release ships with 📦 Kubernetes API support and 🧾 YAML report! + +🎉 FEATURES + +- new: added support for kubernetes application checks +- new: yaml report export + +**🥳 Kubernetes API Support** + +We adapted the current `k8s://` to target the Kubernetes API. This allows you to validate deployed applications. Mondoo ships with a new Kubernetes Application Benchmark. Just activate this benchmark in your Mondoo dashboard to scan for common pod configurations. + +```bash +# mondoo will use kubectl context and setup +mondoo scan -t k8s:// +``` + +![Screenshot_2021-03-16_at_21.33.28](/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.28.png) +![Screenshot_2021-03-16_at_21.33.42](/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.42.png) +![Screenshot_2021-03-16_Cloud-Native_Security_Vulnerability_Risk_Management](/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_Cloud-Native_Security_Vulnerability_Risk_Management.png) + +**🧾 YAML Reporter** + +This release introduces a new yaml reporter that allows you to use mondoo's report for further analysis. + +``` +mondoo scan -o yaml +``` + +![Screenshot_2021-03-16_at_21.32.10](/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.32.10.png) diff --git a/releases/2021-04-06-mondoo-4.0.0-is-out.md b/releases/2021-04-06-mondoo-4.0.0-is-out.md new file mode 100644 index 000000000..3340314d1 --- /dev/null +++ b/releases/2021-04-06-mondoo-4.0.0-is-out.md @@ -0,0 +1,25 @@ +--- +slug: mondoo-4.0.0-is-out/ +title: Mondoo 4.0.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +:tada: FEATURES + +- new: CIS Windows 10 Policy Level 1, Level 2, BitLocker and NG + +🧹 IMPROVEMENTS + +- improve: Update CIS Windows 2019 Benchmark to cover Level 1, Level 2 and NG +- improve: Update CIS Windows 2016 Benchmark to cover Level 1, Level 2 and NG +- improve: Simplify the Asset Policy and rename the policy to `Platform Overview Information` +- improve: Update CIS Ubuntu 20.04 Benchmark +- improve: Update DIL Benchmark policy + +:bug: BUG FIXES + +- fix: handles an issue where the agent has not published its results to server diff --git a/releases/2021-04-16-mondoo-4.3.0-is-out.md b/releases/2021-04-16-mondoo-4.3.0-is-out.md new file mode 100644 index 000000000..7c1a4bd51 --- /dev/null +++ b/releases/2021-04-16-mondoo-4.3.0-is-out.md @@ -0,0 +1,36 @@ +--- +slug: mondoo-4.3.0-is-out/ +title: Mondoo 4.3.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +This week's release ships with a major improvement for policy management. The new dashboard makes managing policies so much easier and avoids the back-and-forward navigation between policies and their settings. + +🎉 FEATURES + +- new: improved policy view + +🧹 IMPROVEMENTS + +- improve: change the winrm log messages for better tracking +- improve: reduce debug log messages for maintenance logging +- improve: we updated our protobuf api for agents + +🐛 BUG FIXES AND UPDATES + +- fix: handle case in policy cli printer where no score exists for a policy +- fix: resolves an issue where agent check-in time was not tracked properly + +:wastebasket: REMOVED: + +- removed: CentOS 6 repository packages since the mirrors are not maintained anymore + +**Improved Policy View** + +User provided feedback that our previous separation of displaying policies and activating them via settings was not intuitive. The new improved policy view harmonizes those views into one and also introduces a multi-selection to allow the activation of multiple policies at the same time. + +![Screenshot_2021-04-16_Cloud-Native_Security_Vulnerability_Risk_Management](/img/releases/2021-04-16-mondoo-4.3.0-is-out/Screenshot_2021-04-16_Cloud-Native_Security_Vulnerability_Risk_Management.png) diff --git a/releases/2021-04-26-mondoo-4.4.0-is-out.md b/releases/2021-04-26-mondoo-4.4.0-is-out.md new file mode 100644 index 000000000..286ec1fa0 --- /dev/null +++ b/releases/2021-04-26-mondoo-4.4.0-is-out.md @@ -0,0 +1,26 @@ +--- +slug: mondoo-4.4.0-is-out/ +title: Mondoo 4.4.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +:tada: FEATURES + +- redesigned policy view + +🧹 IMPROVEMENTS + +- improve: multi-region ECR discovery +- improve: extend query coverage for AWS Operational Best-Practices Policies +- improve: reduce waiting time for score completion in agent + +:bug: BUG FIXES + +- fix: handle unspecified wireformat for pointers in newer protobuf implementation +- fix: handle case where unrated policy score was not properly propagated to asset score +- fix: handle case in cli reporter where advisory data was not properly rendered +- fix: improve space stats generation to speed the rendering in dashboard diff --git a/releases/2021-05-05-mondoo-4.5.0-is-out.md b/releases/2021-05-05-mondoo-4.5.0-is-out.md new file mode 100644 index 000000000..b5e3f45e8 --- /dev/null +++ b/releases/2021-05-05-mondoo-4.5.0-is-out.md @@ -0,0 +1,22 @@ +--- +slug: mondoo-4.5.0-is-out/ +title: Mondoo 4.5.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +:tada: FEATURES + +- our AWS integration is released in preview + +🧹 IMPROVEMENTS + +- improve: include new Ubuntu 21.04 in vulnerability management + +:bug: BUG FIXES + +- fix: resolves an issue where the space stats where calculated incorrectly +- fix: resolves an issue where the cli crashed diff --git a/releases/2021-05-11-mondoo-4.6.0-is-out.md b/releases/2021-05-11-mondoo-4.6.0-is-out.md new file mode 100644 index 000000000..7c83d7ceb --- /dev/null +++ b/releases/2021-05-11-mondoo-4.6.0-is-out.md @@ -0,0 +1,23 @@ +--- +slug: mondoo-4.6.0-is-out/ +title: Mondoo 4.6.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +:tada: FEATURES + +- a new `mondoo policy init` provides a skeleton for policy development + +🧹 IMPROVEMENTS + +- `mondoo shell -c "platform.name"` exists after execution +- `mondoo shell` starts more than 6x faster on Windows +- the internal documentation of dql resources has been improved + +:bug: BUG FIXES + +- resolves an issue where the SSH config parser has not detected X11 properties properly diff --git a/releases/2021-05-17-mondoo-4.7.0-is-out.md b/releases/2021-05-17-mondoo-4.7.0-is-out.md new file mode 100644 index 000000000..14820236c --- /dev/null +++ b/releases/2021-05-17-mondoo-4.7.0-is-out.md @@ -0,0 +1,28 @@ +--- +slug: mondoo-4.7.0-is-out/ +title: Mondoo 4.7.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +:tada: FEATURES + +- render report summary after run of `mondoo scan` + +🧹 IMPROVEMENTS + +- cli suggesting includes built-in functions +- extends the AWS integration to ease the setup and add support for ECR +- dql adds support to do arithmetic operations on dict types +- cover more queries of the AWS benchmark and well-architected policies + +:bug: BUG FIXES + +- dql handles missing inputs for `parse.date` properly + +![Screenshot_2021-05-17_at_10.11.19](/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.11.19.png) + +![Screenshot_2021-05-17_at_10.12.52](/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.12.52.png) diff --git a/releases/2021-05-26-mondoo-4.8.2-is-out.md b/releases/2021-05-26-mondoo-4.8.2-is-out.md new file mode 100644 index 000000000..c240d4382 --- /dev/null +++ b/releases/2021-05-26-mondoo-4.8.2-is-out.md @@ -0,0 +1,20 @@ +--- +slug: mondoo-4.8.2-is-out/ +title: Mondoo 4.8.2 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +🧹 IMPROVEMENTS + +- display service account mrn and agent mrn in `mondoo status` +- split agents and service accounts +- further improvement of the AWS integration + +:bug: BUG FIXES + +- resolves an issue where `mondoo register` has not worked with service accounts +- resolve issues around the mondoo register flow diff --git a/releases/2021-06-07-mondoo-4.9.0-is-out.md b/releases/2021-06-07-mondoo-4.9.0-is-out.md new file mode 100644 index 000000000..2ba2fa88e --- /dev/null +++ b/releases/2021-06-07-mondoo-4.9.0-is-out.md @@ -0,0 +1,25 @@ +--- +slug: mondoo-4.9.0-is-out/ +title: Mondoo 4.9.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +:partying_face: mondoo 4.9.0 is out and it's a full stability update. + +The `mondoo serve` command is more robust and we optimized it to be more memory efficient. In addition, we continue to improve the onboarding and continues scanning flows. + +:tada: FEATURES + +- cli aggregates scan errors and does not stop execution + +🧹 IMPROVEMENTS + +- new improved flow to setup spaces + +:bug: BUG FIXES + +- identified a memory leak that affected mondoo serve diff --git a/releases/2021-07-08-mondoo-4.10.0-is-out.md b/releases/2021-07-08-mondoo-4.10.0-is-out.md new file mode 100644 index 000000000..05d8a13e7 --- /dev/null +++ b/releases/2021-07-08-mondoo-4.10.0-is-out.md @@ -0,0 +1,33 @@ +--- +slug: mondoo-4.10.0-is-out/ +title: Mondoo 4.10.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +🥳 mondoo 4.10.0 is out and it's a adding more quality to our backend and web dashboard. In addition it ships with the latest CIS Amazon Web Services Foundations Benchmark 1.4.0. + +:tada: FEATURES + +- CIS Amazon Web Services Foundations Benchmark 1.4.0 +- new discovery process to synchronize assets before individual scans are executed +- AWS SSM jobs load their config from SSM parameter store +- Added Windows setup installation instruction to web dashboard +- Added Alpine 3.11 vulnerability support +- Added support for multi-region AWS SSM scan +- New Mondoo VMware appliance as ova file + +🧹 IMPROVEMENTS + +- Better handling of mondoo service shutdown events +- SSH config parser can handle same-line comments now +- Faster detection of new VMware advisories +- Enhanced AWS SSM commands for Windows and Linux +- Refined AWS EC2 instance discovery via mondoo integration + +:bug: BUG FIXES + +- AWS Integration stability diff --git a/releases/2021-07-19-mondoo-4.11.0-is-out.md b/releases/2021-07-19-mondoo-4.11.0-is-out.md new file mode 100644 index 000000000..8b0510316 --- /dev/null +++ b/releases/2021-07-19-mondoo-4.11.0-is-out.md @@ -0,0 +1,42 @@ +--- +slug: mondoo-4.11.0-is-out/ +title: Mondoo 4.11.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +🥳 mondoo 4.11.0 is out and it is improving our web dashboard. + +:tada: FEATURES + +- completely new asset view +- asset connection errors during scan are reported upstream + +🧹 IMPROVEMENTS + +- AWS integration has been updated, new setup screens and improved CloudFormation + +:bug: BUG FIXES + +- switch configuration exit code 401 to 78 since systemd only allows exit codes up to 255 + +## New Asset Screen + +The new asset screen make the policy information more accessible. Its easier to see the overall asset scoring, the new result distribution graph quickly highlights if the asset is configured well. + +![Asset Overview Screen](/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-58-41_Cloud-Native_Security_Vulnerability_Risk_Management.png) + +When you select the Policy Card, all the policy details display. + +![Detailed Policy View](/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-57-07_Cloud-Native_Security_Vulnerability_Risk_Management.png) + +In addition, we introduced a quick navigation, to switch between different policies more easily: Simply select the policy name. + +![Select drop-down to switch policies](/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.46.png) + +Then a drop-down will open, you can now quickly switch between the different policy reports. + +![Select policies from drop-down](/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.52.png) diff --git a/releases/2021-07-26-mondoo-4.12.0-is-out.md b/releases/2021-07-26-mondoo-4.12.0-is-out.md new file mode 100644 index 000000000..6c49aba64 --- /dev/null +++ b/releases/2021-07-26-mondoo-4.12.0-is-out.md @@ -0,0 +1,25 @@ +--- +slug: mondoo-4.12.0-is-out/ +title: Mondoo 4.12.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +🥳 mondoo 4.12.0 is out! + +:tada: FEATURES + +- new auto-update functionality for lambda functions +- make it easier to scan container without docker being installed + +🧹 IMPROVEMENTS + +- improved logging for aws lambda function +- added `mondoo shell` to help command + +:bug: BUG FIXES + +- fixes an issue where container image snapshots could not be scanned diff --git a/releases/2021-08-03-mondoo-4.13.0-is-out.md b/releases/2021-08-03-mondoo-4.13.0-is-out.md new file mode 100644 index 000000000..843fdcdc3 --- /dev/null +++ b/releases/2021-08-03-mondoo-4.13.0-is-out.md @@ -0,0 +1,24 @@ +--- +slug: mondoo-4.13.0-is-out/ +title: Mondoo 4.13.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +🥳 mondoo 4.13.0 is out! This release focusses on stability and quality + +🧹 IMPROVEMENTS + +- switch to X as indicator for asset and score errors on CLI +- improve CIS DIL Benchmark implementation +- improve rendering for policy descriptions with bash content +- improve AWS integration +- improved CSP Header for mondoo.app + +:bug: BUG FIXES + +- fix a case where the cli displayed the wrong dashboard url +- fixes an issue where reports generated a cli error diff --git a/releases/2021-08-10-mondoo-4.15.0-is-out.md b/releases/2021-08-10-mondoo-4.15.0-is-out.md new file mode 100644 index 000000000..a59e3c450 --- /dev/null +++ b/releases/2021-08-10-mondoo-4.15.0-is-out.md @@ -0,0 +1,49 @@ +--- +slug: mondoo-4.15.0-is-out/ +title: Mondoo 4.15.0 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +author_image_url: https://avatars.githubusercontent.com/u/1178413?v=4 +tags: [release, mondoo] +--- + +🥳 mondoo 4.15.0 is out! It ships with many new MQL resources, new CIS benchmarks for macOS 10.15 and macOS 11. + +🎉 FEATURES + +- New Mondoo update notifications in Mondoo Console + +![Mondoo Console Update Notifications](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.42.39.png) + +- new CIS Benchmark for macOS 10.15 and macOS 11 (beta) + +![CIS Benchmark for macOS](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.08.26.png) + +- new MQL array functions for query language `[]array.unique` & `[]array.duplicates` + +![MQL array functions](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.00.png) + +- new MQL string function for upper case `string.upcase` + +![MQL upcase](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.48.png) + +- new MQL parse json feature `parse.json(content: '{ "a": "b"}')` + +![MQL json parse](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.01.38.png) + +- new MQL [resources for macOS](/mql/resources/os-pack/) + +![MQL resources for macos](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.04.46.png) + +- new MQL `parse.plist` resource to parse plist files on macOS + +![MQL resources to parse plist file](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.13.14.png) + +- new MQL `uuid` resource + +![MQL resources to parse uuid](/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.16.39.png) + +🧹 IMPROVEMENTS + +- SSH user fallback: When `mondoo scan -t host` is used without a user, we fallback to the current user to mimic ssh agent behaviour diff --git a/releases/2021-08-18-mondoo-4.16.0-is-out.md b/releases/2021-08-18-mondoo-4.16.0-is-out.md new file mode 100644 index 000000000..21be55dd2 --- /dev/null +++ b/releases/2021-08-18-mondoo-4.16.0-is-out.md @@ -0,0 +1,26 @@ +--- +slug: mondoo-4.16.0-is-out/ +title: Mondoo 4.16.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 4.16.0 is out! + +🎉 FEATURES + +- new MQL parse plist feature `parse.plist(content:"")` + ![MQL array functions](/img/releases/2021-08-18-mondoo-4.16.0-is-out/parse_plist.png) + +- new MQL array functions for query language `[].containsOnly([..])` + +![MQL array functions](/img/releases/2021-08-18-mondoo-4.16.0-is-out/contains_only.png) + +🧹 IMPROVEMENTS + +- Improved handling of binary files +- Platform EOL information for macOS and Arch Linux +- Bug fixes for the CIS Benchmarks for macOS +- Improve vault access to AWS Secret Manager diff --git a/releases/2021-08-24-mondoo-4.17.0-is-out.md b/releases/2021-08-24-mondoo-4.17.0-is-out.md new file mode 100644 index 000000000..712230188 --- /dev/null +++ b/releases/2021-08-24-mondoo-4.17.0-is-out.md @@ -0,0 +1,41 @@ +--- +slug: mondoo-4.17.0-is-out/ +title: Mondoo 4.17.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 4.17.0 is out! + +🎉 FEATURES + +- Experimental VMware Harbor Integration is available + + ![Harbor](/img/releases/2021-08-24-mondoo-4.17.0-is-out/harbor.png) + + To try it out, add the `container_registries` configuration + to your mondoo config: + + ``` + ... + container_registries: + token: abc123 + enable_harbor: true + ``` + + and then run `mondoo serve`. An implementation of the [pluggable-scanner-spec](https://github.com/goharbor/pluggable-scanner-spec) + will be available on port 8990. + +🧹 IMPROVEMENTS + +- macOS arm64 builds +- Improved macOS and Windows baseline policies +- Improved MQL type enforcement relating to handling of nils + +🐛 BUG FIXES AND UPDATES + +- Fix MQL timeout when `if` missing `else` +- Fix Microsoft 365 resolver +- Allow passing insecure flag for container registry scans diff --git a/releases/2021-08-27-mondoo-4.17.1-is-out.md b/releases/2021-08-27-mondoo-4.17.1-is-out.md new file mode 100644 index 000000000..15601ee88 --- /dev/null +++ b/releases/2021-08-27-mondoo-4.17.1-is-out.md @@ -0,0 +1,14 @@ +--- +slug: mondoo-4.17.1-is-out/ +title: Mondoo 4.17.1 is out! +author: Victoria Jeffrey +author_title: Mondoo Core Team +author_url: https://github.com/vjeffrey +tags: [release, mondoo] +--- + +🥳 mondoo 4.17.1 is out! + +🐛 BUG FIXES AND UPDATES + +- Fixed bug where agents that were continuously scanning were reported as missing diff --git a/releases/2021-09-02-mondoo-4.17.2-is-out.md b/releases/2021-09-02-mondoo-4.17.2-is-out.md new file mode 100644 index 000000000..97090bddf --- /dev/null +++ b/releases/2021-09-02-mondoo-4.17.2-is-out.md @@ -0,0 +1,14 @@ +--- +slug: mondoo-4.17.2-is-out/ +title: Mondoo 4.17.2 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 4.17.2 is out! + +🐛 BUG FIXES AND UPDATES + +- Fix broken Debian packages that were resulting in the configuration not being found or the mondoo CLI not being in the path diff --git a/releases/2021-09-02-mondoo-5.0.0-is-out.md b/releases/2021-09-02-mondoo-5.0.0-is-out.md new file mode 100644 index 000000000..09e1bb3fa --- /dev/null +++ b/releases/2021-09-02-mondoo-5.0.0-is-out.md @@ -0,0 +1,28 @@ +--- +slug: mondoo-5.0.0-is-out/ +title: Mondoo 5.0.0 is out! +author: Victoria Jeffrey +author_title: Mondoo Core Team +author_url: https://github.com/vjeffrey +tags: [release, mondoo] +--- + +🥳 mondoo 5.0.0 is out! + +This major version update significantly improves the way policies are +resolved and distributed to our agents. It doesn't require any changes from +you, our users, and will happen silently on the backend. + +Using this new policy resolution, we are able to scale to significantly more +assets. Please reach out if you encounter any difficulties with this upgrade +via [slack](https://mondoo.link/slack) or via [support@mondoo.com](mailto:support@mondoo.com). + +🧹 IMPROVEMENTS + +- Switched to new policy resolution by default to improve speed and scalability +- Added baseline policies for Linux, macOS, Windows +- Signed executable and installer for Windows + +🐛 BUG FIXES AND UPDATES + +- Fixed issue where the Packer plugin would scan the local target instead of the image being built diff --git a/releases/2021-09-09-mondoo-5.1.0-is-out.md b/releases/2021-09-09-mondoo-5.1.0-is-out.md new file mode 100644 index 000000000..55ce12b97 --- /dev/null +++ b/releases/2021-09-09-mondoo-5.1.0-is-out.md @@ -0,0 +1,27 @@ +--- +slug: mondoo-5.1.0-is-out/ +title: Mondoo 5.1.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/vjeffrey +tags: [release, mondoo] +--- + +🥳 mondoo 5.1.0 is out! + +🧹 IMPROVEMENTS + +- SNS messages sent from AWS CloudFormation as part of the AWS integration are now encrypted by default +- Resources created by the AWS integration are now tagged +- Newly created spaces will be assigned default policies +- Send hostname as a platform identifier when using WinRM + +🐛 BUG FIXES AND UPDATES + +- Fix bug where Mondoo installed with MSI installer could not be uninstalled + +⚠️ BREAKING CHANGES: + +- The way Mondoo looks for its configuration has changed: + - `~/.mondoo.yml` is deprecated. Use `~/.config/mondoo/mondoo.yml` + - Lookup order is `~/.config/mondoo/mondoo.yml`, `~/.mondoo.yml`, `/etc/opt/mondoo/mondoo.yml` diff --git a/releases/2021-09-13-mondoo-5.2.0-is-out.md b/releases/2021-09-13-mondoo-5.2.0-is-out.md new file mode 100644 index 000000000..d2c1a581a --- /dev/null +++ b/releases/2021-09-13-mondoo-5.2.0-is-out.md @@ -0,0 +1,21 @@ +--- +slug: mondoo-5.2.0-is-out/ +title: Mondoo 5.2.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.2.0 is out! + +🧹 IMPROVEMENTS + +- CIS Distribution Independent Linux has been updated and includes many improvements around pam controls, speedier implementation of the CIS controls that have to scan the whole file system +- MSI Installation has been improved. We changed the default behavior for service start. By default windows services are not started after the MSI has been installed. For server setups, please configure the service to start automatically. See [docs](/cnspec/cnspec-oper/cnspec-windows-intro/) for more information +- RPM/Debian packages have been improved. They do not start the service by default anymore, the systemd unit is created but not enabled by default. Activated services are honored and restarted after package update is completed. +- Updated the getting-started walk-through for a new space. + +![Getting Started Walk-Through](/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-1.png) + +![Getting Started Walk-Through](/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-2.png) diff --git a/releases/2021-09-15-mondoo-5.3.0-is-out.md b/releases/2021-09-15-mondoo-5.3.0-is-out.md new file mode 100644 index 000000000..6da19f7f3 --- /dev/null +++ b/releases/2021-09-15-mondoo-5.3.0-is-out.md @@ -0,0 +1,15 @@ +--- +slug: mondoo-5.3.0-is-out/ +title: Mondoo 5.3.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.3.0 is out! + +⚠️ BREAKING CHANGES: + +- We no longer use machine IDs for asset platform identifiers. We've found many examples of + where this is not unique, for example, Amazon Linux AMIs. diff --git a/releases/2021-09-20-mondoo-5.4.0-is-out.md b/releases/2021-09-20-mondoo-5.4.0-is-out.md new file mode 100644 index 000000000..07f80245e --- /dev/null +++ b/releases/2021-09-20-mondoo-5.4.0-is-out.md @@ -0,0 +1,22 @@ +--- +slug: mondoo-5.4.0-is-out/ +title: Mondoo 5.4.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.4.0 is out! + +🧹 IMPROVEMENTS + +- Add remediation steps to the Linux baseline security policy for RHEL and Debian +- Add missing titles in AWS policy + +🐛 BUG FIXES AND UPDATES + +- Fix nil-pointer crash in AWS IAM password policy +- Fix nil-pointer crash in vSphere discovery +- Fix broken incognito scans +- Fix incorrect SageMaker query in AWS policy diff --git a/releases/2021-09-23-mondoo-5.5.2-is-out.md b/releases/2021-09-23-mondoo-5.5.2-is-out.md new file mode 100644 index 000000000..a3147672a --- /dev/null +++ b/releases/2021-09-23-mondoo-5.5.2-is-out.md @@ -0,0 +1,22 @@ +--- +slug: mondoo-5.5.2-is-out/ +title: Mondoo 5.5.2 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.5.2 is out! + +🧹 IMPROVEMENTS + +- The Windows executable included in the zip file is now signed +- Speed up execution of Rsyslog resource when no configuration is found +- Added SSM connection label to instances +- The `duplicates` MQL method now accepts field names + +🐛 BUG FIXES AND UPDATES + +- Fix panic in `mondo exec` +- Speed up asset deletion diff --git a/releases/2021-09-30-mondoo-5.6.0-is-out.md b/releases/2021-09-30-mondoo-5.6.0-is-out.md new file mode 100644 index 000000000..eebbdd3f7 --- /dev/null +++ b/releases/2021-09-30-mondoo-5.6.0-is-out.md @@ -0,0 +1,35 @@ +--- +slug: mondoo-5.6.0-is-out/ +title: Mondoo 5.6.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.6.0 is out! + +🧹 IMPROVEMENTS + +- Windows 2022 support +- Extended the audit and remediation documentation on the AWS policy +- Update "Mondoo Platform End-of-Life Policy" to use the `sh` built-in `command` instead of `which` to determine if an executable is in the path since not all platforms have which by default +- New to the MQL time resource: `time.today` and `time.tomorrow` +- Improve AWS CIS Operational Best Practices policies with more descriptions +- Include SuSE and macOS AWS EC2 instances in integration statistics overview +- Improved the messaging on the AWS integration when in an unhealthy state + +🐛 BUG FIXES AND UPDATES + +- Community uploaded policies are now always marked as private +- Fix an issue where duplicated queries across policies would not be correctly reported +- Fix an issue where asset connection issues in discovery phase where reported but have not lead to exit code 1 +- Fix AWS instance tag filter for SSM integration +- Fix operator precedence bug where a query like: `false && false || true` resulted in a `false` value +- Fixed issue where a portion of the app would spin when a failed token refresh resulted in a 401 +- Handle case where non-reachable assets detected in discovery phase were not used for exit codes +- Properly error out when we could not retrieve the platform details for arista + +⚠️ BREAKING CHANGES: + +- Modified the AWS integration Mondoo Lambda role to have stricter permissions. This change requires users to _manually update the CloudFormation_ by navigating to the AWS CloudFormation console and selecting the `Update` button. No additional configuration options are required. diff --git a/releases/2021-10-04-mondoo-5.7.0-is-out.md b/releases/2021-10-04-mondoo-5.7.0-is-out.md new file mode 100644 index 000000000..8eedfc0a5 --- /dev/null +++ b/releases/2021-10-04-mondoo-5.7.0-is-out.md @@ -0,0 +1,34 @@ +--- +slug: mondoo-5.7.0-is-out/ +title: Mondoo 5.7.0 is out! +author: Victoria Jeffrey +author_title: Mondoo Core Team +author_url: https://github.com/vjeffrey +tags: [release, mondoo] +--- + +🥳 mondoo 5.7.0 is out! + +🎉 FEATURES + +- Generate chat alerts for score changes 🎉 + +![Chat alert](/img/releases/2021-10-04-mondoo-5.7.0-is-out/chat_alert.png) + +See [the documentation](/platform/maintain/alerting/webhook/) for more details about how to setup chat alerts for your space. + +🧹 IMPROVEMENTS + +- Add ability to sort the assets by score +- Improvements to quick-start navigation and added instructions for setting up integrations with Azure, GCP and VMware +- Improved the dashboard stats cards +- Rename `mondoo agents` commands to `mondoo client` + +🐛 BUG FIXES AND UPDATES + +- Prevent exceptions from being invalidated when policies are updated +- Fix bug where a flicker was observed while creating a new space and org +- Fix bug where a flicker was observed while navigating to and from errored assets details +- Fix bug that prevented users from seeing the results of a custom policy in the UI +- Fix examples for AWS integration EC2 filtering by tag +- Make the total assets number "clickable" diff --git a/releases/2021-10-06-mondoo-5.8.0-is-out.md b/releases/2021-10-06-mondoo-5.8.0-is-out.md new file mode 100644 index 000000000..f6c2b248d --- /dev/null +++ b/releases/2021-10-06-mondoo-5.8.0-is-out.md @@ -0,0 +1,16 @@ +--- +slug: mondoo-5.8.0-is-out/ +title: Mondoo 5.8.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.8.0 is out! + +🎉 FEATURES + +- We added support for GKE and AKS Kubernetes Distributions + +![Mondoo Shell connecting to GKE](/img/releases/2021-10-04-mondoo-5.8.0-is-out/k8s-gke-shell.png) diff --git a/releases/2021-10-12-mondoo-5.9.0-is-out.md b/releases/2021-10-12-mondoo-5.9.0-is-out.md new file mode 100644 index 000000000..1616a1dc7 --- /dev/null +++ b/releases/2021-10-12-mondoo-5.9.0-is-out.md @@ -0,0 +1,29 @@ +--- +slug: mondoo-5.9.0-is-out/ +title: Mondoo 5.9.0 is out! +author: Anthony Young +author_title: Mondoo Core Team +author_url: https://github.com/sleepsonthefloor +tags: [release, mondoo] +--- + +🥳 mondoo 5.9.0 is out! + +🎉 FEATURES + +- Added a new YAML Parsing resource + +![YAML Resource](/img/releases/2021-10-12-mondoo-5.9.0-is-out/yaml_resource.png) + +- Improved Help Output + ![Improved Help](/img/releases/2021-10-12-mondoo-5.9.0-is-out/improved_help.png) + +- Added resource to parse iptables and socket stats +- Added 'clear' command to clear the mondoo shell + +🐛 BUG FIXES AND UPDATES + +- Fix bug where policies uploaded through the CLI would always be unscored +- Check if vsphere api response is available +- fix early reading of contents in file resource +- fix mql race conditions diff --git a/releases/2021-10-19-mondoo-5.10.0-is-out.md b/releases/2021-10-19-mondoo-5.10.0-is-out.md new file mode 100644 index 000000000..b4e6a1d72 --- /dev/null +++ b/releases/2021-10-19-mondoo-5.10.0-is-out.md @@ -0,0 +1,37 @@ +--- +slug: mondoo-5.10.0-is-out/ +title: Mondoo 5.10.0 is out! +author: Kyleen MacGugan +author_title: Mondoo Core Team +author_url: https://github.com/kmacgugan +tags: [release, mondoo] +--- + +🥳 mondoo 5.10.0 is out! + +🎉 FEATURES + +- Updates to CIS DIL and Linux policies, networking queries added and others with improved accuracy. +- New MQL query feature: string array.where(/regex/) now supported! + ![Where regex](/img/releases/2021-10-19-mondoo-5.10.0-is-out/ciphers.png) + +🧹 IMPROVEMENTS + +- Introduced regex flags i, m, and s for interacting with regex queries in MQL + + * `i` for case-insensitive pattern matching + + * `s` allows . to match newlines + + * `m` allows the matching of entire lines with `^` and `$` for beginning and end of line + + ![regex flags](/img/releases/2021-10-19-mondoo-5.10.0-is-out/regex_flags.png) + +- Introduce common regex resource in MQL, allowing for easy use of common regex patterns. + ![common regex](/img/releases/2021-10-19-mondoo-5.10.0-is-out/common_regex.png) + +🐛 BUG FIXES AND UPDATES + +- Fix file resource Setuid and Setgid detection for the local transport +- Fix bug where incorrect file permissions would be cached +- Fix bug where errors would not be correctly propagated and would lead to execution timeouts diff --git a/releases/2021-10-27-mondoo-5.11.0-is-out.md b/releases/2021-10-27-mondoo-5.11.0-is-out.md new file mode 100644 index 000000000..544fe9ff2 --- /dev/null +++ b/releases/2021-10-27-mondoo-5.11.0-is-out.md @@ -0,0 +1,27 @@ +--- +slug: mondoo-5.11.0-is-out/ +title: Mondoo 5.11.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.11.0 is out! + +🎉 FEATURES + +- Export the Mondoo scan report as CSV. You can try it using `mondoo scan -o csv` +- Added the `lsblk` resource for querying unmounted block devices +- Added `aws.ec2.instances { image }` for querying information about the AMI used to launch the instance +- You can now query the `group` resource for a `user`: `users.list { group }` +- Expose EC2 instance launch time to enable queries like `aws.ec2.instances { launchTime }` + +🧹 IMPROVEMENTS + +- Improvements to Distribution Independent Linux Policy queries + +🐛 BUG FIXES AND UPDATES + +- Fix bug where `#` used as a comment in MQL queries would cause the query to erroneously compile +- Fix service detection for openSUSE-leap diff --git a/releases/2021-11-03-mondoo-5.12.2-is-out.md b/releases/2021-11-03-mondoo-5.12.2-is-out.md new file mode 100644 index 000000000..168fda533 --- /dev/null +++ b/releases/2021-11-03-mondoo-5.12.2-is-out.md @@ -0,0 +1,231 @@ +--- +slug: mondoo-5.12.2-is-out/ +title: Mondoo 5.12.2 is out! +author: Dominik Richter +author_title: Mondoo Core Team +author_url: https://github.com/arlimus +tags: [release, mondoo] +--- + +🥳 mondoo 5.12.0 is out! + +### 🎉 NEW FEATURES + +**TLS resource** + +We are releasing a new resource that allows you to test remote TLS and SSL +connections. + +This resource is currently in preview and may be adjusted or expanded in the +next month. + +Whenever you run the `tls` resource against a target, we will execute +a range of tests with the endpoint to see which features it can support: + +```javascript +tls("mondoo.com") { + versions + ciphers +} +``` + +```javascript +tls: { + versions: [ + 0: "tls1.3" + 1: "tls1.2" + ] + ciphers: [ + 0: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305" + 1: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" + 2: "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" + 3: "TLS_CHACHA20_POLY1305_SHA256" + 4: "TLS_AES_128_GCM_SHA256" + 5: "TLS_AES_256_GCM_SHA384" + 6: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" + 7: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + 8: "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" + ] +} +``` + +Additionally, you can gain access to certificates available on the TLS/SSL +endpoint, including the entire certificate chain: + +```javascript +tls("mondoo.com").certificates { + subject.dn + issuer.dn +} +``` + +```javascript +tls.certificates: [ + 0: { + subject.dn: "CN=*.edge.easyredir.net" + issuer.dn: "CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB" + } + 1: { + subject.dn: "CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB" + issuer.dn: "CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US" + } + 2: { + subject.dn: "CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US" + issuer.dn: "CN=AAA Certificate Services,O=Comodo CA Limited,L=Salford,ST=Greater Manchester,C=GB" + } +] +``` + +**Port resources** + +We are also releasing a new resource to allow users to query open ports on their +systems. This resource is currently in preview and may be expanded and adjusted +in the next month. + +```javascript +ports.list { + state + port + protocol + process.executable + user +} +``` + +```javascript +ports.list: [ + 0: { + state: "established" + user: user id = user/1000/zero + port: 41260 + protocol: "tcp" + process.executable: "GeckoMain" + } + 1: { + state: "established" + user: user id = user/1000/zero + port: 51690 + protocol: "tcp" + process.executable: "GeckoMain" + } + ... +``` + +You can simply query listening ports via: + +```javascript +ports.listening { + port + protocol + address + user +} +``` + +```javascript +ports.listening: [ + 0: { + protocol: "tcp" + port: 22 + user: user id = user/0/root + address: "0.0.0.0" + } + 1: { + protocol: "tcp" + port: 443 + user: user id = user/1000/zero + address: "127.0.0.1" + } + ... +``` + +**Empty fields in MQL resources** + +Problem: Some resources may have fields that don't have values. So far, this +created a challenge in MQL in cases where we couldn't create the resource if +its dependencies were `null`. For example: If we wanted to show a `port` resource +but didn't know its running `process`. + +Solution: Allow resources to be initialized with `null` fields. +When extracting values from it, it will render the entire resource as `null` instead +of printing errors for individual fields: + +```javascript +ports.list { + port + process { + executable + pid + } +} +``` + +Results in: + +```javascript +ports.list: [ + 0: { + port: 34454 + process: { + pid: 1121 + executable: "GeckoMain" + } + } + 1: { + port: 68 + process: null + } + ... +] +``` + +This is in line with the expected behavior in GraphQL. + +**Comments in MQL** + +Problem: MQL is oriented around providing querying capabilities found in GraphQL +with scripting found in other lightweight languages like JavaScript. The latter +had informed our commenting style in MQL, which was limited to `//`. +This created problems where users would try comments via `#` resulting in broken queries. + +Solution: After careful review we decided to switch comments to use `#` as +the preferred commenting style. This both aligns with comments in YAML, thus +making policy editing easier, and with GraphQL comments. + +At the same time we still support and will continue to support comments via +`//`. These are not recommended and may be auto-formatted in the future, but +are available as well. + +```javascript +mondoo { + # This is the recommended commenting style 🤩 + version build +} +``` + +**Shell commands** + +Problem: When using the shell users would try to hit `CTRL + C` to clear +the line but instead exited the shell. This was unexpected to most as most +CLI shells behave differently. + +Solution: The Mondoo shell now doesn't exit when you hit `CTRL + C` anymore. +Instead it prints a newline. Additionally, `CTRL + D` now exits the shell, +alongside the already existing `exit` command. This is in line with most +other shell environments we tested. + +Additionally you can now hit `CTRL + Z` to pause the execution and send the +Mondoo shell to the background. Like other Linux/macOS/Unix commands, you can +restore it using `fg` in Bash/Zsh/etc. + +### 🧹 IMPROVEMENTS + +- Add basic support for SUSE Linux Enterprise Micro +- AWS Lambda function is now scheduled to update once every 8 hours instead of hourly +- ️Use connection hostname as vSphere API hostname so users can distinguish them +- Agents can now report more error messages to the server, which will ease + debugging in the future + +### 🐛 BUG FIXES AND UPDATES + +- `regex.email` has been improved to more accurately capture email addresses diff --git a/releases/2021-11-10-mondoo-5.13.0-is-out.md b/releases/2021-11-10-mondoo-5.13.0-is-out.md new file mode 100644 index 000000000..0e014545c --- /dev/null +++ b/releases/2021-11-10-mondoo-5.13.0-is-out.md @@ -0,0 +1,91 @@ +--- +slug: mondoo-5.13.0-is-out/ +title: Mondoo 5.13.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.13.0 is out! + +### 🎉 NEW FEATURES + +**DNS resource** + +This release includes a new resource to make DNS queries to allow +testing against DNS records. + +```javascript +dns("mondoo.com").records { + type + rdata +} +``` + +```javascript +dns.records: [ + 0: { + type: "TXT" + rdata: [ + 0: "google-site-verification=BJHy4ONNsxrKr7Vtz3g6Y-dJDAOZ3S0PLFdqKVZv6To" + 1: "v=DMARC1; p=none; rua=mailto:postmaster@mondoo.com, mailto:dmarc@mondoo.com; sp=none; pct=100; adkim=r; aspf=r" + 2: "v=spf1 include:_spf.google.com include:_spf.salesforce.com include:amazonses.com include:mail.zendesk.com ~all" + ] + } + 1: { + type: "SOA" + rdata: [ + 0: "ns-cloud-c1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300" + ] + } + 2: { + type: "MX" + rdata: [ + 0: "10 alt3.aspmx.l.google.com." + 1: "5 alt2.aspmx.l.google.com." + 2: "1 aspmx.l.google.com." + 3: "10 alt4.aspmx.l.google.com." + 4: "5 alt1.aspmx.l.google.com." + ] + } + 3: { + type: "NS" + rdata: [ + 0: "ns-cloud-c2.googledomains.com." + 1: "ns-cloud-c3.googledomains.com." + 2: "ns-cloud-c1.googledomains.com." + 3: "ns-cloud-c4.googledomains.com." + ] + } + 4: { + type: "A" + rdata: [ + 0: "76.223.34.124" + 1: "13.248.160.137" + ] + } +] +``` + +**CVE View through the CLI** + +In this release, we're introducing a new command to get a view of CVEs affecting a space: + +``` +mondoo vuln list //captain.api.mondoo.app/spaces/test-infallible-taussig-796596 +``` + +![vuln list](/img/releases/2021-11-10-mondoo-5.13.0-is-out/vuln.png) + +### 🧹 IMPROVEMENTS + +- Improved query error handling +- Introduce a new `certificate.expiresIn` field to get the remaining time !1680 +- The `mount` resource is now supported for file system based scans through `/etc/fstab` + +⚠️ BREAKING CHANGES: + +- The certificate resources has the following breaking changes: + 1. renamed `hashs` field to `fingerprints` + 1. use camelCase for certificate fields diff --git a/releases/2021-11-17-mondoo-5.14.0-is-out.md b/releases/2021-11-17-mondoo-5.14.0-is-out.md new file mode 100644 index 000000000..ef0b9d662 --- /dev/null +++ b/releases/2021-11-17-mondoo-5.14.0-is-out.md @@ -0,0 +1,147 @@ +--- +slug: mondoo-5.14.0-is-out/ +title: Mondoo 5.14.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.14.0 is out! + +### 🎉 NEW FEATURES + +**Terraform Transport** + +This release adds support to scan Terraform HCL files. + +```bash +mondoo shell -t terraform:// --option path=path/to/tf +mondoo > terraform.blocks { nameLabel type arguments } +``` + +``` +terraform.blocks: [ + 0: { + arguments: { + most_recent: { + type: "bool" + value: true + } + owners: { + type: "tuple([string])" + value: [ + 0: "self" + ] + } + tags: { + type: "object({Name=string,Tested=string})" + value: null + } + } + type: "data" + nameLabel: "aws_ami" + } + 1: { + arguments: { + source: { + type: "string" + value: "hashicorp/consul/aws" + } + version: { + type: "string" + value: "0.11.0" + } + } + type: "module" + nameLabel: "consul" + } +... +} +``` + +**MQL glob fields** + +You can now ask the shell to print all the fields using `*`. + +```bash +mondoo > sshd.config { * } +``` + +```javascript +sshd.config: { + macs: [] + file: file id = /etc/ssh/sshd_config + ciphers: [] + params: { + AuthorizedKeysFile: ".ssh/authorized_keys" + ChallengeResponseAuthentication: "no" + Port: "22" + PrintMotd: "no" + Subsystem: "sftp /usr/lib/ssh/sftp-server" + UsePAM: "yes" + } + kexs: [] + content: "# $OpenBSD: sshd_config..." +} +``` + +**DNS DKIM Record Parsing** + +This release improves the previously released `dns` resource with the ability to +parse DKIM TXT records. + +```javascript +dns("google._domainkey.mondoo.com").records { type rdata } +``` + +```javascript +dns.records: [ + 0: { + type: "TXT" + rdata: [ + 0: "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3E9IavfvGHiENM/bFBTJfRLBUE1PV9f2q2mbYOHu2d1zZ3VB22sXnpGN6TV1m8Tq8zUWlXPgkApOaSF/+zRqBuyF6ci1rmcfvFCAHdERXy37bFgi0/EkoslaqEZel4eddqqWt93KuwydPL2jEhd01M+PGbfFfCu65iZFW107u0PhlXWZG0iJbFsBNdp4mKXI4CxWNlVb0xPr0kcYaE0eAi+EcnG5QHONv5cQrQJ6ncUNehV0caUKWibIKTKPmwttPTyTYbF6sWY7olT9FAgbGz5flHHqBVWPXsf5Jivv5HbsJLTdejAvQwm7e+w0S//OFafffZUXgF/yNB4HczZiQIDAQAB" + ] + } +] +``` + +Now a `dns("google._domainkey.mondoo.com").dkim` returns the value and offers a valid method to verify if the public key is parsable: + +```javascript +dns("google._domainkey.mondoo.com").dkim { + keyType + version + notes + serviceTypes + flags + publicKeyData + valid +} +``` + +```javascript +dns.dkim: [ + 0: { + notes: "" + publicKeyData: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3E9IavfvGHiENM/bFBTJfRLBUE1PV9f2q2mbYOHu2d1zZ3VB22sXnpGN6TV1m8Tq8zUWlXPgkApOaSF/+zRqBuyF6ci1rmcfvFCAHdERXy37bFgi0/EkoslaqEZel4eddqqWt93KuwydPL2jEhd01M+PGbfFfCu65iZFW107u0PhlXWZG0iJbFsBNdp4mKXI4CxWNlVb0xPr0kcYaE0eAi+EcnG5QHONv5cQrQJ6ncUNehV0caUKWibIKTKPmwttPTyTYbF6sWY7olT9FAgbGz5flHHqBVWPXsf5Jivv5HbsJLTdejAvQwm7e+w0S//OFafffZUXgF/yNB4HczZiQIDAQAB" + version: "DKIM1" + flags: [] + valid: true + serviceTypes: [] + keyType: "rsa" + } +] +``` + +### 🧹 IMPROVEMENTS + +- support mondoo scan -t `scheme://` without `://`. You can now just `mondoo scan -t scheme` +- Add ability to load default ssh elliptic curve keys +- Try to detect a platform identifier consistent across transports when scanning EC2 instances + +### 🐛 BUG FIXES AND UPDATES + +- Fix bug where the `tls` resource would panic with concurrent map access +- Fix bug with `machine` resource on Linux where it would error out with `could not retrieve smbios info for platform: read /sys/class/dmi/id: is a directory` +- Fix `aws.accessAnalyzer` resource diff --git a/releases/2021-11-19-mondoo-5.14.1-is-out.md b/releases/2021-11-19-mondoo-5.14.1-is-out.md new file mode 100644 index 000000000..093dc8b13 --- /dev/null +++ b/releases/2021-11-19-mondoo-5.14.1-is-out.md @@ -0,0 +1,21 @@ +--- +slug: mondoo-5.14.1-is-out/ +title: Mondoo 5.14.1 is out! +author: Kyleen MacGugan +author_title: Mondoo Core Team +author_url: https://github.com/kmacgugan +tags: [release, mondoo] +--- + +🥳 mondoo 5.14.1 is out! + +### 🧹 IMPROVEMENTS + +- support trailing comments in MQL expressions +- Add optional/customizable tags the AWS CloudFormation stack +- Make files.find follow symlinks +- Include default Mondoo AWS Policy + +### 🐛 BUG FIXES AND UPDATES + +- explicit health check for scan and serve diff --git a/releases/2021-11-23-mondoo-5.15.0-is-out.md b/releases/2021-11-23-mondoo-5.15.0-is-out.md new file mode 100644 index 000000000..5c7772331 --- /dev/null +++ b/releases/2021-11-23-mondoo-5.15.0-is-out.md @@ -0,0 +1,32 @@ +--- +slug: mondoo-5.15.0-is-out/ +title: Mondoo 5.15.0 is out! +author: Kyleen MacGugan +author_title: Mondoo Core Team +author_url: https://github.com/kmacgugan +tags: [release, mondoo] +--- + +🥳 mondoo 5.15.0 is out! + +### 🎉 NEW FEATURES + +**Support --path for exec command to allow for autocompletion in the shell** +This brings shell auto-completion for transports that require a path + +Before: + +``` +$ mondoo exec -t terraform --option path=policy/bundles/test_data/terraform/fail "$(cat test.mql)" +``` + +After: + +``` +$ mondoo exec -t terraform --path policy/bundles/test_data/terraform/fail "$(cat test.mql)" +``` + +### 🧹 IMPROVEMENTS + +- Add azure vm platform id auto-detection +- Add tags to aws acm certificate resource diff --git a/releases/2021-11-30-mondoo-5.16.1-is-out.md b/releases/2021-11-30-mondoo-5.16.1-is-out.md new file mode 100644 index 000000000..b15587226 --- /dev/null +++ b/releases/2021-11-30-mondoo-5.16.1-is-out.md @@ -0,0 +1,60 @@ +--- +slug: mondoo-5.16.1-is-out/ +title: Mondoo 5.16.1 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.16.1 is out! + +### 🎉 NEW FEATURES + +**Terraform Static Analysis Policy for AWS** + +With this release, users can activate the "Terraform Static Analysis Policy for AWS" in their space. + +Once the policy is active, you can check your Terraform configuration like this: + +```bash +mondoo scan -t terraform --path . --incognito +``` + +![Terraform scan output](/img/releases/2021-11-30-mondoo-5.16.1-is-out/tf.png) + +**Native Assessments for all/none/any/one** + +The 4 list assessment methods (`all`, `none`, `any`, and `one`) had only limited +output in Mondoo so far. This made it very difficult to understand what items +failed any given check and what needed to be fixed. + +This patch introduces a descriptive output which shows the entries that +failed for these list assessment methods. See the following example: + +![Native list assessments](/img/releases/2021-11-30-mondoo-5.16.1-is-out/native_assessments.png) + +**AWS EC2 Instance Connect Transport** + +We've added a new transport to allow to connect to EC2 instances directly using +[AWS EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html). + +``` +mondoo shell -t aws-ec2-connect://ec2-user@i-ec2ec2ec2ec2ec2f2 --insecure +``` + +### 🧹 IMPROVEMENTS + +- The `mount` resource can now be initialized with a path: + ``` + mount.point("/dev/shm") { * } + ``` +- The TLS resource now supports SNI. This means that it will return the correct + certificates for a given domain name, which supports this feature. For example, + `tls("mondoo.com").certificates` will now return the expected certificate for + the domain. +- The `terraform.block` resource provides 2 new fields + 1. `attributes`: Access the raw block attributes + 2. `snippet`: The source code snippet for the block +- You can now run multiple policy bundles at once in incognito mode. +- Support Amazon Linux 2022, including vulnerabilities, repos, and EOL information diff --git a/releases/2021-12-07-mondoo-5.17.1-is-out.md b/releases/2021-12-07-mondoo-5.17.1-is-out.md new file mode 100644 index 000000000..791e1e40f --- /dev/null +++ b/releases/2021-12-07-mondoo-5.17.1-is-out.md @@ -0,0 +1,134 @@ +--- +slug: mondoo-5.17.1-is-out/ +title: Mondoo 5.17.1 is out! +author: Victoria Jeffrey +author_title: Mondoo Core Team +author_url: https://github.com/vjeffrey +tags: [release, mondoo] +--- + +🥳 mondoo 5.17.1 is out! + +### 🎉 NEW FEATURES + +**Terraform Policy** + +- Added `Terraform Static Analysis Policy for AWS (Early Access)` + +![terraform](/img/releases/2021-12-7-mondoo-5.17.1-is-out/terraform.png) + +**Network targets** + +We first released the `tls` resource back in [5.12.2](/releases/mondoo-5.12.2-is-out/), +and the `dns` resource in [5.11.0](/releases/mondoo-5.11.0-is-out/). +This was 1 month ago and today we are taking the next step at making them applicable +by adding new ways to target assets. + +First, we added the `host://` target: + +``` +> mondoo shell -t host://mondoo.com +``` + +Once connected, you can run queries like this: + +![TLS on host://](/img/releases/2021-12-7-mondoo-5.17.1-is-out/host.png) + +Additionally, we expose this information via the `platform` resource: + +![Platform on host://](/img/releases/2021-12-7-mondoo-5.17.1-is-out/host-platform.png) + +Alternatively you can also use the `tls://` target for this use-case as well, and we +are planning to expand these to provide contextual information to the MQL engine. + +**DNS policy** + +We added a baseline policy to check your DNS security called: `Mondoo DNS Baseline (Early Access)`. +As you can see, it's still in early access and we'd love to hear what else you +might want to see! + +![dns-policy](/img/releases/2021-12-7-mondoo-5.17.1-is-out/dns-policy.png) + +To scan mondoo.com for DNS, run the following: + +```bash +mondoo scan -t host://mondoo.com --incognito --policy '//policy.api.mondoo.app/policies/mondoo-dns-baseline' +``` + +**TLS policy** + +We also added a policy for TLS security called: `Mondoo TLS/SSL Baseline`. +This policy will be expanded over the course of time with more tests. Check out +our community channel and let us know if you want to test more features! + +![tls-policy](/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-policy.png) + +To scan mondoo.com for TLS, run the following + +```bash +mondoo scan -t host://mondoo.com --incognito --policy '//policy.api.mondoo.app/policies/mondoo-tls-baseline' +``` + +**Scanning multiple Hosts** + +To scan multiple hosts, create a new `domainlist.txt` file that includes domains separated by newlines: + +``` +mondoo.com +google.com +``` + +Then you can pipe that domain inventory to mondoo: + +`cat domainlist.txt | mondoo scan --domainlist-inventory` + +**Certificate resource** + +You can now check if a certificate has been revoked. This is done via OCSP requests +to see if that certificate has been revoked. In all cases where OCSP information +has not been provided, the value for this field will be `null`. + +When a certificate is revoked, you can additionally access the revocation time +via the field `revokedAt`. + +![TLS is revoked check](/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-revoked.png) + +Note: This feature is currently limited to TLS checks. Please ping us in our +community channel if you need it for standalone certificates as well! + +**TLS extensions** + +Additionally, we added tests for a few TLS extensions. Amongst others, we now +support 3 extensions: + +- `server_name` Indicates that the serve supports [Server Name Indication (SNI)](https://en.wikipedia.org/wiki/Server_Name_Indication). + You can access all SNI certificates via the `certificates` field and non-SNI + certificates via `nonSniCertificates` +- `fake_server_name` When a fake SNI name is sent to the server, this indicates + that we get a response without any alerts from the server. This means that + the server doesn't leak information about the name. +- `renegotiation_info` Shows that the server supports secure TLS renegotiations + (via TLS 1.2 and 1.3) + +![TLS extensions](/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-extensions.png) + +### 🧹 IMPROVEMENTS + +- Map fields via the `#map( .. )` function to flatten list. For example: `users.map(name)` to get a flat list of user names. +- Include tags on more AWS resources for discoverability +- Allow machineid as a platform identifier +- More AWS resource MQL documentation + +### 🐛 BUG FIXES AND UPDATES + +- Use numbers for the `entry.shadow` resource (was string) +- Properly detect AWS arm instances +- Ensure asset state and asset name are always updated +- Only update platform name when valid +- Fix ec2-managedinstance-association-compliance-status-check query +- Ensure incognito runs do not try to report to Mondoo Platform +- Resolve refs in arrays +- Fix recursive operator with arrays and maps +- Array to nil comparison +- Fix url parsing on domain list inventory +- Fix displayed errors for missing upstream policies diff --git a/releases/2021-12-14-mondoo-5.18.0-is-out.md b/releases/2021-12-14-mondoo-5.18.0-is-out.md new file mode 100644 index 000000000..ceffbd110 --- /dev/null +++ b/releases/2021-12-14-mondoo-5.18.0-is-out.md @@ -0,0 +1,251 @@ +--- +slug: mondoo-5.18.0-is-out/ +title: Mondoo 5.18.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.18.0 is out! + +### 🎉 NEW FEATURES + +** Use Mondoo to verify certificate chains ** + +You can now use the `isVerified` field on the `certificate` resource +to check whether or not a certificate chain is valid: + +```javascript +tls("mondoo.com").certificates { + subject.commonName + isVerified +} +``` + +```javascript +tls.certificates: [ + 0: { + isVerified: true + subject.commonName: "mondoo.com" + } + 1: { + isVerified: true + subject.commonName: "R3" + } + 2: { + isVerified: true + subject.commonName: "ISRG Root X1" + } +] +``` + +** Use Mondoo to query CloudWatch metrics on AWS resources ** + +Mondoo can now pull CloudWatch statistics for AWS resources. For instance, you can use Mondoo to query the number of invocations and errors for a Lambda function. This can be used to assess error rates, or to detect un-used resources. + +Note: Mondoo queries CloudWatch Statistics for the last 24h of data, in 1h intervals. + +```javascript +aws.cloudwatch.metricstatistics(namespace: "AWS/EBS", region: "us-east-1", name: "VolumeTotalReadTime") { + label + datapoints { + maximum + average + sum + } +} +``` + +```javascript +aws.cloudwatch.metricstatistics: { + datapoints: [ + 0: { + average: 0.0004509803921568627 + maximum: 0 + sum: 0.22999999999999998 + } + ] + label: "VolumeTotalReadTime" +``` + +or + +```javascript +aws.cloudwatch.metrics { + name + namespace + statistics { + label + datapoints + } +} +``` + +```javascript + 1512: { + statistics: { + datapoints: [] + label: "CallCount" + } + namespace: "AWS/Logs" + name: "CallCount" + } + 1513: { + statistics: { + datapoints: [] + label: "CallCount" + } + namespace: "AWS/Usage" + name: "CallCount" + } + 1514: { + statistics: { + datapoints: [] + label: "ThrottleCount" + } + namespace: "AWS/Usage" + name: "ThrottleCount" + } + 1515: { + statistics: { + datapoints: [] + label: "CallCount" + } + namespace: "AWS/Usage" + name: "CallCount" + } + +``` + +** Enhanced assessment of yum repo file contents through `file` field ** + +Prior to this release, Mondoo could display a list of all configured yum repos. With this new improvement, Mondoo can now not only list all the configured repositories, but inspect the file for each yum repo definition in `/etc/yum.repos.d`. + +With the new `file` field, the contents are also now available +to Mondoo: + +```javascript +yum.repos { + name + file { + path + content + } +} +``` + +```javascript +yum.repos: [ + 0: { + name: "AlmaLinux 8 - AppStream" + file: { + path: "/etc/yum.repos.d/almalinux.repo" + content: "# almalinux.repo + +[baseos] +name=AlmaLinux $releasever - BaseOS +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/baseos +# baseurl=https://repo.almalinux.org/almalinux/$releasever/BaseOS/$basearch/os/ +enabled=1 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +[appstream] +name=AlmaLinux $releasever - AppStream +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/appstream +# baseurl=https://repo.almalinux.org/almalinux/$releasever/AppStream/$basearch/os/ +enabled=1 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +[extras] +name=AlmaLinux $releasever - Extras +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/extras +# baseurl=https://repo.almalinux.org/almalinux/$releasever/extras/$basearch/os/ +enabled=1 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +## Sources +[baseos-source] +name=AlmaLinux $releasever - BaseOS Source +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/baseos-source +# baseurl=https://repo.almalinux.org/almalinux/$releasever/BaseOS/Source/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +[appstream-source] +name=AlmaLinux $releasever - AppStream Source +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/appstream-source +# baseurl=https://repo.almalinux.org/almalinux/$releasever/AppStream/Source/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +[extras-source] +name=AlmaLinux $releasever - Extras Source +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/extras-source +# baseurl=https://repo.almalinux.org/almalinux/$releasever/extras/Source/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +## Debuginfo +[baseos-debuginfo] +name=AlmaLinux $releasever - BaseOS debuginfo +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/baseos-debuginfo +# baseurl=https://repo.almalinux.org/almalinux/$releasever/BaseOS/debug/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +[appstream-debuginfo] +name=AlmaLinux $releasever - AppStream debuginfo +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/appstream-debuginfo +# baseurl=https://repo.almalinux.org/almalinux/$releasever/AppStream/debug/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux + +[extras-debuginfo] +name=AlmaLinux $releasever - Extras debuginfo +mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/extras-debuginfo +# baseurl=https://repo.almalinux.org/almalinux/$releasever/extras/debug/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux +" + } + } + ... +} +``` + +** Use Mondoo to test that files exist, but have no content ** + +Mondoo can now detect that an empty file exists at an expected location. One common use case for this test is to detect files written in error to a location that would otherwise be a filesystem or chroot mount point. + +We've added a new field to the `file` resource to query +if the file or directory is empty: + +```javascript +file("/my/empty/file").empty; +``` + +```javascript +file.empty: true +``` + +### 🧹 IMPROVEMENTS + +- The AWS integration reports long-failing CloudFormation update +- Save more information to improve assessments +- Add support for Rocky Linux +- Add support for AlmaLinux + +### 🐛 BUG FIXES AND UPDATES + +- Fix bug where AWS Lambda environment would get too big and fail to update +- Fix queries that were not working in the Mondoo AWS Baseline policy diff --git a/releases/2021-12-21-mondoo-5.19.0-is-out.md b/releases/2021-12-21-mondoo-5.19.0-is-out.md new file mode 100644 index 000000000..1e92dbb1a --- /dev/null +++ b/releases/2021-12-21-mondoo-5.19.0-is-out.md @@ -0,0 +1,34 @@ +--- +slug: mondoo-5.19.0-is-out/ +title: Mondoo 5.19.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.19.0 is out! + +### 🧹 IMPROVEMENTS + +- Make asset name consistent for AWS instances regardless of the transport or discovery mechanism used +- Add additional fields to the`aws.rds.dbinstance` resource + - `dbInstanceClass`: name of the compute and memory capacity class of the DB instance + - `dbInstanceIdentifier`: user-supplied unique key that identifies a DB instance + - `engine`: name of the database engine for this DB instance + - `securityGroups`: list of VPC security group elements that the DB instance belongs to + - `status`: current state of this database +- Detect services managed by systemd for FS based transports +- Handle Terraform template wrap expressions +- Add advisory support for Ubuntu 21.10 +- Improve printing of assessments for blocks + +### 🐛 BUG FIXES AND UPDATES + +- `mondoo scan -o` now accepts `json` and `yml` for report output formats. Before, `json` support was claimed but did not work, and `yaml` support worked, but did not accept `yml` +- Fix panic when using the AWS S3 resource +- Fix potential panic if scan results fail to store +- Fix issue where the assessment for `package("foo").installed` would be missing, but `package("foo").installed == true` would work +- Fix bug where AWS S3 buckets without tags return an error when no tags are present +- Update asset filter for `CIS Distribution Independent Linux Benchmark Level 1 for Container` so that it only runs for containers +- Use public IP instead of public DNS for EC2 Instance Connect since not all instances have a public DNS entry diff --git a/releases/2022-01-04-mondoo-5.20.0-is-out.md b/releases/2022-01-04-mondoo-5.20.0-is-out.md new file mode 100644 index 000000000..ecd8fede7 --- /dev/null +++ b/releases/2022-01-04-mondoo-5.20.0-is-out.md @@ -0,0 +1,196 @@ +--- +slug: mondoo-5.20.0-is-out/ +title: Mondoo 5.20.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.20.0 is out! + +### 🎉 NEW FEATURES + +**Support for Terraform Objects** + +Given a Terraform definition for: + +```ccl +resource "google_compute_instance" "default" { + name = "test" + machine_type = "e2-medium" + zone = "us-central1-a" + + boot_disk { + initialize_params { + image = "debian-cloud/debian-9" + } + } + + // Local SSD disk + scratch_disk { + interface = "SCSI" + } + + metadata = { + enable-oslogin = false + } +} +``` + +`metadata` is a defined object and not a block. The following query requests the arguments: + +``` +terraform.resources.where( nameLabel == "google_compute_instance" ) { + arguments +} +``` + +Before this, the `metadata` was null because key/value pairs have not been parsed: + +``` +terraform.resources.where: [ + 0: { + arguments: { + machine_type: "e2-medium" + metadata: null + name: "test" + zone: "us-central1-a" + } + } +] +``` + +With this latest release: + +``` +terraform.resources.where[0].arguments: { + machine_type: "e2-medium" + metadata: { + enable-oslogin: true + } + name: "test" + zone: "us-central1-a" +} +``` + +**Support Linux kernel vault** + +Storing credentials on disk is not recommended and Mondoo strongly advises doing so for production environments. Therefore we support various vault backends that allow you to store credentials in a secure way. + +Given a simple inventory file that scans a Linux machine via SSH and password authentication: + +```yaml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-ssh-inventory + labels: + environment: production +spec: + assets: + # Linux with password authentication + - id: linux-with-password + connections: + - host: 192.168.178.28 + backend: ssh + credentials: + - user: chris + password: password1! # implicit type password +``` + +With this inventory, you can scan the machine: + +``` +mondoo scan —inventory inventory.yml +→ load inventory inventory=inventory.yml +``` + +Of course, we do not want to store credentials in plain text files. In the past we assumed that we can do that via systemd secret service. The problem is that this interface is only working well with Gnome and KDE and is mostly bundled with Desktop environments. This is problematic for headless server. + +To solve the issue meet Linux Kernel Key Management: + +> NOTE: An introduction to [Kernel key management]([Kernel key management LWN.net](https://lwn.net/Articles/210502/)) explains how it works. See [keyutils](https://manpages.debian.org/stretch/keyutils/keyctl.1.en.html) man page for more details +> +> On Debian `keyutils` need to be present to use the kernel key management: + +``` +apt-get install keyutils +``` + +Configure Mondoo’s vault to use the keyring `mondoo-client-vault` for secrets: + +``` +mondoo vault set mondoo-client-vault —type linux-kernel-keyring +→ set new vault configuration name=mondoo-client-vault +→ stored vault configuration successfully +``` + +Mondoo itself stores its configuration for vaults via Linux Kernel Key Management. The configuration is stored in `mondoo-cli-keyring` keyring and `user-vaults` key. + +``` +keyctl list @u +1 key in keyring: +599473326: --alswrv 1000 1000 keyring: mondoo-cli-keyring + +keyctl show 599473326 +Keyring + 599473326 --alswrv 1000 1000 keyring: mondoo-cli-keyring + 988442797 --alswrv 1000 1000 \_ user: user-vaults +``` + +Now we need to add a secret for a remove ssh connection. We set `mondoo-client-vault` as the key ring that Mondoo Client will use. + +```bash +# The format to add a key is as following +# keyctl add user {desc} {data} @u +keyctl add user 'secret for 192.168.178.28' '{ "user": "chris", "password": "password1!", "type": "password" }' @u +52720293 + +# Next, lets display the key within the keyring +keyctl list @u +1 key in keyring: + 52720293: --alswrv 1000 1000 user: secret for 192.168.178.28 + +# lets display the created key +keyctl print 52720293 +{ "user": "chris", "password": "password1!", "type": "password" } + +# Later, we can delete the key from user scope via: +# keyctl purge -p user "secret for 192.168.178.28" +``` + +Now we can adapt the inventory: + +```yaml +apiVersion: v1 +kind: Inventory +metadata: + name: mondoo-ssh-inventory + labels: + environment: production +spec: + assets: + # Linux with password authentication + - id: linux-with-password + connections: + - host: 192.168.178.28 + backend: ssh + credentials: + - secret_id: secret for 192.168.178.28 + vault: + name: mondoo-client-vault +``` + +### 🧹 IMPROVEMENTS + +- Add end-of-life information for vSphere 7.0.0 +- Improved handling for miss-configured `sudo` where SSH connections do not return the platform name properly +- Asset search is now case insensitive +- The AWS CloudFormation can be customized when creating the stack + +### 🐛 BUG FIXES AND UPDATES + +- Fix Linux policies to check correct `cron` package name based on distribution +- Fix not found handling in AWS S3 resource. This would cause fields to error out instead of returning null when they were not set +- Fix awsec2ebs transport to not error out when there are multiple volumes diff --git a/releases/2022-01-11-mondoo-5.21.0-is-out.md b/releases/2022-01-11-mondoo-5.21.0-is-out.md new file mode 100644 index 000000000..9461dbc4d --- /dev/null +++ b/releases/2022-01-11-mondoo-5.21.0-is-out.md @@ -0,0 +1,23 @@ +--- +slug: mondoo-5.21.0-is-out/ +title: Mondoo 5.21.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.21.0 is out! + +### 🧹 IMPROVEMENTS + +- Assets can be filtered by state +- The AWS integration uses the AWS account alias for the name +- Adds additional GCP Compute, DNS, BigQuery, and GKE checks +- Updates AWS policy with messages and new docs and metadata +- Allow `mondoo scan -t docker` instead of requiring `mondoo scan -t docker:// ...` + +### 🐛 BUG FIXES AND UPDATES + +- Fix issue where `aws.ec2.instances { vpc {*} }` would print errors about fields not being found +- Fix `aws.iam.credentialReport.accessKey2Active` field incorrectly mapping to access key 1 diff --git a/releases/2022-01-18-mondoo-5.22.0-is-out.md b/releases/2022-01-18-mondoo-5.22.0-is-out.md new file mode 100644 index 000000000..2a1779d80 --- /dev/null +++ b/releases/2022-01-18-mondoo-5.22.0-is-out.md @@ -0,0 +1,52 @@ +--- +slug: mondoo-5.22.0-is-out/ +title: Mondoo 5.22.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.22.0 is out! + +### 🎉 NEW FEATURES + +** Add the `where` method to `map` types ** + +Maps now have a `where` method that allows filtering by keys and values: + +```coffee +mondoo> {a: 1, b: 2, c: 3}.where(key == 'c') +``` + +```coffee +where: { + c: 3; +} +``` + +```coffee +mondoo> {a: 1, b: 2, c: 3}.where(value < 3) +``` + +```coffee +where: { + a: 1; + b: 2; +} +``` + +Currently, this only works with map types whose key is a string. + +### 🧹 IMPROVEMENTS + +- Allow using the `--insecure` flag with `--inventory` when using the Mondoo CLI +- Automatically delete the CloudFormation stack when the AWS integration is deleted +- Add `ownerAlias` field to the `aws.ec2.image` resource + +### 🐛 BUG FIXES AND UPDATES + +- Fix potential panic when using `mondoo scan` with the `--inventory` flag +- Fix Ansible inventory loading for tags and multiple groups +- Fix `echo` warning when using PowerShell over SSH +- Fix bug where AWS EBS volume scan did not work for SUSE diff --git a/releases/2022-01-25-mondoo-5.23.0-is-out.md b/releases/2022-01-25-mondoo-5.23.0-is-out.md new file mode 100644 index 000000000..c17578463 --- /dev/null +++ b/releases/2022-01-25-mondoo-5.23.0-is-out.md @@ -0,0 +1,41 @@ +--- +slug: mondoo-5.23.0-is-out/ +title: Mondoo 5.23.0 is out! +author: Victoria Jeffrey +author_title: Mondoo Core Team +author_url: https://github.com/vjeffrey +tags: [release, mondoo] +--- + +🥳 mondoo 5.23.0 is out! + +### 🎉 NEW FEATURES + +**AWS EC2 SSM Session Support** + +Use Mondoo to scan all your AWS SSM instances: + + mondoo scan -t aws-ec2-ssm://ec2-user@instance-id + +Specify the region and/or profile to use by including options: + + mondoo scan -t aws-ec2-ssm://ec2-user@instance-id --option region=us-east-2 profile=test_profile + +**K8s Transport Improvements** + +Scan a directory of Kubernetes manifests: + + mondoo scan -t k8s --path test/integration/k8s + +### 🧹 IMPROVEMENTS + +- Include the macOS build number in platform information +- Improved asset name for the github transport +- Add AWS account alias to AWS Account asset name +- Scoring consistency improvements +- Improved naming for Kubernetes cluster +- macOS package installation path no longer contains version number (eg: /Library/Mondoo/bin instead of /Library/Mondoo/5.22.0/bin) + +### 🐛 BUG FIXES AND UPDATES + +- Do not require AWS RDS encryption checks on instance types that do not support encryption diff --git a/releases/2022-01-27-mondoo-5.24.0-is-out.md b/releases/2022-01-27-mondoo-5.24.0-is-out.md new file mode 100644 index 000000000..b95a72101 --- /dev/null +++ b/releases/2022-01-27-mondoo-5.24.0-is-out.md @@ -0,0 +1,19 @@ +--- +slug: mondoo-5.24.0-is-out/ +title: Mondoo 5.24.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.24.0 is out! + +### 🧹 IMPROVEMENTS + +- `mondoo scan` now pages the output by default. This behavior can be disabled with the `--no-pager` flag + +### 🐛 BUG FIXES AND UPDATES + +- Fix bug where queries with multiple properties of the same value cause the execution to timeout +- Fix bug where certain queries that error cause the execution to timeout diff --git a/releases/2022-02-01-mondoo-5.25.0-is-out.md b/releases/2022-02-01-mondoo-5.25.0-is-out.md new file mode 100644 index 000000000..28d378c60 --- /dev/null +++ b/releases/2022-02-01-mondoo-5.25.0-is-out.md @@ -0,0 +1,84 @@ +--- +slug: mondoo-5.25.0-is-out/ +title: Mondoo 5.25.0 is out! +author: Kyleen MacGugan +author_title: Mondoo Core Team +author_url: https://github.com/kmacgugan +tags: [release, mondoo] +--- + +🥳 mondoo 5.25.0 is out! + +### 🎉 NEW FEATURES + +**Improved mondoo inventory command** + +Debugging the inventory was not easy since most of the details were hidden. This made it difficult to tell users when to e.g. convert files. To mitigate this, we are adding two new commands: + +- `mondoo inventory init` - creates a new sample inventory file +- `mondoo inventory convert` - e.g converts an ansible inventory to a Mondoo inventory + +Example: + +``` +mondoo inventory convert --inventory-fileraspi-scan.json --inventory-ansible +→ load inventory inventory=raspi-scan.json +metadata: {} +spec: + assets: + - connections: + - Sudo: {} + backend: 3 + credentials: + - secret_id: 24SXpBDcZRg85oDU4MSsqm6S2iH + host: raspberrypi + name: instance1 + credentials: + 24SXpBDcZRg85oDU4MSsqm6S2iH: + private_key_path: /Users/chris/.ssh/chris-rock.rsa + secret: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUl + secret_id: 24SXpBDcZRg85oDU4MSsqm6S2iH + type: private_key + user: pi +``` + +**Organization Resolver for Google Cloud** + +With this new change, we are adding support to discover projects for GCP organizations. +There are two methods to scan projects in GCP listed below. + +Method 1: Auto-discovers current project from gcloud + +```bash +mondoo scan -t gcp +``` + +Method 2: Provide a specific project + +```bash +mondoo scan -t gcp --option project=your_project +``` + +We added the ability to discover all projects by adding the `--option organization=12345678` and `--discover projects` flags. Here is an example: + +``` +$ gcloud organizations list +mondoo.com 12345678 AAAAB7cc5 + +$ mondoo scan -t gcp --option organization=12345678 --discover projects +``` + +### 🧹 IMPROVEMENTS + +- Allow user to specify pagination command using the `PAGER` environment variable or `--pager 'pagerCmd'` flag +- Add createTime field to `aws.ec2.volume` resource +- The inventory flags for the mondoo CLI have been harmonized: + - `--inventory` has been deprecated in favor of `--inventory-file` + - `--ansible-inventory` has been deprecated in favor of `--inventory-ansible` + - `--domainlist-inventory` has been deprecated in favor of `--inventory-domainlist` + +### 🐛 BUG FIXES AND UPDATES + +- Fix bug where mondoo command would try to use less pager when it wasn't available on the system +- Fix bug where an incorrect stop execution error message was printed +- Fix bug where certain errors could cause execution to stall diff --git a/releases/2022-02-08-mondoo-5.26.0-is-out.md b/releases/2022-02-08-mondoo-5.26.0-is-out.md new file mode 100644 index 000000000..05b968ed8 --- /dev/null +++ b/releases/2022-02-08-mondoo-5.26.0-is-out.md @@ -0,0 +1,33 @@ +--- +slug: mondoo-5.26.0-is-out/ +title: Mondoo 5.26.0 is out! +author: Jay Mundrawala +author_title: Mondoo Core Team +author_url: https://github.com/jaym +tags: [release, mondoo] +--- + +🥳 mondoo 5.26.0 is out! + +### 🎉 NEW FEATURES + +**Add MQL resource to query k8s secret resources** + +```coffee +mondoo> k8s.secrets.where(namespace == "default") { name namespace manifest["kind"] } +k8s.secrets.where: [ + 0: { + name: "default-token-89ft8" + namespace: "default" + manifest[kind]: "Secret" + } +] +``` + +### 🐛 BUG FIXES AND UPDATES + +- Fix false positive for Debian `postgresql-common` advisory +- Fix issue where first keystroke was ignored by pager when running `mondoo scan` +- Fix case where APK versions where not compared properly when prefixed with epochs +- Fix pager to work with `more` +- Fix k8s namespace resource instantiation diff --git a/releases/2022-02-15-mondoo-5.27.0-is-out.md b/releases/2022-02-15-mondoo-5.27.0-is-out.md new file mode 100644 index 000000000..22ff437bc --- /dev/null +++ b/releases/2022-02-15-mondoo-5.27.0-is-out.md @@ -0,0 +1,56 @@ +--- +slug: mondoo-5.27.0-is-out/ +title: Mondoo 5.27.0 is out! +author: Victoria Jeffrey +author_title: Mondoo Core Team +author_url: https://github.com/vjeffrey +tags: [release, mondoo] +--- + +🥳 mondoo 5.27.0 is out! + +### 🎉 NEW FEATURES + + ESXi command resource + +Connect to a specific ESXi host: + +```bash +mondoo shell -t vsphere://root@192.168.178.30 --ask-pass --discover host-machines --platform-id //platformid.api.mondoo.app/runtime/vsphere/instance/ha-host/moid/HostSystem-ha-host +``` + +Then run the command and retrieve the results: + +```coffee +mondoo> esxi.command("system coredump network get").result +esxi.command.result: [ + 0: { + Enabled: "false" + HostVNic: "" + IsUsingIPv6: "false" + NetworkServerIP: "" + NetworkServerPort: "0" + } +] +``` + +When you connect to vSphere's API you can combine the resource with each host: + +```coffee +vsphere.datacenters { + hosts { + inventoryPath + esxi.command(command: "system coredump network get", inventoryPath: inventoryPath).result + } +} +``` + +### 🧹 IMPROVEMENTS + +- Linux policy updates +- New vulnerability report api, UI view coming soon! +- Split the VMware policy between vsphere and vsphere-esxi + +### 🐛 BUG FIXES AND UPDATES + +- AWS integration: fix `AddPermissions` error recorded in CloudWatch logs when trying to update the lambda function policy diff --git a/releases/2022-02-23-mondoo-5.28.0-is-out.md b/releases/2022-02-23-mondoo-5.28.0-is-out.md new file mode 100644 index 000000000..491c79f1b --- /dev/null +++ b/releases/2022-02-23-mondoo-5.28.0-is-out.md @@ -0,0 +1,32 @@ +--- +slug: mondoo-5.28.0-is-out/ +title: Mondoo 5.28.0 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 mondoo 5.28.0 is out! + +### 🎉 NEW FEATURES + +**Space Vulnerability Views** + +Mondoo has always supported inspecting an asset to track which CVEs and advisories apply. Starting today, it's now simple to also follow CVEs and advisories to understand which assets they impact. + +![cve-2022-22823](/img/releases/2022-02-23-mondoo-5.28.0-is-out/cve-2022-22823.png) + +To use the new view, open the Policy Hub and then view the Platform Vulnerability policy. The new Advisories and Vulnerabilities tabs will list all vulnerabilities and advisories applicable to assets in the fleet. Sort these by CVSS criticality, date of the first detection, or the number of assets impacted to find the highest-impact issues in your environment. + +![platform-vulnerability-policy](/img/releases/2022-02-23-mondoo-5.28.0-is-out/platform-vulnerability-policy.png) + +### 🧹 IMPROVEMENTS + +- There is now a setting to remove terminated assets under the Space Settings tab. + +Mondoo keeps an inventory of every unique asset it scans. However, some people frequently create and destroy hosts and containers, especially in cloud environments. Over time, this can lead to Mondoo tracking hundreds or even thousands of assets that no longer exist and never will again. + +This new setting tells Mondoo to no longer inventory cloud-based assets destroyed by a cloud provider. The setting defaults to true for all spaces created after February 18, 2022. For spaces created prior to this date, the setting will remain false. + +![RemoveTerminatedAssets](/img/releases/2022-02-23-mondoo-5.28.0-is-out/remove-terminated-assets.png) diff --git a/releases/2022-03-01-mondoo-5.29.1-is-out.md b/releases/2022-03-01-mondoo-5.29.1-is-out.md new file mode 100644 index 000000000..664257c8d --- /dev/null +++ b/releases/2022-03-01-mondoo-5.29.1-is-out.md @@ -0,0 +1,38 @@ +--- +slug: mondoo-5.29.1-is-out/ +title: Mondoo 5.29.1 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo, operator, kubernetes] +--- + +🥳 mondoo 5.29.1 is out! + +### 🎉 NEW FEATURES + +**CIS Amazon Linux 2 Policy Certification** + +This week, the "CIS Amazon Linux 2" policy becomes the 10th addition to Mondoo's suite of CIS-certified policies. We now offer CIS-certified policies for: + +- Amazon Linux +- AWS +- CentOS +- Debian +- macOS +- Red Hat Enterprise Linux versions 6, 7, and 8 +- Windows 2019 +- And more! + +There are more CIS-certified policies on the way. Evaluate your assets against these policies and many more, free from the Policy Hub. + +**Kubernetes Operator is available** + +We're excited to announce Early Access to our [Mondoo Operator for Kubernetes](https://github.com/mondoohq/mondoo-operator). You can easily integrate the Mondoo Operator into your existing deployment strategies using Helm, OLM, or Kubectl. In addition, the operator will scan both your deployed workloads and your Kubernetes nodes without requiring any additional access! We're eager to hear your feedback and hope you love it as much as we do. + +### 🧹 IMPROVEMENTS + +**Custom Labels** + +- We now support the `--annotation` flag when running scans for adding custom labels to assets. + An enhanced view of labels on assets will be coming to the UI in an upcoming release. diff --git a/releases/2022-03-15-mondoo-5.30.0-is-out.md b/releases/2022-03-15-mondoo-5.30.0-is-out.md new file mode 100644 index 000000000..c4f26d639 --- /dev/null +++ b/releases/2022-03-15-mondoo-5.30.0-is-out.md @@ -0,0 +1,16 @@ +--- +slug: mondoo-5.30.0-is-out/ +title: Mondoo 5.30.0 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 mondoo 5.30.0 is out! + +### 🧹 IMPROVEMENTS + +**Better, stronger, faster** + +- This version is all under-the-hood improvements. If we were an iOS app, this message would read, "Bug fixes and performance improvements." diff --git a/releases/2022-03-21-mondoo-5.31.0-is-out.md b/releases/2022-03-21-mondoo-5.31.0-is-out.md new file mode 100644 index 000000000..d4a063116 --- /dev/null +++ b/releases/2022-03-21-mondoo-5.31.0-is-out.md @@ -0,0 +1,41 @@ +--- +slug: mondoo-5.31.0-is-out/ +title: Mondoo 5.31.0 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo, operator, kubernetes, aws, tutorials] +--- + +🥳 mondoo 5.31.0 is out! + +### 🎉 NEW FEATURES + +**New Getting Started Guide for AWS** + +We've launched a new getting started path for people who want to [Try out Mondoo with AWS](https://console.mondoo.com/aws-guide). Learn how to set up Mondoo in AWS CloudShell or your local laptop, and policy scan your AWS account in just a few minutes. + +We've also revamped the Getting Started section of the [Mondoo documentation site](https://mondoo.com/docs/). We've released new tutorials for getting started not just with AWS, but also Azure, Google Cloud, Kubernetes, VMware, Docker, and more. + +**CIS Amazon Linux 2 Policy Certification** + +This week, the "CIS Amazon Linux 2" policy becomes the eleventh addition to Mondoo's suite of CIS-certified policies. For more information about our growing collection of CIS-certified policies, see the [Mondoo 5.29.1 Release Notes](./2022-03-01-mondoo-5.29.1-is-out.md) from earlier this month. + +**Expanded Platform Support with Chef** + +The [Mondoo Chef Infra Cookbook](https://supermarket.chef.io/cookbooks/mondoo) 0.3.0 is out with expanded platform support for openSUSE, SLES, Fedora, Rocky Linux, and Scientific Linux distros. Use this cookbook to install Mondoo Client and register new nodes automatically with Mondoo Platform. + +### 🧹 IMPROVEMENTS + +**Terraform Improvements** + +- 🐛 Bugfixes to the Terraform AWS policy. +- ⭐️ Terraform support has been updated to better support breaking changes in Terraform providers. + +**Kubernetes Operator Improvements** + +- ⭐️ Prometheus metrics are now exposed by the operator. + +**MQL Improvements** + +- `containerImage` and `containerRepository` are now supported MQL resources. diff --git a/releases/2022-03-30-mondoo-5.32.0-is-out.md b/releases/2022-03-30-mondoo-5.32.0-is-out.md new file mode 100644 index 000000000..2868f25fd --- /dev/null +++ b/releases/2022-03-30-mondoo-5.32.0-is-out.md @@ -0,0 +1,55 @@ +--- +slug: mondoo-5.32.0-is-out/ +title: Mondoo 5.32.0 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +Mondoo 5.32.0 is out. The Big features this release: A re-designed and improved Policy Hub, full support for AlmaLinux, and a new color scheme for the UI! + +## 🎉 NEW FEATURES + +### **Re-designed Policy Hub** + +We've re-designed the Policy Hub with many new features. The Policy Hub now helps you quickly understand much greater nuance about your policies. Policy scores let you see at a glance which policies have the broadest adherence or divergence in your organization. The assets count shows which policies have the widest impact across your fleet of assets. And un-used policies are now hidden by default. + +![policy_hub](/img/releases/2022-03-30-mondoo-5.32.0-is-out/policy_hub.png) + +**Asset View** + +The individual policy view now has an asset tab. This tab displays the policy score for each asset to which the policy applies. + +![policy_hub](/img/releases/2022-03-30-mondoo-5.32.0-is-out/individual_policy.png) + +**Hide un-used policies** + +The Policy Hub now only shows policies that have been enabled in the Space. + +Previously, the Policy Hub would display all available policies, even if those policies had not been enabled for the Space. To show new policies, use the "Add Policy" button. + +### **AlmaLinux Support** + +Mondoo now includes support for the latest Red Hat Linux derivative, AlmaLinux. This includes updates to the client install scripts, Chef Infra cookbook support, and new AlmaLinux OS 8 CIS Level 1 and 2 benchmarks. + +### **New Colors** + +The Mondoo console has been refreshed with a new color scheme. As a result, text pops and graphs are much easier to differentiate. + +### 🧹 IMPROVEMENTS + +**New and Improved Policies** + +We've been busy this week expanding and improving our out of the box policies with a number of new early access policies now available: + +- New Amazon Elastic Kubernetes Service (EKS) Level 1 / 2 CIS benchmarks +- New early access Terraform Static Analysis Policy for AWS EKS policy +- New early access GitLab Baseline by Mondoo +- Updated SLES 12 and 15 CIS benchmarks to version 1.1.1 +- Expanded the queries in our RHEL 8 CIS benchmarks +- Improved the Kubernetes Application Benchmark by Mondoo + +**Updated Client Install Script** + +Our Mondoo Client install.sh script now supports AlmaLinux, Rocky Linux, and macOS systems without Homebrew. diff --git a/releases/2022-04-05-mondoo-5.33.0-is-out.md b/releases/2022-04-05-mondoo-5.33.0-is-out.md new file mode 100644 index 000000000..9ed27c5e9 --- /dev/null +++ b/releases/2022-04-05-mondoo-5.33.0-is-out.md @@ -0,0 +1,24 @@ +--- +slug: mondoo-5.33.0-is-out/ +title: Mondoo 5.33.0 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo, CIS] +--- + +🥳 Mondoo 5.33.0 is out. The Big features this release: New CIS certified policies! + +## 🎉 NEW FEATURES + +### **CIS Certified Red Hat Linux Policies** + +This week we welcome more new additions to Mondoo's suite of CIS-certified policies. Mondoo now offers CIS-certified policies for Red Hat Enterprise Linux 7, and Red Hat Enterprise Linux 8. + +The [full list of CIS certified Mondoo Policies](https://www.cisecurity.org/partner/mondoo/) is always visible on the Center for Internet Security's website. + +## 🧹 IMPROVEMENTS + +### **Better, stronger, faster** + +- Several minor bug fixes and improvements for forthcoming features. diff --git a/releases/2022-04-12-mondoo-5.34.1-is-out.md b/releases/2022-04-12-mondoo-5.34.1-is-out.md new file mode 100644 index 000000000..0afdbded6 --- /dev/null +++ b/releases/2022-04-12-mondoo-5.34.1-is-out.md @@ -0,0 +1,60 @@ +--- +slug: mondoo-5.34.1-is-out/ +title: Mondoo 5.34.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 5.34.1 is out. The big features this release: User defined asset tags and new Mondoo.com API endpoints + +## 🚚 Mondoo Domain Change + +Mondoo has moved to .com! As of April 12th we’ve officially migrated our web console to https://console.mondoo.com and API to `https://us.api.mondoo.com`. The previous URL’s will redirect to the new locations until they are EOL’ed later this year. We encourage you to update your bookmarks and Mondoo Client configurations. All new configurations generated by Mondoo will use the new API location. + +Mondoo 5.34.1 includes a migrate sub-command that can automatically update your Mondoo configuration to the new API endpoint: + +```bash +## Check which API Endpoint we're using: +$ cat .config/mondoo/mondoo.yml | yq .api_endpoint +https://api.mondoo.app + +## Upgrade the config: +$ mondoo migrate +→ Migrate Mondoo CLI configuration: +→ loaded configuration from /home/benr/.config/mondoo/mondoo.yml +→ saving mondoo config path=/home/benr/.config/mondoo/mondoo.yml +→ migrated configuration successfully + +## Check the new API endpoint: +$ cat .config/mondoo/mondoo.yml | yq .api_endpoint +https://us.api.mondoo.com # <-- Good! +``` + +## 🎉 NEW FEATURES + +### **User Defined, Editable Tags for Assets** + +Organization is the name of the game, and we're ready to help you spring clean. No more wondering what belongs where. Create custom tags right from the UI to help better manage your growing list of Assets. Get started today by selecting the 'plus' button next to Annotations in your Asset Configuration tab - your future self will thank you. + +![console-annotations](/img/releases/2022-04-12-mondoo-5.34.1-is-out/console-annotations.png) + +## 🧹 IMPROVEMENTS + +### **Improved EOL OS Detection** + +Mondoo now includes improved end-of-life operating systems detection with new VMware Photon / Oracle Linux support and updated EOL information for Ubuntu, Scientific Linux, Fedora, and macOS. + +### **Kubernetes Operator Improvements** + +Our preview Kubernetes Operator release 0.2.3 shipped with several improvements for added reliability in scanning: + +- Operator pods now include readiness probes. +- Operator status information reports in the `MondooAuditConfig` CR +- Users can now skip the resolution of the Mondoo Client container image if necessary. +- Operator resource limits have been lowered to limit cluster impact. + +### **Updated Output in `mondoo policy` commands** + +The `mondoo policy describe` and `mondoo policy list` commands have been updated with a fresh new output format to improve readability. `mondoo policy list` now also includes policy version information, and a new `--list-all` flag lets you list all private, public, and enabled policies at once. diff --git a/releases/2022-04-19-mondoo-5.35.0-is-out.md b/releases/2022-04-19-mondoo-5.35.0-is-out.md new file mode 100644 index 000000000..095d2d79f --- /dev/null +++ b/releases/2022-04-19-mondoo-5.35.0-is-out.md @@ -0,0 +1,62 @@ +--- +slug: mondoo-5.35.0-is-out/ +title: Mondoo 5.35.0 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 Mondoo 5.35.0 is out. This release's big features: Search assets by tags, new UI elements, and new Windows resources. + +## 🎉 NEW FEATURES + +### **Search assets by tag and annotation key/value** + +The search box in the fleet view now filters assets by tags and annotations. This simple feature adds a lot of power! For example, you can now search across multiple AWS accounts for assets with the same tag. But as cool as that is, we'll do you one better: You can also search across multiple _cloud providers._ Or GitHub accounts. Or... you get the idea. + +### **New graphs on the web console** + +The Mondoo Web Console has two new sets of graphs to help you see the state of your assets at a glance! First, the new radial graphs now show the breakdown of your assets by score. Mouse hovers provide more detailed information from the dashboard. + +![New radial graphs](/img/releases/2022-04-19-mondoo-5.35.0-is-out/radials.png) + +If you select the fleet view, you'll see a new bar graph showing the same distribution of assets by letter grade. + +![New bar graphs](/img/releases/2022-04-19-mondoo-5.35.0-is-out/bars.png) + +And of course, it all looks great! + +### **Add annotations to assets via the config** + +To create specific annotations for all assets when scanning via the mondoo agent, set the following config string: + +```yaml +--- +annotations: + mdm: annotation +``` + +### **New Windows Resources** + +Mondoo now includes new resources for better examining the security of Windows systems out of the box: + +- [Windows BitLocker Volume](/mql/resources/os-pack/windows.bitlocker.volume/) +- [Windows Security Health](/mql/resources/os-pack/windows.security.health/) +- [Windows Security Product](/mql/resources/os-pack/windows.security.product/) + +## 🧹 IMPROVEMENTS + +### Additional CI System Data + +Mondoo now gathers more CI environment labels on GitLab, GitHub Actions, and Travis-CI. + +### Mondoo Kubernetes Operator Improvements + +The Mondoo Kubernetes operator now scans Kubernetes Deployments in addition to Pods. See the full [Operator release notes](https://github.com/mondoohq/mondoo-operator/releases/tag/v0.2.4) on the [GitHub project](https://github.com/mondoohq/mondoo-operator). + +## 🐛 BUGFIXES + +- Fixed harbor integration scanning +- Updated the CLI output colors on macOS systems to improve the readability of error messages +- Fixed the display of Spaces on mobile devices diff --git a/releases/2022-04-26-mondoo-5.36.1-is-out.md b/releases/2022-04-26-mondoo-5.36.1-is-out.md new file mode 100644 index 000000000..8d8079a5f --- /dev/null +++ b/releases/2022-04-26-mondoo-5.36.1-is-out.md @@ -0,0 +1,45 @@ +--- +slug: mondoo-5.36.1-is-out/ +title: Mondoo 5.36.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 5.36.1 is out. This release's big features: EBS Volume based instance Scanning, Colorblind mode, and policy updates! + +## 🎉 NEW FEATURES + +### **Colorblind Mode** + +A new user setting allows you to change to a colorblind-friendly color palette throughout the UI. + +![User Settings](/img/releases/2022-04-26-mondoo-5.36.1-is-out/setting.png) + +![Colorblind Space](/img/releases/2022-04-26-mondoo-5.36.1-is-out/colorblind_mode.png) + +### **AWS EBS Volume based Instance Scanning** + +The Mondoo AWS Integration now includes the ability to scan instances using instance EBS volume data. This method does not require credentials or a client installation for scanning and can even scan stopped instances. Users can enable this feature and change how scanning occurs in this AWS integration configuration page. + +![EBS Settings](/img/releases/2022-04-26-mondoo-5.36.1-is-out/ebs_settings.png) + +## 🧹 IMPROVEMENTS + +### Linux Security Baseline Updates + +We've made a number of improvements to our out of the box security policy this week. Our Linux Security Baseline by Mondoo is now more reliable. Many queries have been improved to work better on different Linux distributions and to better handle running in containers. We've also improved the query output and remediation instructions to make it easier to resolve discovered issues. + +### Rocky Linux CIS Benchmarks + +Mondoo now includes the Rocky Linux CIS Level 1 and 2 Server benchmarks. See the [CIS Rocky Linux Benchmarks](https://www.cisecurity.org/benchmark/rocky_linux) page for more information on these benchmarks. + +### Mondoo Kubernetes Operator Improvements + +The [Mondoo Kubernetes Operator 0.2.5](https://github.com/mondoohq/mondoo-operator/releases/tag/v0.2.5) has been released with Kubernetes Workload scanning and the ability to scan Rancher provisioned controlplane and etcd nodes. + +## 🐛 BUGFIXES + +- Fixed a crash when scanning with invalid credentials +- Fixed a crash when retrieving anti-spyware security product details on Windows diff --git a/releases/2022-05-03-mondoo-5.37-is-out.md b/releases/2022-05-03-mondoo-5.37-is-out.md new file mode 100644 index 000000000..3bf0b870f --- /dev/null +++ b/releases/2022-05-03-mondoo-5.37-is-out.md @@ -0,0 +1,79 @@ +--- +slug: mondoo-5.37.0-is-out/ +title: Mondoo 5.37.0 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 5.37.0 is out. This release's big features: Windows, Windows, and more Windows! Updated CIS benchmarks, expanded vulnerability scanning, and much more. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Expanded Windows Platform Support + +**New and Updated CIS Benchmarks** + +New CIS Windows 11 and Windows 2022 benchmarks version 1.0 are available in the Mondoo Policy Hub. We've also updated our existing CIS benchmarks for Windows to the latest CIS releases: + +- Windows 2016 updated to 1.3.0 +- Windows 2019 updated to 1.3.0 +- Windows 10 updated to 1.12.0 + +**Windows 10 and 11 Security Advisories** + +The Mondoo Platform Vulnerability Policy now includes security advisory and CVE reporting for Windows 10 and 11. We've also made improvements to ensure that systems with many security advisories correctly report the complete set. + +![Unpatched Windows 10 Scan](/img/releases/2022-05-03-mondoo-5.37-is-out/windows_10_advisories.png) + +**Windows 10 and 11 Platform EOL Dates** + +The Mondoo Platform End-of-Life Policy includes EOL data for Windows 10 and 11. + +![Non-EOL Windows 10 Scan](/img/releases/2022-05-03-mondoo-5.37-is-out/eol_reporting.png) + +**Kubernetes Deployment Scans** + +The Mondoo Kubernetes operator's admission controller now includes full scanning of each Kubernetes deployment and pod. With the admission controller enabled, these scans will show up in the fleet view. See the [mondoo-operator](https://github.com/mondoohq/mondoo-operator) repo for more details. Stay tuned for a guided operator setup and improved UI experience coming soon. + +## 🧹 IMPROVEMENTS + +**New `ssh-host-key` id-detector** + +You can now identify the system you're scanning through the `ssh-host-key` with the `--id-detector` CLI flag. + +```bash +mondoo scan --id-detector ssh-host-key +``` + +**New Ubuntu Security Advisory Data** + +The Mondoo Platform Vulnerability Policy now includes security advisory data for Ubuntu 22.04 and the upcoming Ubuntu 22.10 release. + +**New UI Color Theme** + +The Mondoo CLI output has a new color theme to better match the output you see in the Mondoo console. + +**Improved Output in Kubernetes Application Benchmark** + +The output in the Kubernetes Application Benchmark by Mondoo now displays the pod name and namespace in the query output. With this information, you can trace vulnerable pods back to their manifests. + +**Pop!\_OS Support** + +Mondoo now detects and scans the Pop!\_OS Linux distribution by System76. + +## 🐛 BUGFIXES + +- Fix loading of `id-detector` config option for `mondoo scan` +- Fix handling of non-existing registry keys on Windows +- Fix several detection errors in Mondoo Security Baseline policies: + - Improve reliability of Auditd state to prevent errors checking state + - Don't fail when `/etc/group-` doesn't exist on a system + - Add a new query on Windows hosts to make sure users don't have the privilege to attach debuggers diff --git a/releases/2022-05-10-mondoo-5.38.1-is-out.md b/releases/2022-05-10-mondoo-5.38.1-is-out.md new file mode 100644 index 000000000..411454a5f --- /dev/null +++ b/releases/2022-05-10-mondoo-5.38.1-is-out.md @@ -0,0 +1,35 @@ +--- +slug: mondoo-5.38.1-is-out/ +title: Mondoo 5.38.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 5.38.1 is out. This release includes policy updates and lays the foundation for big things to come + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Ubuntu 20.04 CIS Benchmark Certification + +The Mondoo Ubuntu 20.04 Level 1 and Level 2 CIS Benchmarks are now officially CIS certified. See the [Mondoo cisecurity.org page](https://www.cisecurity.org/partner/mondoo) for a complete list of our CIS certified benchmarks and stay tuned for more certified benchmarks in the coming weeks. + +## 🧹 IMPROVEMENTS + +**Kubernetes Operator Updates** + +Our Mondoo Kubernetes Operator has seen yet another round of important improvements as we work towards the general availability of the operator next week. Kubernetes cluster node scanning now occurs using a Kubernetes CronJob instead of running the agent at all times on each node, saving CPU and memory resources. We've also added some behind the scenes capabilities required for registering the operator using a short-lived registration token instead of a full Mondoo service account. This keeps secrets out of the user's shell history when configuring the operator in the cluster. Our upcoming integrations setup workflow in the Mondoo console will use this new capability to securely deploy the operator to your clusters. + +## 🐛 BUGFIXES + +- Fix incorrect remediation steps for multiple queries in the Linux Security Baseline by Mondoo policy: + - `Ensure the audit configuration is immutable` + - `Ensure permissions on /etc/passwd- are configured` + - `Ensure permissions on /etc/group- are configured` +- Fix errors in Linux Security Baseline by Mondoo policy when `/etc/passwd-` or `/etc/gshadow-` doesn't exist. +- Fix errors in Kubernetes Application Benchmark by Mondoo's query `Pod should not run with default service account`. diff --git a/releases/2022-05-17-mondoo-5.39-is-out.md b/releases/2022-05-17-mondoo-5.39-is-out.md new file mode 100644 index 000000000..5b53c8004 --- /dev/null +++ b/releases/2022-05-17-mondoo-5.39-is-out.md @@ -0,0 +1,55 @@ +--- +slug: mondoo-5.39.0-is-out/ +title: Mondoo 5.39.0 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 Mondoo 5.39 is out. Lots of significant features in this release! We're all about continuous integration/continuous delivery and Kubernetes. Also, check out Mondoo on the GitHub Actions marketplace! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### New CI/CD integrations + +To help you better visualize scans of CI/CD pipelines, we've added new specialized views to the Mondoo Console. Of course, Mondoo already lets you scan infrastructure artifacts during the build process, such as Kubernetes Manifests, Terraform code, and Docker images. But now, you can use Mondoo to compare different builds and branches and see how they compare to one another. + +[Check out the official documentation and get started today!](/platform/infra/supply/cicd/overview/) + +![CI-CD Examples](/img/releases/2022-05-17-mondoo-5.39-is-out/ci-cd-secure-container-build.png) + +### Mondoo is in the GitHub Marketplace + +To go with our new GitHub CI/CD views, Mondoo is now available as an action in the GitHub Marketplace. Use Mondoo with GitHub Actions to scan Kubernetes Manifests, Terraform configuration files, and Docker images. See examples and full setup instructions on [our page in the GitHub Marketplace](https://github.com/marketplace/actions/mondoo-action). + +[GitHub Marketplace - Mondoo Action](https://github.com/marketplace/actions/mondoo-action) +![GitHub Marketplace](/img/releases/2022-05-17-mondoo-5.39-is-out/github-marketplace.png) + +### Kubernetes integrations + +With the Mondoo Kubernetes Operator, you can now continuously validate your deployed workloads and assess the configuration and security of the nodes running your kubelets. Couple this with the Mondoo Admission Controller and Mondoo's support for scanning Kubernetes Manifests in the CI/CD pipeline. Mondoo provides a complete, end-to-end solution for securing Kubernetes from commit to production. + +![Kubernetes in Mondoo](/img/releases/2022-05-17-mondoo-5.39-is-out/kubernetes-asset.png) + +## 🧹 IMPROVEMENTS + +### New asset page + +We've given the individual asset view a beautiful new makeover. Graphs and scorecards help you understand how your assets stack up against policy at a glance, and the integrated filters make it easy to find the most relevant policies. + +![New Asset View](/img/releases/2022-05-17-mondoo-5.39-is-out/asset-view.png) + +### Kubernetes policy improvements + +We've added new controls and queries to the Kubernetes policies. + +## 🐛 BUGFIXES + +- Fix to offline EBS volume scanning for AWS - Resolves an issue where the Mondoo Client would sometimes mount the wrong filesystem during offline EBS volume scans. diff --git a/releases/2022-05-24-mondoo-6.0.0-is-out.md b/releases/2022-05-24-mondoo-6.0.0-is-out.md new file mode 100644 index 000000000..6915b0a6d --- /dev/null +++ b/releases/2022-05-24-mondoo-6.0.0-is-out.md @@ -0,0 +1,210 @@ +--- +slug: mondoo-6.0.0-is-out/ +title: Mondoo 6.0 is out! +author: Dominik Richter +author_title: Mondoo Core Team +author_url: https://github.com/arlimus +tags: [release, mondoo] +--- + +🥳 Mondoo 6.0 is out. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +We have just hit a major milestone - Mondoo’s 6.0 release! This version includes many changes we’re eager to share with you: + +- [🎉 NEW FEATURES](#-new-features) + - [CLI scan providers](#cli-scan-providers) + - [CLI reports overhaul](#cli-reports-overhaul) + - [Exit codes and score thresholds](#exit-codes-and-score-thresholds) + - [AWS Organization integration](#aws-organization-integration) +- [🧹 IMPROVEMENTS](#-improvements) + - [MQL improvements](#mql-improvements) + - [CI/CD detection](#cicd-detection) +- [🐛 BUGFIXES](#-bugfixes) + +Most of these changes have been available hidden behind feature flags and CLI options for a while now. This release changes the default experience to make them available to everyone. + +**Is it difficult to upgrade?** + +Not at all! We have kept most things backwards-compatible with v5. In most cases you should only see a few deprecation warnings asking you to use new CLI options. The few breaking changes are outlined below. + +**Breaking changes** + +- `mondoo scan` now uses the exit code 0 whenever the scan is successfully executed. Previously we used non-zero exit codes when a scan didn’t achieve a perfect score. This change makes it easier to use Mondoo in a CI/CD. See [the section on exit codes] below. +- `mondoo scan` without additional arguments no longer automatically scans your local system. We changed this to prevent you from accidentally scanning your local OS. Run `mondoo scan local` to scan your local system. Check out our new [scan providers] for more targets below. +- The default CLI reporter has changed to `compact` mode, which doesn’t rely on pagination and prints a much shorter summary. See [CLI reports] for more information. +- When you run `mondoo scan` with a `--policy-bundle`, the option `--incognito` is now used by default instead of printing an error and aborting. + +**Deprecations** + +All deprecations will be supported throughout the lifetime of Mondoo v6. We will remove them when we release Mondoo v7. + +- The `-t` and `--connection` options for `mondoo scan`, `mondoo exec` and `mondoo shell` have been deprecated. Please use [scan providers] instead. +- The `--exit-0-on-success` option has been deprecated and is the new default. Feel free to remove it. See [the section on exit codes]. + +## 🎉 NEW FEATURES + +### CLI scan providers + +**Problem:** Mondoo can scan many different targets, from your local machine, to remote machines via SSH or WinRM, to cloud systems like AWS or Azure, and even arbitrary APIs. These are specified via the `--connection` or `-t` option in the CLI. Unfortunately, it was difficult to use this option effectively, partly due to the wide range of targets and parameters that were supported. + +**Solution:** We are providing a new way to target assets with this release. The `scan` command has changed from: + +``` +mondoo scan -t :// +mondoo scan --connection :// +``` + +to + +``` +mondoo scan +``` + +To access a list of all available providers, type: + +``` +mondoo scan -h +``` + +``` +Usage: + mondoo scan [flags] + mondoo scan [command] + +Available commands: + arista Scan an Arista endpoint + aws Scan an AWS account or instance + azure Scan a Microsoft Azure account or instance + container Scan a container, an image, or a registry + docker Scan a Docker container or image + gcp Scan a Google Cloud Platform (GCP) account + github Scan a GitHub organization + gitlab Scan a GitLab group + host Scan a host endpoint + k8s Scan a Kubernetes cluster + local Scan a local target + mock Scan a mock target (a simulated asset) + ms365 Scan a Microsoft 365 endpoint + ssh Scan a SSH target + terraform Scan all Terraform files in a path (.tf files) + vagrant Scan a Vagrant host + vsphere Scan a VMware vSphere API endpoint + winrm Scan a WinRM target +``` + +You can find more information on every provider with the `-h` or `--help` option. For example: + +``` +mondoo scan container -h +``` + +Here are a few more examples of `mondoo scan` with different providers: + +``` +mondoo scan local +mondoo scan ssh user@host +mondoo scan container b62b +mondoo scan container image ubuntu:20.04 +mondoo scan aws +``` + +### CLI reports overhaul + +**Problem:** The default CLI reports used a lot of screen space to convey their findings. They also printed from top to bottom, with a summary and a lot of information below, which forced us to default to pagination for these reports to avoid scrolling. These reports are helpful for security audits, but they didn’t help most other CLI users. + +**Solution:** We have designed a new report whose primary audience is developers and operations experts. This means that we now print a list of controls and data queries first, then list vulnerabilities, and then finish with a short summary. We deactivated the pagination. The default report is also much more compact: + +``` +mondoo scan local +# OR +mondoo scan local -o compact +``` + +To get more information about individual controls, use the `full` formatter: + +```bash +mondoo scan local -o full +``` + +Here is an example of compact (left) versus full (right) output side-by-side for the scan scan: + +![Mondoo6 Compact vs Full Output](/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-compact-vs-full.png) + +You can access the auditor- and security-centric report via `-o report`. This was the default output before v6. + +You can list all output formats: + +```bash +mondoo scan -o help +``` + +``` +Available output formats: junit, compact, full, report, json, csv, yaml +``` + +### Exit codes and score thresholds + +**Problem:** Whenever Mondoo scans ran in CI/CD pipes, unless they had perfect scores (an A+ with a score of 100), they finished with a non-zero exit code. This caused the pipeline to fail, even with only minor issues. + +We had previously introduced the `--exit-0-on-success` option to address this use case. It changed the behavior to always finish with an exit code of 0 whenever the scan was successful—even if it produced an **F**. + +While this helped remedy the original problem with failing pipeline runs, it didn’t help users who wanted to fail their tests if certain conditions were met. This was technically possible, by knowing all the available exit codes `mondoo scan` generated, but was impractical and hard to use. + +**Solution:** Mondoo scans now always return an exit code of 0 by default when a scan is successful. Both **A**s and **F**s show a successful run. + +With the previously introduced `--score-threshold` you can change this behavior to fail the execution (exit code 1) whenever the score falls too low. For example, this command fails all scans that result in an **F** (if their score is below 10): + +```bash +mondoo scan … --score-threshold 10 +``` + +### AWS Organization integration + +We are excited to release the AWS Organization integration, which allows you to set up AWS integrations across your entire AWS Organization or organizational unit. + +![Mondoo6 AWS Organization Integration](/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-aws-orgs.png) + +We previously only supported single account installs. With this change, you can use AWS CloudFormation StackSets to install the integration across all accounts in your AWS Organization and automatically have the integration be installed to all new accounts added to that AWS Organization. + +## 🧹 IMPROVEMENTS + +### MQL improvements + +**Problem:** It was impossible to use variables across blocks in MQL, which made a lot of queries more difficult to write. We have wanted to fix this issue for a while, which required a major change in MQL’s execution engine. + +**Solution:** Variables can now be used across blocks like you would in many other programming languages. Here is a simple example: + +```coffee +aws.dynamodb.tables { + x = region + aws.dynamodb. + limits. + where(region == x) {*} +} +``` + +In this example, we define a new variable `x` and set its value to the `region` of the table. We can then use the variable to access the limits entry that matches this region. Previously this was not possible, since both fields had the same name (`region`) and variables weren’t accessible across blocks. + +### CI/CD detection + +We now automatically detect the client running in CI/CD environments. Once detected, we collect more contextual information about the run, like the repository, PR/MR number, and git reference. This allows CI/CD runs to automatically show up in the **CI/CD** tab in the UI, where you can explore more details. + +Today, we support this feature for GitHub, GitLab, and Kubernetes out of the box. We are expanding to other systems soon, so stay tuned! + +## 🐛 BUGFIXES + +- update Kubernetes doc links in the UI +- fix colors for the score display +- fix EBS volume scanning targeting incorrect instances in some cases +- fix "see your asset scores" (on aws integrations) button navigation +- ensure asset labels link out to AWS when appropriate +- ensure project jobs load more button loads more items +- added error msg for when a user tries to cancel an invitation that is not their own +- correct breadcrumb on CI/CD page +- default Kubernetes integrations admission controller to off diff --git a/releases/2022-06-02-mondoo-6.1.1-is-out.md b/releases/2022-06-02-mondoo-6.1.1-is-out.md new file mode 100644 index 000000000..78e06fef7 --- /dev/null +++ b/releases/2022-06-02-mondoo-6.1.1-is-out.md @@ -0,0 +1,64 @@ +--- +slug: mondoo-6.1.1-is-out/ +title: Mondoo 6.1.1 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 Mondoo 6.1.1 is out! This release adds additional support for Red Hat Linux and AlmaLinux 9 and improvements for working with AWS and K8s. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### EU Region Support + +**Problem:** Customers in the EU are subject to local regulatory requirements and need the data storage and processing that Mondoo performs on their behalf to physically occur in Europe. + +**Solution:** Mondoo has added a new cloud infrastructure in the EU. Customers can now create and join organizations and spaces in the EU region. All data created and processed in the EU region happens on servers located in data centers within the EU. + +Just select the US / EU region pulldown in the Mondoo UI to switch regions. + +![Mondoo Region Selector](/img/releases/2022-06-02-mondoo-6.1.1-is-out/region_switcher.png) + +At this time, Mondoo does not support cross-region organizations or spaces. + +### Red Hat Linux / AlmaLinux 9 Support + +**Problem:** Customers who wanted to upgrade to the May releases of Red Hat Linux 9 and AlmaLinux 9 were unable to use the full capabilities of Mondoo with these new operating systems. + +**Solution:** Mondoo now supports the detection of EOL dates and package vulnerabilities for Red Hat Linux 9 and AlmaLinux 9. + +## 🧹 IMPROVEMENTS + +### Additional Resources Shown in AWS Accounts + +**Problem:** The AWS account integration page sometimes didn't display the information customers needed about their accounts. + +**Solution:** The AWS Account integrations page now displays the number of EC2 Snapshots, CloudWatch LogGroups, Lambda Functions, Config Recorders, and EKS clusters. + +### Kubernetes Custom Resources Support in MQL + +**Problem:** When writing policies to inspect Kubernetes installations, customers need to easily interrogate my Kubernetes custom resources. + +**Solution:** The MQL query language now exposes Kubernetes custom resources for use in policies as `k8s.customresource.` + +![k8s.customresource usage example](/img/releases/2022-06-02-mondoo-6.1.1-is-out/k8s_customresource.png) + +## 🐛 BUG FIXES AND UPDATES + +- AWS SSM scans should no longer fail due to AWS SSM timeouts +- Fetch the default registry entries on Windows in addition to the explicitly set registry entries +- Improve Linux Security Baseline policy queries and remediation steps to reduce errors +- EBS volume-based scans of AWS EC2 instances are more reliable +- The filtering of assets by AWS integration now works as intended +- Add missing UI breadcrumbs from CI/CD scan jobs back to their projects +- Fix the load more button in a CI/CD project not loading more jobs +- Fix service checks when scanning hosts using the `fs` transport +- Fix failures in the Platform End-of-Life Policy diff --git a/releases/2022-06-14-mondoo-6.2-is-out.md b/releases/2022-06-14-mondoo-6.2-is-out.md new file mode 100644 index 000000000..61c71d487 --- /dev/null +++ b/releases/2022-06-14-mondoo-6.2-is-out.md @@ -0,0 +1,44 @@ +--- +slug: mondoo-6.2-is-out/ +title: Mondoo 6.2 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 Mondoo 6.2 is out! This release adds automatic container discovery for Kubernetes and support for Amazon Linux 2022. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Automatic Container Discovery for Kubernetes + +**Problem:** Customers couldn't secure containers running within Kubernetes cluster. + +**Solution:** Mondoo automatically discovers and scans containers in Kubernetes clusters! + +Use Mondoo to not just scan Kubernetes cluster and pod configurations, but also all the containers running within your Kubernetes clusters by enabling discovery in command line scans: + +```bash +mondoo scan k8s --discover=all +``` + +This scan will return results for the overall Kubernetes cluster and pod security, a new asset scan for each running container, and a link to the Mondoo console. + +![Container Scan](/img/releases/2022-06-14-mondoo-6.2-is-out/container_scan.png) + +### Amazon Linux 2022 Support + +**Problem:** Customers could not be certain that Mondoo would work as expected with the Amazon Linux 2022 preview release. + +**Solution:** Mondoo has been fully tested on Amazon Linux 2022 Preview, and Mondoo now supports using Mondoo Client with Amazon Linux 2022 Preview. + +## Bug Fixes and Performance Improvements + +About a half-dozen minor stability improvements under the hood. diff --git a/releases/2022-06-23-mondoo-6.3-is-out.md b/releases/2022-06-23-mondoo-6.3-is-out.md new file mode 100644 index 000000000..4840ed5b5 --- /dev/null +++ b/releases/2022-06-23-mondoo-6.3-is-out.md @@ -0,0 +1,168 @@ +--- +slug: mondoo-6.3-is-out/ +title: Mondoo 6.3 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 Mondoo 6.3 is out! This release includes significant UI updates, a new Packer plugin, agentless scans of AWS infrastructure, querying across AWS Organizations, and substantial speed improvements in Kubernetes scans. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Refreshed Overview Page + +**Problem:** Customers didn't have immediate access to the essential information about their infrastructure when logging into the Mondoo console. + +**Solution:** The Overview page has been refreshed to focus only on the most pertinent information. Customers can now see information about their Kubernetes integrations directly from the Overview page. If customers are not using Mondoo with Kubernetes or Amazon AWS, the Overview page will no longer show cards for these technologies. + +Look for additional improvements to the Overview page in the coming weeks. + +![Overview Page](/img/releases/2022-06-23-mondoo-6.3-is-out/overview.jpg) + +Information about managed clients is no longer part of the Overview page. Instead, you can now access the list of managed clients via the Integrations page. + +### Integrations Marketplace + +**Problem:** Customers find it difficult to install Mondoo in their infrastructure, so they can quickly get started with scans. + +**Solution:** The Integrations page has been completely re-designed. With the new Integrations Marketplace, it's easy to find, install, and manage your Mondoo integrations and clients from this single location. + +![Integrations Page](/img/releases/2022-06-23-mondoo-6.3-is-out/integrations.jpg) + +### Packer Plugin Mondoo + +**Problem:** Customers who want to use Mondoo to secure the machine images they create with HashiCorp Packer face a lot of complexity, manual downloads, and manual configuration. + +**Solution:** Mondoo is now available as a [native, open source Packer plugin](https://github.com/mondoohq/packer-plugin-cnspec). You can include Mondoo directly in any Packer 1.7 or higher build by adding these blocks to your template: + +``` +packer { + required_plugins { + mondoo = { + version = ">= 0.2.1" + source = "github.com/mondoohq/mondoo" + } + } +} +``` + +``` +build { +... + + provisioner "mondoo" { + score_threshold = 80 + on_failure = "continue" + asset_name = "${var.image_prefix}-${local.timestamp}" + } +} +``` + +### Agentless AWS EBS Volume Scanning + +**Problem:** Customers need to ensure that a specific EC2 instance meets security and policy standards but have no direct access to that instance. They need a way to inspect EC2 instances externally without losing scan fidelity. + +**Solution:** Agentless AWS EBS Volume Scanning lets Mondoo perform agentless, read-only evaluation of EC2 instances without accessing the instances directly. Mondoo can quickly scan any instance, snapshot, or volume without accessing production workloads. + +Requirements: + +- Requires the ability to run mondoo client in the same AWS account as the infrastructure you wish to scan. (AWS CloudShell is excellent for this!) +- The scanner needs permission to list instances, copy snapshots, create volumes, and attach volumes to instances. + +
+ Here's an example AWS security policy to enable Agentless AWS EBS Volume Scanning. It's a little long, so we've collapsed it by default. + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Condition": { + "StringEquals": { + "aws:ResourceTag/Created By": "Mondoo" + } + }, + "Action": [ + "ec2:AttachVolume", + "ec2:DetachVolume", + "ec2:DeleteVolume", + "ec2:DeleteSnapshot" + ], + "Resource": "*", + "Effect": "Allow" + }, + { + "Action": [ + "ec2:CreateSnapshot", + "ec2:CreateVolume", + "ec2:CopySnapshot", + "ec2:CreateTags", + "ec2:DescribeInstances", + "ec2:DescribeVolumes", + "ec2:DescribeSnapshots", + "kms:Decrypt", + "kms:ReEncryptTo", + "kms:GenerateDataKeyWithoutPlaintext", + "kms:DescribeKey", + "kms:ReEncryptFrom" + ], + "Resource": "*", + "Effect": "Allow" + }, + { + "Condition": { + "Bool": { + "kms:GrantIsForAWSResource": "true" + } + }, + "Action": "kms:CreateGrant", + "Resource": "*", + "Effect": "Allow" + } + ] +} +``` + +
+ +Example usage: + +``` +mondoo scan aws ec2 ebs +mondoo scan aws ec2 ebs volume +mondoo scan aws ec2 ebs snapshot +``` + +### AWS Cross-Organization Queries + +**Problem:** Customers with many AWS accounts in their AWS Organization need to know about all of their infrastructure, regardless of the associated AWS account. + +**Solution:** Using the Mondoo AWS integration, customers can now search across every AWS account associated with their AWS Organization. Find abandoned or untagged resources, or locate every resource tagged to a particular project or cost center quickly and easily. + +Example: I need to find a particular S3 bucket, but I don't know in which AWS account it may be located. I only know part of the bucket name. + +``` +mondoo exec --integration-mrn //integration.api.mondoo.app/spaces//aws/ 'aws.s3.buckets.where(name.contains("lost-bucket"))' +``` + +## 🧹 IMPROVEMENTS + +### Kubernetes Scan Speed Improvements + +**Problem:** Initial scans of Kubernetes clusters were too slow. + +**Solution:** Optimizations in the Kubernetes scan code have reduced test scan duration from `2min 10s` to only `9s`! + +## 🐛 BUG FIXES AND UPDATES + +- Using the `processes.list` MQL resource on a Docker container will no longer run the container out of file handles +- Fleet-wide statistics now correctly include unscored assets +- The Mondoo console has been updated to use Mondoo's new logo diff --git a/releases/2022-06-28-mondoo-6.4-is-out.md b/releases/2022-06-28-mondoo-6.4-is-out.md new file mode 100644 index 000000000..ca533e91e --- /dev/null +++ b/releases/2022-06-28-mondoo-6.4-is-out.md @@ -0,0 +1,77 @@ +--- +slug: mondoo-6.4-is-out/ +title: Mondoo 6.4 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.4 is out! This release includes new GitHub resources and improvements to the Linux Baseline policy. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### New GitHub Resource Capabilities + +**Problem:** Customers want to write Mondoo policies to ensure the security of their GitHub repositories and organizations + +**Solution:** Mondoo is writing resources to allow users to gather critical information about the security stance of their GitHub Organization and any public repositories they wish to examine. + +Connect to mondoo shell to begin discovering more about your GitHub infrastructure: + +```shell +mondoo shell -t github --option token=${GH_TOKEN} --option login=USERNAME + +mondoo shell -t github --option token=${GH_TOKEN} --option organization=ORGANIZATION_NAME +``` + +Ask questions and discover: + +```shell +github.organization { repositories { files { path type isBinary files { path type isBinary files } } }} + +github.repository("chris-rock/bubbletea") { files { content} } +``` + +Assess: + +```shell +github.organization { repositories { default=defaultBranchName branches.where(name == default) { protected }}} + +github.repository("chris-rock/bubbletea") { archived == false hasIssues == true} +``` + +Keep an eye out for our GitHub Security Policy that should be shipping in the next month :tada: + +### New Enterprise Windows Installer + +**Problem:** Customers want to fully automate the installation of Mondoo on Windows using MDM or configuration management solutions. + +**Solution:** A new enterprise Mondoo MSI Installer (mondoo-enterprise.msi) has been created to make the automated setup of Mondoo simpler. This new installer requires a `REGISTRATIONTOKEN` value, which it uses to automatically register the system with Mondoo and then start the service. + +## 🧹 IMPROVEMENTS + +### Improved Linux Baseline Policy + +**Problem:** Customers want the best possible out of the box policies for securing their Linux systems + +**Solution:** Update the Linux Security Baseline policy to provide additional security recommendations as well as more reliable checks. All checks involving systemd services now check to see if the service is both running and enabled. The `Ensure filesystem integrity is regularly checked` query now matches the remediation steps. We also updated a number of remediation steps to include SLES instructions. + +## 🐛 BUG FIXES AND UPDATES + +- Improve the display of the Mondoo Console on mobile devices +- Display error messages when the AWS integrations fail to scan instances +- Add links to OpenShift and cert-manager on the K8s Integration setup page +- Fix invalid example code in the 'Generate Long-Lived Credentials' Integration page +- Return actual asset error when scanning on CLI without policies set +- Fix remediation steps for privileged containers in the Kubernetes Application Benchmark by Mondoo +- Fix the Mondoo Client Windows service failing to stop +- Various fixes to the junit output from Mondoo Client +- Only scan unique container images when running `mondoo scan k8s --discover=all` +- Remove version checks in the Mondoo Operator that block upgrading an existing operator diff --git a/releases/2022-07-05-mondoo-6.5-is-out.md b/releases/2022-07-05-mondoo-6.5-is-out.md new file mode 100644 index 000000000..7083f6153 --- /dev/null +++ b/releases/2022-07-05-mondoo-6.5-is-out.md @@ -0,0 +1,46 @@ +--- +slug: mondoo-6.5-is-out/ +title: Mondoo 6.5 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 Mondoo 6.5 is out! This release is all about quality-of-life improvements and bug fixes. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🧹 IMPROVEMENTS + +### Kubernetes Scanning Enhancements + +The Kubernetes admission controller scanning in the CI/CD tab could be quite busy, and it was often difficult to find new deployment scans in this UI. We revamped how scanning occurs in the Mondoo Kubernetes Operator 0.5.0, with scans now only occurring on Kubernetes resources. This means you'll no longer see scans for each new pod generated during auto scaling, cron jobs, or otherwise. This makes it much easier to see the security status of new workloads entering the cluster. + +We also improved the performance of Docker image scans. This should greatly improve the experience of users running the container image discovery in Kubernetes scans, which we introduced in Mondoo 6.2. If you haven't tried image scanning in your Kubernetes scans, be sure to try `mondoo scan k8s --discover all` and keep an eye out for more cluster asset discovery features in future releases. + +### Improved Integration Status + +Life isn't binary, and neither are our integration status fields now. We updated how Mondoo integrations report their status to include a new `Pending` status. This better describes the status of integrations that haven't failed but instead just haven't reported to Mondoo Platform yet. + +![Pending Integration](/img/releases/2022-07-05-mondoo-6.5-is-out/integrations.png) + +### Many small improvements + +- The CVE view on the individual asset now shows the total number of packages scanned +- The Continuous Integration view now shows a timestamp for each branch scanned +- The installation and usage instructions for HashiCorp Packer & HashiCorp Terraform in the Integrations page is much more useful + +## 🐛 BUG FIXES AND UPDATES + +- Improved the readability of buttons on the SAML setup page +- Fixed the "Load More" button not working when viewing CVEs tied to an individual asset +- Scanning Microsoft Azure with Mondoo Client no longer requires a URL +- Container scans now properly set platform architecture +- SSHD config file scanning in `Linux Security Baseline by Mondoo` now properly parses all recognized time string formats +- Improved the `Ensure filesystem integrity is regularly checked` query in the `Linux Security Baseline by Mondoo` policy to also support running Aide as a systemd timer +- Improved the `Pod should not run with default service account` query in the `Kubernetes Application Benchmark by Mondoo` policy to not fail when a manifest doesn't specify the service account diff --git a/releases/2022-07-12-mondoo-6.6-is-out.md b/releases/2022-07-12-mondoo-6.6-is-out.md new file mode 100644 index 000000000..3ad6cda6b --- /dev/null +++ b/releases/2022-07-12-mondoo-6.6-is-out.md @@ -0,0 +1,67 @@ +--- +slug: mondoo-6.6-is-out/ +title: Mondoo 6.6 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +🥳 Mondoo 6.6 is out! This release adds much-requested support for scanning pipelines with CircleCI, side scanning from the command line, and some nice improvements to the Linux Baseline policy for securing users and groups. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### CircleCI Support + +**Problem:** You want to use Mondoo natively with CircleCI projects to secure your build pipelines. + +**Solution:** Mondoo now securely integrates with CircleCI projects to scan Kubernetes manifests, Terraform configuration files, and Docker images for common misconfigurations and CVEs. Check out the [CircleCI integration documentation](/platform/infra/supply/cicd/circleci/) to learn more. + +![CircleCI Security Scans](/img/releases/2022-07-12-mondoo-6.6-is-out/circleci.jpg) + +### AWS Side Scanning From the CLI + +**Problem:** You want Mondoo to scan your AWS instances, but you want to do it without SSH credentials or an SSM agent and without directly impacting your production workloads. + +**Solution:** Mondoo now supports AWS side scanning. You can scan an EC2 instance, an EC2 EBS volume, or an EC2 EBS snapshot. See the [EC2 Snapshot Scanning documentation](/platform/infra/cloud/aws/aws-ebs-snapshot-scan/) for details. + +## 🧹 IMPROVEMENTS + +### Improved Linux Baseline Policy + +**Problem:** You want the best possible out-of-the-box policies for securing your Linux systems. + +**Solution:** Update the Linux Security Baseline policy to provide additional security recommendations. We've added 12 new controls to validate that users and groups are configured correctly on your Linux systems. + +### Multi-line Support in Mondoo Shell + +**Problem:** Writing complex MQL queries on one line can be frustrating. + +**Solution:** The Mondoo shell now supports multi-line input! +![Multi-line Shell](/img/releases/2022-07-12-mondoo-6.6-is-out/multi_line_shell.gif) + +### Copy MRN From the Asset Detail Page + +**Problem:** It could be challenging to generate a properly-formed asset MRN to use with the Mondoo CLI. + +**Solution:** You can now copy the MRN for any asset from that asset's detail page. + +![Copy MRN](/img/releases/2022-07-12-mondoo-6.6-is-out/copy_mrn.png) + +### Total Scans From the Vulnerability Page + +**Problem:** Mondoo didn't provide enough context about vulnerability scans. It provided the number of findings, but didn't show the total number of objects scanned. If you had a system with no vulnerabilities, it could appear that Mondoo wasn't doing anything! + +**Solution:** Mondoo now also shows the total number of objects scanned in a vulnerability scan. + +## 🐛 BUG FIXES AND UPDATES + +- Resolves improperly failing queries in the macOS policy +- The Linux Security Baseline policy now correctly detects apache2 on Debian-based Linux distributions +- Improved Kubernetes admission controller reliability on small Kubernetes clusters diff --git a/releases/2022-07-19-mondoo-6.7-is-out.md b/releases/2022-07-19-mondoo-6.7-is-out.md new file mode 100644 index 000000000..d9e0d9800 --- /dev/null +++ b/releases/2022-07-19-mondoo-6.7-is-out.md @@ -0,0 +1,99 @@ +--- +slug: mondoo-6.7-is-out/ +title: Mondoo 6.7 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.7 is out! This release includes a pile of new policies and policy updates + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Summary Scan Output + +**Problem:** Mondoo scans print all results for every query in the CLI. However, sometimes users just want to see a quick summary of how the scan went, especially when it's collected upstream for a deeper analysis. + +**Solution:** Mondoo now includes a new summary output mode. This mode contains just the summary portion of the Mondoo scan so you can quickly determine the security posture of systems. + +![Summary Scan](/img/releases/2022-07-19-mondoo-6.7-is-out/summary.png) + +### NSA PowerShell Policy + +**Problem:** Mondoo has always provided comprehensive resources for Microsoft PowerShell, but we never shipped a policy for its security best practices. This forced users to research, author, and maintain their own PowerShell policies. + +**Solution:** Mondoo includes a new PowerShell security policy `NSA PowerShell: Security Measures to Use and Embrace`. This policy implements the recommendations of the United States, New Zealand, and the United Kingdom cybersecurity agency's whitepaper [Keeping PowerShell: Security Measures to Use and Embrace](https://media.defense.gov/2022/Jun/22/2003021689/-1/-1/1/CSI_KEEPING_POWERSHELL_SECURITY_MEASURES_TO_USE_AND_EMBRACE_20220622.PDF). + +### Time Synchronization Policy + +**Problem:** You want to ensure accurate time across systems within your organization for authentication and logging purposes. + +**Solution:** Mondoo now includes a new `Operational Best Practices for Time Synchronization by Mondoo` policy for macOS, Linux, and Windows hosts to ensure that systems are correctly syncing their time. + +### Bundesamt für Sicherheit in der Informationstechnik (BSI) Policy + +**Problem:** You want to secure your Debian- and Red Hat-based Linux systems according to the Federal Office for Information Security (BSI) and pass a BSI audit. + +**Solution:** Mondoo now includes a new `BSI SYS.1.3 Linux and Unix Servers by Mondoo` policy. BSI is a German standard for IT security, similar to SOC2 in the US. We are releasing this first policy with support for Debian- and Red Hat-based Linux to ensure that systems are correctly hardened according to the BSI requirements. This is especially helpful for users in the DACH region overall and Germany in particular. + +### macOS Ventura (13) support + +**Problem:** Apple is currently working on the next major version of its Mac operating system: macOS Ventura (release 13). It is slated for a release towards the end of this year. An early version of this new release is now available in beta and can be used today. However, the Mondoo baseline policy did not support it yet. + +**Solution:** Mondoo Client has been tested on macOS Ventura beta and the `macOS Security Baseline by Mondoo` policy has been updated for this upcoming release. + +### New Kubernetes MQL Resources + +**Solution:** Mondoo now includes new [StatefulSet](/mql/resources/k8s-pack/k8s.statefulset/) and [ReplicaSet](/mql/resources/k8s-pack/k8s.replicaset/) resources so you can write policies for these resource types. + +## 🧹 IMPROVEMENTS + +### Improved Linux Policies + +**Solution:** Mondoo's Linux Baseline policy and various CIS Linux policies have been updated for improved reliability and to better secure your systems: + +- New: `Ensure sudo logging is enabled` control added to Mondoo Linux Security Baseline +- Bugfix: `Ensure SSH access is limited` now passes if SSH access is limited using only `AllowUsers`/`AllowGroups` +- Bugfix: Failures running `Ensure all GIDs in /etc/passwd exist in /etc/group` have been resolved +- Bugfix: Improved reliability in `Ensure that strong Key Exchange algorithms are used` and `Ensure only strong MAC algorithms are used` control +- Improved: Impact scores added to many controls +- Improved: `Ensure permissions on bootloader config are configured` control now checks that the file is owned by root/root +- Improved: `Ensure permissions on /etc/motd are configured` control now checks that the file is owned by root/root +- Improved: `Ensure permissions on /etc/issue are configured` control now checks that the file is owned by root/root +- Improved: `Ensure permissions on /etc/issue.net are configured` control now checks that the file is owned by root/root +- Improved: `Ensure permissions on all log files are configured` now shows which log files do not have the proper permission in the output +- Bugfix: Fix errors running `Ensure automatic mounting of removable media is disabled` +- Bugfix: Improved compatibility with Debian in `Ensure access to the su command is restricted` +- Improved: `Define the hardened ciphers for all SSH configurations` control now better runs on RHEL-derivative distros +- Bugfix: Improved compatibility with Debian/Ubuntu in `Define the hardened ciphers for all SSH configurations` +- Improved: `Ensure permissions on all log files are configured` now includes remediation steps to ensure future log files have the correct permissions +- Improved: `Ensure SSH root login is disabled` control now allows `prohibit-password` value +- Improved: Improved compatibility with Arch Linux derivatives +- Bugfix: Fix false positives in `Ensure journald is configured to compress large log files` control + +### Improved K8s Application Policy + +**Problem:** Your Kubernetes workloads include not just Pods, but many other kinds of Kubernetes resources. Mondoo's Kubernetes Application Benchmark scans only Pods, missing the root cause of many security misconfigurations. + +**Solution:** The `Kubernetes Application Benchmark by Mondoo` now scans not just `Pods`, but also `StatefulSets`, `DaemonSets`, `Jobs`, `CronJobs`, and `Deployments`, ensuring all the resources on your cluster are secured. With these additional queries and expanded audit instructions in the policy, you can more easily find the parent resource with the identified misconfiguration, saving you time securing your cluster. + +### Improved Kubernetes Operator + +**Solution:** The Mondoo Operator for Kubernetes has been improved to increase the security and performance of scanning. The operator now runs all Mondoo Client containers without root privileges for increased security. The operator's admission controller also now runs scans ~30% faster, while reducing memory consumption in the cluster. + +## 🐛 BUG FIXES AND UPDATES + +- Resolves inconsistent results when scanning Kubernetes manifests using `mondoo scan` vs. Mondoo Operator admission controller scans +- Resolves failures running scans on Windows systems with the system language set to German +- Resolves failures scanning Azure when the current stack is not set +- Resolves two failures in MQL that could result in inconsistent or incorrect results +- Provide user friendly error messages when scanning container images in private registries +- Improved readability within policy results +- Wrap long asset names in the fleet view and the asset pages diff --git a/releases/2022-07-26-mondoo-6.8-is-out.md b/releases/2022-07-26-mondoo-6.8-is-out.md new file mode 100644 index 000000000..b1b5588d4 --- /dev/null +++ b/releases/2022-07-26-mondoo-6.8-is-out.md @@ -0,0 +1,67 @@ +--- +slug: mondoo-6.8-is-out/ +title: Mondoo 6.8 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.8 is out! This release includes Azure Pipeline / Jenkins CI/CD support and Kubernetes container image scanning! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Azure Pipelines and Jenkins Support + +**Problem:** You want to set up security scanning of projects in your CI pipelines, but you're not using a CI platform supported by Mondoo. + +**Solution:** Mondoo now supports CI integrations with Azure Pipelines and Jenkins, raising our out-of-the-box CI/CD integrations to six. Still don't see the CI/CD integration you need? Let us know at hello@mondoo.com. + +![CI Setup Window](/img/releases/2022-07-26-mondoo-6.8-is-out/ci_setup_window.png) + +### Mondoo Operator for Kubernetes Container Image Scanning + +**Problem:** You want to assess the security of not just your Kubernetes workload definitions but also the containers running in the workloads. + +**Solution:** Following up on last week's new CLI-based container image scanning, we're now integrating public container image scanning directly into the Mondoo Operator. When enabled, the Mondoo Operator will now perform daily scans of all publicly available container images running in your Kubernetes cluster, exposing common OS misconfigurations and CVEs. + +Here the Mondoo Operator for Kubernetes scans our prod-k8s cluster. It reveals the security of the three cluster nodes, all workloads deployed to the cluster, and the `kube-apiserver` pod: + +![Cluster Scan Results](/img/releases/2022-07-26-mondoo-6.8-is-out/cluster_scan_results.png) + +We think you'll be blown away at how quickly Mondoo discovers new CVEs in the containers that make up your critical workloads. This kube-proxy container was running on a brand new Kubernetes cluster and had six different vulnerable packages: + +![Container CVEs](/img/releases/2022-07-26-mondoo-6.8-is-out/container_cves.png) + +## 🧹 IMPROVEMENTS + +### Policy and MQL Improvements + +**Solution:** We continue to improve the out-of-the-box Mondoo policies and the MQL resources that power those policies, giving your the most reliable scan results with Mondoo: + +- Replaced `platform.runtimeEnv` with the simpler `platform.runtime`. `platform.runtimeEnv` is now deprecated and will be removed in Mondoo Client 7.0. +- Deprecated `platform.virtualization.isContainer` in favor of either `platform.kind` or `platform.runtime`. `platform.virtualization.isContainer` will be removed in Mondoo Client 7.0. +- Added the ability to determine if a branch is the default branch with `isDefault` in the `github.branch` resource. +- Resolved failures in the `github.branch` resource when branch protection is not configured. +- Resolved failures that could occur in some valid MQL blocks, which caused failures in the Kubernetes Application Benchmark policy. +- Resolved incorrect policy scores when all controls in a policy fail. +- Added severity scores to the Kubernetes Application Benchmark policy to make prioritizing fixes easier. +- Expanded the `Ensure HTTP Proxy server is stopped and not enabled` control in the Linux Security Baseline policy to check for the Tinyproxy proxy service. +- Added a new `platform.runtime`. + +## 🐛 BUG FIXES AND UPDATES + +- Resolve Mondoo Operator for Kubernetes node scans of Minikube not scanning all nodes. +- Fully clean up all Mondoo Operator resources when uninstalling. +- Use a Red Hat UBI-based Mondoo image when scanning in Red Hat OpenShift. +- Fix handling of the Mondoo Operator's running UID when running in OpenShift. +- Add a liveness probe to the Mondoo Operator pods to improve Mondoo scan scores. +- Resolve potential panics when the first Kubernetes Operator check-in occurs. +- Resolve failures to properly exit in the Kubernetes Operator when a scan request failed. +- Reduce resource utilization by lowering the initial requested CPU and memory limits for the Kubernetes Operator's node scanning pods. diff --git a/releases/2022-08-02-mondoo-6.9-is-out.md b/releases/2022-08-02-mondoo-6.9-is-out.md new file mode 100644 index 000000000..99f2ce6c8 --- /dev/null +++ b/releases/2022-08-02-mondoo-6.9-is-out.md @@ -0,0 +1,94 @@ +--- +slug: mondoo-6.9-is-out/ +title: Mondoo 6.9 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.9 is out! This release includes new Kubernetes pod scanning and top CVEs in the space overview! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Top Platform Vulnerabilities on Overview + +**Problem:** You want to find the critical CVEs in your environment quickly + +**Solution:** The Mondoo Overview page now shows your space's top five platform vulnerabilities. This new view lets you quickly determine the most impacting vendor advisories and how many assets are affected by each advisory. The individual advisories link to detailed information pages summarizing the included CVEs and impact. You can also select `View All` to see all security advisories in your space. + +![Container CVEs](/img/releases/2022-08-02-mondoo-6.9-is-out/platform_vulnerabilities.png) + +### Kubernetes Pod Scanning + +**Problem:** You have hundreds or even thousands of different workloads in your Kubernetes clusters, and you want to see the security status of individual workloads instead of just the cluster as a whole. + +**Solution:** This week, we're shipping our first slice of Kubernetes resource scanning with pod scanning. With this new discovery mode, each pod in your cluster becomes an asset within Mondoo. Policies are applied at the pod level, and you can write MQL queries against these pods instead of the whole cluster. This gives you more granular workflow scanning and improved alerting. + +![Pod Asset](/img/releases/2022-08-02-mondoo-6.9-is-out/pod_asset.png) + +To start scanning discovery pods as assets during your Kubernetes scans, run `mondoo scan k8s --discover pods`. + +Stay tuned for next week's release when we introduce more new Kubernetes resources as Mondoo assets, along with new out-of-the-box policies for scanning these assets. + +### Mondoo Kubernetes Operator 1.0 + +We started our open source [Mondoo Operator for Kubernetes project](https://github.com/mondoohq/mondoo-operator) in January of this year. Since then, the Mondoo team has been busy extending the functionality, ensuring stability, and squeezing every ounce of performance out of the codebase. This week after 300 pull requests merged, we shipped the 1.0 release. + +**What does 1.0 mean for me?** + +1.0 means we're confident in the functionality and stability of the project. Additionally, since Mondoo follows [Semantic Versioning](https://semver.org/), we won't intentionally break any configuration interfaces in subsequent 1.x releases. Config stability between minor releases makes upgrades easier without requiring stepped upgrades. + +If you're still on an older Mondoo Operator release, we strongly encourage you to upgrade to 1.0. We've introduced significant new capabilities over the last few months, including pod container image scanning, rootless/read-only execution, and CronJob-based scanning. See our [Mondoo Operator Upgrade documentation](https://github.com/mondoohq/mondoo-operator/blob/main/docs/operator-upgrades.md) for more information on upgrading to 1.0. + +## 🧹 IMPROVEMENTS + +### Show Disabled and Ignored Controls + +Disabled and Ignored controls in policies are now visually indicated in assets' policies, making it clear which policies impact scoring. + +![Status Indication in Policies](/img/releases/2022-08-02-mondoo-6.9-is-out/policy_indication.png) + +### Simpler Asset Deletion + +You can now delete assets directly on the asset page by selecting the delete icon. + +![Asset Deletion](/img/releases/2022-08-02-mondoo-6.9-is-out/asset_deletion.png) + +If you're one to live dangerously, you can even opt out of warnings and delete assets with just a single selection. + +![Opt Out of Warnings](/img/releases/2022-08-02-mondoo-6.9-is-out/skip_warnings.png) + +### Improved Linux EOL Detection + +We've improved the EOL operating system detection in Mondoo Client to support the following new Linux releases: + +- Alpine 3.16 +- openSUSE 15.4 +- Oracle Linux 9 +- Rocky Linux 9 +- SUSE Linux Enterprise 15.4 + +### MQL Improvements + +We've updated MQL's `platform` resource to improve gathering information on assets. A new `platform.title` value exposes a human-friendly version of the platform's name, and the `platform.version` value has been deprecated in favor of `platform.release`. + +![Mondoo Shell](/img/releases/2022-08-02-mondoo-6.9-is-out/mondoo_shell.png) + +## 🐛 BUG FIXES AND UPDATES + +- Resolves incorrect EOL dates for Rocky Linux 9 and SLES 15.3. +- Adds a timeout for long running Kubernetes Operator scans. +- Updates the VMware Appliance from Debian 11.2 to 11.4 to resolve CVEs in the underlying Debian installation. +- Resolves failures during container image scanning. +- Resolves failures during Terraform config file scans. +- Resolves failures during EBS volume scans. +- Remove references to "asset" in CI/CD run scan pages. +- Client Linux Security Baseline's control 'Ensure / and /home are encrypted' now executes correctly on btrfs formatted partitions. +- Users with the Mondoo viewer role can now list ChatOps integrations diff --git a/releases/2022-08-09-mondoo-6.10-is-out.md b/releases/2022-08-09-mondoo-6.10-is-out.md new file mode 100644 index 000000000..6a99a6d27 --- /dev/null +++ b/releases/2022-08-09-mondoo-6.10-is-out.md @@ -0,0 +1,98 @@ +--- +slug: mondoo-6.10-is-out/ +title: Mondoo 6.10 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.10 is out! This release includes Kubernetes resource scanning and expanded OS support. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Kubernetes Resource Scanning + +**Problem:** You want to secure not just your Kubernetes cluster control plane and nodes, but also the workloads you deploy to your cluster. You need visibility into the security of each of the running workloads. + +**Solution:** Mondoo now scans each workload type as a dedicated asset, with new security and best practice policies applied to each asset. This means you'll now get not only scans of your cluster nodes and overall cluster control plane configuration, but also Pods, CronJobs, StatefulSets, DaemonSets, Jobs, and Deployments. These new assets provide more granular visibility into the workloads deployed onto your clusters and make it easy to disable or skip controls on particular workloads. + +**Results of Pod Scans**: + +![Fleet View for PostgreSQL](/img/releases/2022-08-09-mondoo-6.10-is-out/fleet.png) + +In addition to these new assets we're also shipping new Kubernetes Security and Kubernetes Best Practice policies. These new policies replace the existing Kubernetes Application Benchmark policy and apply only to the new Kubernetes resource assets. We decided to break out our combined security and best practices policy so that it would be easier to determine security vs. best practice violations at a glance. Since these policies scan individual Kubernetes assets instead of the cluster as a whole, they also feature greatly improved scan output and new remediation steps, so you can more easily resolve findings. + +**Pod Asset with New Policies**: + +![PostgreSQL Pod Asset](/img/releases/2022-08-09-mondoo-6.10-is-out/pod.png) + +**Improved Kubernetes Policy Controls**: + +![PostgreSQL Pod Scan Result](/img/releases/2022-08-09-mondoo-6.10-is-out/scan_results.png) + +To enable scanning of all Kubernetes resources as individual Mondoo assets, pass the `--discover all` flag when scanning clusters: + +`mondoo scan k8s --discover all` + +Stay tuned for resource scanning directly in the Mondoo Kubernetes Operator and even more improvements to out-of-the-box Kubernetes policies in the coming weeks! + +### Google Container Operating System Support Preview + +**Problem:** When scanning Google Kubernetes Engine (GKE) clusters, you want to ensure the security of the cluster nodes running the Google Container OS Linux distribution. + +**Solution:** Mondoo now includes preview support for the Google Container Operating System (GCOS). With this release, you will now see GCOS hosts properly report their release version, EOL date, and package/service states. Stay tuned for improved detection and policy support in the coming weeks. + +![GCOS Asset](/img/releases/2022-08-09-mondoo-6.10-is-out/gcos.png) + +### Kubernetes `k8s.initContainer` Resource + +**Problem:** You want to write Mondoo policies that examine the configuration of [Kubernetes Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) in your workloads. + +**Solution** A new [`k8s.initContainer`](/mql/resources/k8s-pack/k8s.initContainer/) allows you to write policy against Kubernetes Init Containers. + +![InitContainer Query](/img/releases/2022-08-09-mondoo-6.10-is-out/initcontainer.png) + +## 🧹 IMPROVEMENTS + +### Expanded Operating System Support + +We've updated Mondoo with enhanced platform end-of-life and package vulnerability data so you can scan the latest and greatest operating systems: + +- Added Alpine 3.16, Fedora 33/34/35, and VMware Photon 4 package vulnerability data. +- Updated Amazon Linux 2022 vulnerability data for the latest preview release packages. +- Added EOL date detection for openSUSE Tumbleweed and Clear Linux OS. +- Updated EOL date detection for the new patch version format of VMware 7.x.x. + +### Linux Baseline Policy Improvements + +We continue to improve our out-of-the-box Linux Baseline policy to provide better remediation steps and to support different Linux distros. + +- Skips the `Ensure permissions on /etc/shadow- are configured` control instead of failing when `/etc/shadow-` doesn't exist on the system. +- Updates the query in the `Ensure Samba is stopped and not enabled` control to support Debian/Ubuntu-based Linux distros. +- Updates the query and remediation steps for the `Ensure core dumps are restricted` control to support more distros. +- Updates the query in the `Ensure login and logout events are collected` control to support Ubuntu. +- Improves remediation steps and formatting throughout the policy. + +### Filtering in Asset Lists + +You can now quickly filter assets by their score by selecting the A-F values at the top of the fleet page. + +![Asset Filtering](/img/releases/2022-08-09-mondoo-6.10-is-out/filtering.png) + +## 🐛 BUG FIXES AND UPDATES + +- Resolves failures running scans in the Kubernetes Operator. +- VMware Mondoo appliance now includes timesyncd to prevent platform registration failures due to time drift. +- Resolves duplicate AWS resource counts in the AWS integration pages. +- Resolves potential failures in Mondoo Client when reporting scan results. +- Reports all Mondoo Client scans within GitHub Actions when running the Mondoo action in multiple jobs or steps within the same workflow. +- Resolves incorrect steps in the VMware Integration page. +- Resolves failures in MQL when using if/else statements that have single-valued blocks. +- Resolves the fleet summary pages sometimes showing an incorrect summary breakdown of asset scores. diff --git a/releases/2022-08-17-mondoo-6.11.1-is-out.md b/releases/2022-08-17-mondoo-6.11.1-is-out.md new file mode 100644 index 000000000..313b8b297 --- /dev/null +++ b/releases/2022-08-17-mondoo-6.11.1-is-out.md @@ -0,0 +1,179 @@ +--- +slug: mondoo-6.11.1-is-out/ +title: Mondoo 6.11.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.11.1 is out! This release includes supply chain security resources/policies, updated CIS policies, and Kubernetes enhancements! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Supply Chain Security Resources and Policies + +**Problem:** In the aftermath of numerous high profile software supply chain hacks, you want to secure your software supply chain against attackers. Mondoo provided initial resources, but didn't offer a security policy out of the box. + +**Solution:** Mondoo now includes a preview of the CIS Software Supply Chain Security Guide policy. This policy includes 18 controls to help you secure your GitHub organization and repositories. It includes important guidelines like ensuring all organization members enable MFA and limiting repository deletion to particular users. This policy is in preview as we work to implement more controls and improve the remediation guidance for failures. + +As part of the development of this policy we've also greatly expanded the Mondoo git and GitHub resources. We've expanded the data returned in the `github.repository`, `github.file`, and `github.branchprotection` resources and added the following new resources: + +- `github.team` +- `github.collaborator` +- `github.package` +- `github.webhook` +- `github.workflow` +- `git.commit` +- `git.commitAuthor` +- `git.gpgSignature` + +![Supply Chain Policy](/img/releases/2022-08-17-mondoo-6.11.1-is-out/supplychain.png) + +### Policy Downloads + +**Problem:** You want to download policies from the Mondoo Policy Hub to customize the policies for your own organization + +**Solution:** You can now download policies from the Policy Hub's policy pages. + +![Policy Downloads](/img/releases/2022-08-17-mondoo-6.11.1-is-out/download.png) + +### Terraform State File Resource Preview + +**Problem:** Instead of scanning the security of various Terraform configuration files, you'd rather go straight to the source and inspect the Terraform state file. + +**Solution:** Mondoo now includes new preview resources for scanning the security of Terraform state files. + +These new resources can be used as part of your Terraform development and deployment cycle: + +```shell +terraform init +terraform apply +terraform show -json > state.json +mondoo shell -t tfstate --path state_file.json +``` + +```coffee +mondoo> tfstate { * } +tfstate: { + terraformVersion: "1.2.6" + rootModule: tfstate.module id = tfmodule + modules: [ + 0: tfstate.module id = tfmodule + ] + formatVersion: "1.0" + outputs: [] +} + +# root module +mondoo> tfstate.rootModule { * } +tfstate.rootModule: { + address: "" + childModules: [] + resources: [ + 0: tfstate.resource id = aws_instance.app_server + ] +} + +# recursive list of modules +mondoo> tfstate.modules { * } +tfstate.modules: [ + 0: { + address: "" + resources: [ + 0: tfstate.resource id = aws_instance.app_server + ] + childModules: [] + } +] +``` + +## 🧹 IMPROVEMENTS + +### Updated CIS Policies + +We've been hard at work to get you the latest and greatest CIS benchmarks to secure your systems. This week we've updated the following policies to the latest releases with new and updated controls: + +- AlmaLinux OS 8 Benchmark - Level 1 and Level 2 updated to 2.0 +- Apple macOS 10.15 Catalina Benchmark - Level 1 and Level 2 to 2.1.0 +- Apple macOS 11.0 Big Sur Benchmark - Level 1 and Level 2 to 2.1.0 +- Apple macOS 12.0 Monterey Benchmark - Level 1 and Level 2 to 1.1.0 +- Amazon Elastic Kubernetes Service (EKS) Benchmark - Level 1 and Level 2 to 1.1.0 + +### AWS Best Practices Policies + +We've massively revamped our AWS Best Practices policies with over 8000 lines of improved queries, expanded descriptions, and remediation steps that include Terraform code to correct AWS misconfigurations. + +![Remediation Steps](/img/releases/2022-08-17-mondoo-6.11.1-is-out/aws_best_practices.png) + +### Elevate Privileges with --sudo flag in Local Mondoo Scans + +You can now use the `--sudo` flag with `mondo scan local`. This gives you a consistent way to execute scans with elevated privileges, regardless of the type of Mondoo scan you run. + +### Improved Platform Information + +The Mondoo Fleet view now includes more detailed information on each asset's platform and where that asset is running. This information helps you trace assets scanned in Kubernetes/cloud integrations to the infrastructure code that is responsible for their creation. We've also broken out each Kubernetes resource so you can more easily distinguish between Deployments and the resulting ReplicaSets or Pods they spawn. This new information makes it easier to tell running containers apart from container images or server instances. + +![Platform Titles in Fleet](/img/releases/2022-08-17-mondoo-6.11.1-is-out/platform_titles.png) + +### Kubernetes Clusters Now Match Integration Name + +The Kubernetes clusters listed in the Mondoo CI/CD view now match the name configured in the Kubernetes Integration, making it easier to find your cluster when multiple integrations have been set up. + +![CI/CD Cluster Name](/img/releases/2022-08-17-mondoo-6.11.1-is-out/cluster_name.png) + +### Add `podSpec` and `containers` to Kubernetes Resources + +All Mondoo Kubernetes workloads resources now include `podSpec`, `initContainers`, and `containers` values, allowing you to better secure these resources. + +```coffee +mondoo> k8s.deployment(name: 'luna-frontend' namespace:'default').podSpec{} +k8s.deployment.podSpec: { + containers: [ + 0: { + image: "nginx:1.14.2" + name: "nginx" + ports: [ + 0: { + containerPort: 80.000000 + } + ] + resources: {} + } + ] +} +``` + +### Simpler Kubernetes Manifest Scanning + +You can now scan Kubernetes manifests files without the need to specify the `--path` flag: + +```shell +mondoo scan k8s my_deployment.yml +``` + +### Scanning of Single Terraform Files + +You can now scan just a single Terraform configuration file instead of a whole directory of files: + +```shell +mondoo scan terraform my_tf_deploy.tf +``` + +## 🐛 BUG FIXES AND UPDATES + +- Resolves incorrect CRI-O and containerd socket check titles in the Kubernetes Security policy. +- Updates remediation steps for some Auditd checks in the Linux Baseline to work with Debian/Ubuntu systems. +- Resolves errors querying Kubernetes rolebindings or clusterrolebindings. +- Mondoo Kubernetes Security and Kubernetes Best Practices policies now appear as recommended policies when setting up a Kubernetes integration. +- Resolves page rendering problems in the `...` menu on the AWS Integrations page. +- Resolves buttons rendering too close together on Policy Hub pages. +- Resolves failures in some `if/else` blocks in MQL queries. +- Resolves failures delivering some Mondoo invites. +- Properly detects busybox when in containers. diff --git a/releases/2022-08-25-mondoo-6.12.2-is-out.md b/releases/2022-08-25-mondoo-6.12.2-is-out.md new file mode 100644 index 000000000..aa7419315 --- /dev/null +++ b/releases/2022-08-25-mondoo-6.12.2-is-out.md @@ -0,0 +1,119 @@ +--- +slug: mondoo-6.12.2-is-out/ +title: Mondoo 6.12.2 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.12.2 is out! This release includes private image scanning in Kubernetes clusters and an improved CI/CD UI experience! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Continuous Kubernetes Workload Scanning + +**Problem:** You want to continuously evaluate the security of all the running workloads in your cluster. + +**Solution:** The Mondoo Operator for Kubernetes now automatically discovers all workload resources in the cluster, including Deployments, CronJobs, and Pods. These new resources, when combined with the recently released Kubernetes Security and Best Practices Benchmarks, provide deep insight into the security of deployed workloads at a moment's glance. + +![Workload Scanning](/img/releases/2022-08-25-mondoo-6.12.2-is-out/workloads.png) + +### Kubernetes Private Container Image Scanning + +**Problem:** You scan your container images using Mondoo in CI to ensure they are secure when you deploy them. However, you want to ensure that they stay secure as new security best practices are developed, and CVEs in container images are discovered. + +**Solution:** Mondoo now utilizes `imagePullSecrets` in your Kubernetes cluster to fetch and scan container images in private registries. When you enable image scanning in the Mondoo Kubernetes Operator and use `imagePullSecrets` to store secrets for private container registries, you receive continuous scan results for public and private container images. This gives you quick access to the misconfigurations and CVEs running in your applications. + +![Image Scanning](/img/releases/2022-08-25-mondoo-6.12.2-is-out/image.png) + +### Simpler Getting Started Experience + +**Problem:** You created your first space with Mondoo, but what's next? + +**Solution** A new Workstation setup page is available directly from your new Space page. This setup experience helps you to install Mondoo Client onto your Mac, Windows, or Linux workstation. It then guides you through remote scans you can perform to quickly evaluate the security of your infrastructure without deploying agents or installing integrations. + +![Workstation Setup](/img/releases/2022-08-25-mondoo-6.12.2-is-out/workstation.png) + +### RPM Package CVE Scanning without RPM + +**Problem:** You want to analyze Red Hat- or SUSE-based containers or images to find CVEs, but you can't see package information unless you run on a system with the rpm CLI. + +**Solution** Mondoo now remotely scans for package information on Red Hat-based containers and container images without needing the rpm CLI on your workstation. Fire up your Mac, Windows, or Ubuntu system and scan any Red Hat or SUSE container or container image to find outdated packages with CVEs, all without any additional setup. + +![CVE Scan from macOS](/img/releases/2022-08-25-mondoo-6.12.2-is-out/scan.png) + +## 🧹 IMPROVEMENTS + +### HashiCorp Packer Plugin Officially Verified + +The Mondoo Provisioner for HashiCorp Packer is now available as a HashiCorp verified provisioner on [Packer.io](https://developer.hashicorp.com/packer/integrations/mondoohq/cnspec/latest/components/provisioner/mondoo). + +### Improved CI Project UI + +**Problem:** You want to apply multiple Mondoo scans within your CI projects and view each scan individually. + +**Solution** We've made improvements to Mondoo Client, our GitHub Action, and the CI project UI to make working with complex CI projects a breeze. Mondoo Client CI integrations can now run multiple times within a single CI pipeline. This includes multiple executions within stage/workflow (GitLab/GitHub) and even multiple executions within a job. This makes it possible to use Mondoo to test different assets like Docker containers or Kubernetes manifests in a single pipeline, or to perform before-and-after scans of the same asset. + +![CI Screenshot](/img/releases/2022-08-25-mondoo-6.12.2-is-out/ci.png) + +### New AWS Backup Vaults MQL Resources + +Mondoo now includes a new `aws.backup.vaults` resource for working with [backup vaults in AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/vaults.html). + +Returning the ARN and recover points of all backup vaults: + +``` +mondoo> aws.backup.vaults { arn recoveryPoints { * }} +aws.backup.vaults: [ + 0: { + arn: "arn:aws:backup:us-east-1:1234567891011:backup-vault:aws/efs/automatic-backup-vault" + recoveryPoints: [ + 0: { + creationDate: 2022-08-17 05:00:00 +0000 UTC + isEncrypted: true + completionDate: 2022-08-17 07:14:15.311 +0000 UTC + arn: "arn:aws:backup:us-east-1:1234567891011:recovery-point:1234b01b-da45-40a2-8a3a-d1d01234a8e7" + resourceType: "EFS" + createdBy: { + BackupPlanArn: "arn:aws:backup:us-east-1:1234567891011:backup-plan:aws/efs/73d922fb-9312-3a70-99c3-e69123f9fdad" + BackupPlanId: "aws/efs/73d922fb-9312-3a70-99c3-e69367f9fdad" + BackupPlanVersion: "NDdhZGMxMmUtMTA5Zi00NDgzLThhNzItYmI1Mjk3ZWRlY2M4" + BackupRuleId: "2e8b7566-8ec3-4e4b-8911-3c11dfdb1123" + } + iamRoleArn: "arn:aws:iam::1234567891011:role/aws-service-role/backup.amazonaws.com/AWSServiceRoleForBackup" + encryptionKeyArn: "arn:aws:kms:us-east-1:1234567891011:key/9461a123-05ae-48d0-a90b-7d5123f2578f" + status: "COMPLETED" + } + ] + } +] +``` + +### Improved RunAsNonRoot Policy Queries + +We've improved the Kubernetes RunAsNonRoot queries in our Kubernetes Security Benchmark and Kubernetes Application Benchmark policies. These policies now take into account settings in the PodSecurityContext, eliminating false positives when the PodSecurityContext is used to control RunAsNonRoot behavior. + +### Easier to navigate MQL Docs + +The simple list of resources in the [MQL documentation](/mql/resources/) may have worked initially, but the team is just far too fast adding new resources. We've broken up the resources by category for easier navigation. + +![Improved Navigation](/img/releases/2022-08-25-mondoo-6.12.2-is-out/navigation.png) + +## 🐛 BUG FIXES AND UPDATES + +- Resolves incorrect platform description values in the Fleet view. +- Adds a missing tooltip for control status in the policy results. +- Resolves failures scanning Kubernetes ReplicaSets. +- Resolves Amazon Linux EKS nodes not displaying their platform correctly. +- Updates Amazon Linux 2022 CVE data to the 2022-08-17 release +- Evaluates config files in the /etc/ssh/sshd_config.d when parsing sshd configuration. +- Resolves failures to parse some container images when scanning AKS clusters. +- Improves the reliability of SSH algorithm checks in CIS, BSI, and Linux Baseline by Mondoo policies +- Resolves failures in some MQL queries diff --git a/releases/2022-08-30-mondoo-6.13.1-is-out.md b/releases/2022-08-30-mondoo-6.13.1-is-out.md new file mode 100644 index 000000000..71850b5ba --- /dev/null +++ b/releases/2022-08-30-mondoo-6.13.1-is-out.md @@ -0,0 +1,46 @@ +--- +slug: mondoo-6.13.1-is-out/ +title: Mondoo 6.13.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.13.1 is out! This release includes a new modular GitHub Action and updated EKS policies! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### All New Modular GitHub Action + +The Mondoo GitHub Action has been entirely rewritten to better integrate within modular workflows in your projects. The action now includes individual GitHub Actions for scanning AWS accounts, Kubernetes Clusters, Kubernetes manifests, Docker images, and Terraform configuration files. There's also a new action for uploading Mondoo Policies to PolicyHub and an action for configuring Mondoo Client, so you can run whatever scan commands you may need. Keep in mind that this new setup is entirely different than our previous releases and breaks existing workflow configurations. Make sure to check out the project [Readme](https://github.com/mondoohq/actions/blob/main/README.md) and each new action's readme for more information on usage. As always, let us know if you have any questions at [hello@mondoo.com](mailto:hello@mondoo.com) or join us on our [Mondoo Community Slack](https://mondoo.link/slack) + +Find the new action on the [GitHub Actions Marketplace](https://github.com/marketplace/actions/mondoo-action). + +![GitHub Marketplace](/img/releases/2022-08-30-mondoo-6.13.1-is-out/action.png) + +## 🧹 IMPROVEMENTS + +### Up-to-Date EOL Data + +**Problem:** You want to ensure that no systems in your fleet have reached EOL status, but this requires you to update Mondoo Client for the latest EOL data. + +**Solution:** EOL data is now stored in Mondoo Platform and updated automatically each time the client runs. With this change, your systems will always have the latest EOL data as vendors publish new or updated EOL dates. + +### Expanded CIS Amazon EKS Benchmarks + +We've greatly expanded the CIS Amazon EKS Level 1 and 2 benchmarks with additional queries and improved the overall reliability of many policies. Stay tuned for next week's release for more updates to this policy. + +![EKS Policy](/img/releases/2022-08-30-mondoo-6.13.1-is-out/eks.png) + +## 🐛 BUG FIXES AND UPDATES + +- Prevents sending duplicate Organization or Space invitations if you add a space character to an email address. +- Prevents display of duplicate informational alerts in AWS Integrations. +- Resolves failures querying EC2 instances that lacked assigned key pairs. diff --git a/releases/2022-09-06-mondoo-6.14-is-out.md b/releases/2022-09-06-mondoo-6.14-is-out.md new file mode 100644 index 000000000..6a43a2794 --- /dev/null +++ b/releases/2022-09-06-mondoo-6.14-is-out.md @@ -0,0 +1,78 @@ +--- +slug: mondoo-6.14-is-out/ +title: Mondoo 6.14 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.14 is out! This release includes CI/CD view filtering and improved scan results! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Kubernetes Control Plane Node Scanning + +**Problem:** You need to secure not just your Kubernetes workloads or cluster configuration, but the actual installation of Kubernetes on the control plane servers. + +**Solution** This week, we added the first of many new Mondoo Kubernetes Security policy control plane checks to secure the kube-apiserver, kube-scheduler, kube-controller-manager, and etcd installations. These new controls check for secure permissions on critical configuration files and private key directories. Stay tuned for more controls to secure your control plane next week, along with kubelet controls. + +![Control Plane Scanning](/img/releases/2022-09-06-mondoo-6.14-is-out/control_scan.png) + +### Filtering in CI/CD Views + +**Problem:** You have a particular Mondoo scan you want to see, but there are hundreds of Kubernetes deployments in your admission controller scan results or your CI job results page. + +**Solution** The CI/CD view now includes filtering so you can easily find the scan results of particular Kubernetes deployments or CI scans. + +![CI/CD Filtering](/img/releases/2022-09-06-mondoo-6.14-is-out/filtering.png) + +## 🧹 IMPROVEMENTS + +### Faster, Faster, Faster! + +**Problem:** You're a busy person. You don't have time to wait for Mondoo. + +**Solution:** This week, we greased the gears and tightened the belts in the Mondoo engine. Mondoo scans now sync their asset data faster, and asset deletion time is reduced as well. These speed improvements should be especially pronounced when scanning a Kubernetes cluster with a large number of resources or when bulk deleting assets in the Mondoo Console. + +### Show the Right Instructions First + +**Problem:** Mondoo helps you to set up your workstation for security scanning, but what if you run Arch, not Windows or macOS? You don't want to see setup instructions for operating systems you're not using. + +**Solution:** The Workstation Integration setup page now takes you to the instructions for your platform by default. Use Windows: See Windows steps. Use macOS: See macOS steps. Use Arch, Fedora, etc: See Linux steps. + +![Workstation Setup](/img/releases/2022-09-06-mondoo-6.14-is-out/workstation.png) + +### Expanded CIS Amazon Elastic Kubernetes Service (EKS) Benchmarks + +**Problem:** You need to secure your EKS clusters to achieve compliance. + +**Solution:** We've rewritten much of our CIS Amazon Elastic Kubernetes Service (EKS) Benchmarks to give you the best possible results in securing your EKS clusters. Our updated policies feature seven all-new controls and improvements to the existing controls to provide the best possible results. + +### Improved Linux Kernel Parameter Scanning + +**Problem:** You want to secure the Linux kernel parameters on your systems, but you don't see results when scanning Kubernetes nodes from the Mondoo Kubernetes Operator. + +**Solution:** Mondoo now directly scans kernel parameters by checking the contents of `/proc/sys`. Not only is this method faster because we don't have to run the `sysctl` command on the system, but it also allows us to validate Linux kernel parameters when scanning without Mondoo Client installed. With this update, you should see improved scoring in the Linux Security Baseline policy on Kubernetes cluster nodes. + +### Updated Windows 2016 CIS Benchmarks + +**Problem:** You run Windows 2016 and need the latest CIS policies to achieve compliance in your infrastructure. + +**Solution:** We've updated our Windows 2016 CIS Benchmarks to the CIS 1.4.0 release. This includes new and improved controls to secure your Windows 2016 hosts. + +## 🐛 BUG FIXES AND UPDATES + +- Properly detects the OS of the Ubiquiti Dream Machine Pro / SE as `ubios`. +- Resolves a permission denied message when storing discovery results. +- Prevents unnecessary write operations in the AWS Integration Lambda. +- Detects rate limiting in the AWS Integration Lambda to avoid causing failures in other account operations. +- Properly scans and displays Jenkins jobs that have no Git commit. +- Fixes the incorrect spelling of `exceptions` data in the `macos.alf` resource. +- Includes Docker tag labels for assets when scanning container registries. diff --git a/releases/2022-09-13-mondoo-6.15-is-out.md b/releases/2022-09-13-mondoo-6.15-is-out.md new file mode 100644 index 000000000..acdd91b1d --- /dev/null +++ b/releases/2022-09-13-mondoo-6.15-is-out.md @@ -0,0 +1,79 @@ +--- +slug: mondoo-6.15-is-out/ +title: Mondoo 6.15 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.15 is out! This release includes a whole new fleet UI and new CIS Kubernetes policies! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### All New Fleet View Experience + +**Problem:** You have hundreds or thousands of assets in Mondoo. Finding types of systems and understanding the relationships between assets is difficult. + +**Solution** We added a whole new fleet view experience to Mondoo that groups your assets by type. You can quickly assess the security of different elements in your infrastructure and grasp interconnected security relationships. + +![Updated Fleet UI](/img/releases/2022-09-13-mondoo-6.15-is-out/fleet_ui.png) + +### CIS AKS and GKE Benchmarks + +**Problem:** You want secure your AKS and GKE clusters and workloads. + +**Solution:** Mondoo now includes CIS Level 1 and 2 benchmarks for both Azure Kubernetes Service (AKS) and Google Kubernetes Engine (GKE). These policies include critical controls for securing your cluster nodes and cluster workloads. + +![Kubernetes Policies](/img/releases/2022-09-13-mondoo-6.15-is-out/policies.png) + +### Scan All Kubernetes Resources in Manifests + +**Problem:** You need to scan each Kubernetes resource in your manifests as an individual asset in Mondoo so you can apply the new Mondoo Kubernetes Security and Best Practices policies. + +**Solution:** Mondoo scans now respect the `--discover all` command line flag when scanning local manifests. This lets you scan individual Kubernetes resources and even the containers defined in your manifests. + +![Kubernetes Policies](/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-discover-all.png) + +## 🧹 IMPROVEMENTS + +### Quickly Find Kubernetes Operator Scanned Assets + +**Problem:** You set up your Kubernetes Mondoo integration and now you want to view the discovered assets. + +**Solution:** We added a new `See Your Asset Scores` link in the Kubernetes Integration pages that takes you right to all the assets discovered by the Mondoo Operator. + +![Asset Score Link](/img/releases/2022-09-13-mondoo-6.15-is-out/integration.png) + +### Priorities in Kubernetes Policies + +**Problem:** You've scanned your Kubernetes cluster, and there's a mountain of work to do. Where should you start? + +**Solution:** We've added priorities to the controls in CIS and Mondoo Kubernetes policies. You can now sort your scan results by priority and tackle the most important security issues first. + +![Policy with priorities](/img/releases/2022-09-13-mondoo-6.15-is-out/priorities.png) + +### Improved `mondoo shell` and `mondoo exec` Experiences + +**Problem:** Mondoo 6.0 introduced new simpler command syntax and it's been **so great** that now you can't remember the old syntax when you run `mondoo shell` or `mondoo exec`. + +**Solution:** We've updated `mondoo shell` and `mondoo exec` to use the same simpler syntax as `mondoo scan`. No more `-t` flag or `://` format. Just run `mondoo shell TRANSPORT_NAME`. + +![Policy with priorities](/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-transport.png) + +### Expanded and Improved CIS Kubernetes Policy + +We've made several improvements to the vanilla CIS Kubernetes Level 1 and 2 policies for Master and Worker Nodes. Many controls previously marked as `not implemented` are now implemented and all file permission controls now pass when permissions are more secure than those required by CIS. + +## 🐛 BUG FIXES AND UPDATES + +- Properly redirects users to the `Welcome to Mondoo` page after verifying their email during sign-up. +- Improves the error message guidance when an AWS fails to check-in. +- Fixes the See Your Scores link in the AWS integrations pages to properly load the list of account assets. +- Properly detects the path to Grub2 configs in CIS benchmarks on Amazon Linux. diff --git a/releases/2022-09-21-mondoo-6.16-is-out.md b/releases/2022-09-21-mondoo-6.16-is-out.md new file mode 100644 index 000000000..16920ae21 --- /dev/null +++ b/releases/2022-09-21-mondoo-6.16-is-out.md @@ -0,0 +1,94 @@ +--- +slug: mondoo-6.16-is-out/ +title: Mondoo 6.16 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.16 is out! This release includes new policies and always-up-to-date Kubernetes results. + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Scan Kubernetes Resources on Add/Update + +**Problem:** You rapidly deploy new and updated workloads to your Kubernetes cluster and you want to know that the Mondoo scan results reflect the latest state of your cluster. + +**Solution:** Mondoo now scans your Kubernetes resources as they are updated or added to the cluster, so the fleet view always has the latest information on cluster-wide security. + +Note: This requires the Mondoo Operator for Kubernetes 1.5 or later. To update to this new release run: + +```bash +kubectl delete --ignore-not-found -n mondoo-operator deployment mondoo-operator-controller-manager +kubectl apply -f https://install.mondoo.com/k8s/operator +``` + +### Mondoo Policy for Google Cloud Terraform Plans + +**Problem:** You want to find Google Cloud security issues early in your infrastructure development cycle to prevent insecure changes from ever reaching production. + +**Solution:** This week, we're introducing a new policy, Terraform Plan - CIS Google Cloud Platform Foundation Benchmark. It lets you run Mondoo security scans directly against HashiCorp Terraform plans for your Google Cloud infrastructure. + +### Top Five Recommended Actions + +**Problem:** Mondoo found a lot of security issues for your asset and you're overwhelmed. It's hard to know what to fix first. + +**Solution:** The asset view now shows the five most important actions you should take to improve an asset's security. + +![Top 5 Recommended Actions](/img/releases/2022-09-21-mondoo-6.16-is-out/top5.png) + +### View All Controls for an Asset + +**Problem:** You want to find a specific control that is applied to an asset, but you don't know which policy it's in. + +**Solution:** Mondoo now lists all of an asset's controls independently from their policies. You can filter controls by policy or by search string. + +![Controls](/img/releases/2022-09-21-mondoo-6.16-is-out/controls.png) + +## 🧹 IMPROVEMENTS + +### New Security and Best Practices Controls for Kubernetes + +**Problem:** You want to scan your workloads for common security and best practice misconfigurations before deploying them to your Kubernetes cluster. + +**Solution:** We've expanded our Kubernetes Security Benchmark and Kubernetes Best Practices Benchmark to expose more common misconfigurations in Kubernetes workloads. + +- **Workloads should not run in the default namespace**—This new Kubernetes Best Practices Benchmark control discovers workloads that haven't defined a non-default namespace in which to run. It's best to group workloads into non-default namespaces to better organize work by teams and to isolate workloads. + +- **Workloads should not run with SYS_ADMIN capability**—This new Kubernetes Security Benchmark policy discovers workloads with the SYS_ADMIN or ALL capabilities. The SYS_ADMIN capability is risky because it provides a pod with root capabilities. + +- **Workloads should not run with NET_RAW capability**—This new Kubernetes Security Benchmark policy discovers workloads with the NET_RAW or ALL capabilities. Attackers can use the NET_RAW capability to craft fake packets on the host, which they can use to redirect network traffic bound for other pods. + +- **Pods should have an owner**—This new Kubernetes Best Practices Benchmark control discovers pods that do not have an owner. These pods, commonly called _naked pods,_ don't respawn if the node they're running on fails or terminates. + +### BIOS Updates Control Added to Client Linux Security Baseline by Mondoo + +**Problem:** To secure the boot process, you need to ensure that all Linux systems have the most up-to-date BIOS releases. + +**Solution:** The Client Linux Security Baseline by Mondoo now includes a control to validate that systems have the most up-to-date BIOS when the `fwupd` utility is installed. + +### Error Messages for Unavailable Assets + +**Problem:** You need to know when Mondoo can't connect to an asset. +**Solution:** Mondoo now shows an error message on the asset page when it fails to reach the asset. + +![Unavailable Asset](/img/releases/2022-09-21-mondoo-6.16-is-out/asseterror.png) + +## 🐛 BUG FIXES AND UPDATES + +- Renames potentially confusing control titles in Linux Security Baseline by Mondoo policy. +- Skips internal fields in the `mondoo shell` help output. +- Improves error handling in the AWS Lambda scans. +- Changes Mondoo agent searches to not be case sensitive. +- Returns more helpful error messages from Mondoo Client when a necessary environment variable is missing on CI platforms. +- Fixes missing available packages in asset Platform Vulnerabilities pages. +- Improves the handling of null data for regular data types: We now consistently return non-null data from the upstream service. In the next major release, we will support storing other null data. +- Fixes failures parsing Linux kernel parameters when files in `/proc/sys` can't be read. +- Networks and domains are now properly grouped in the fleet view. diff --git a/releases/2022-09-27-mondoo-6.17-is-out.md b/releases/2022-09-27-mondoo-6.17-is-out.md new file mode 100644 index 000000000..05e03b7fb --- /dev/null +++ b/releases/2022-09-27-mondoo-6.17-is-out.md @@ -0,0 +1,133 @@ +--- +slug: mondoo-6.17-is-out/ +title: Mondoo 6.17 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.17 is out! This release includes a new asset explorer UI and Kubernetes MQL resources! + +--- + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Explore Asset Relationships + +**Problem:** Your environment is complex, and so is the job of securing it. You want to understand not just the security of a single asset, but how each asset relates to your overall infrastructure security. + +**Solution:** Mondoo now exposes the complex relationships that make up your infrastructure security in a new Explorer tab for each asset. The Explorer view lets you quickly evaluate the security of related assets so you can better understand the security of complex infrastructure like cloud accounts or Kubernetes clusters. Each related asset is shown as a color-coded tile, which you can hover over for additional scan information. Here we see the results of Kubernetes job scans, including a Mondoo Operator job, which scored an A: + +![Asset Explorer](/img/releases/2022-09-27-mondoo-6.17-is-out/explorer.png) + +### Bundesamt für Sicherheit in der Informationstechnik (BSI) Windows Policy + +**Problem:** You want to secure your Windows systems according to the Federal Office for Information Security (BSI) and pass a BSI audit. + +**Solution:** Mondoo now includes a new `BSI SYS.1.2 Windows Server 2016/2019/2022` policy. BSI is a German standard for IT security, similar to SOC2 in the US. This new policy complements our existing `BSI SYS.1.3 Linux and Unix Servers` policy for Debian- and Red Hat-based Linux systems. These policies are especially helpful for users in the DACH region and Germany in particular. + +![BSI Windows Policy](/img/releases/2022-09-27-mondoo-6.17-is-out/bsi.png) + +### Automatic Cleanup of Kubernetes Resources + +**Problem:** Resources come and resources go, but they sure add up quickly. Kubernetes clusters often contain large numbers of ephemeral resources, and over time Mondoo's scanning of resources results in spaces full of long-dead assets. + +**Solution:** + +Mondoo now automatically cleans up Kubernetes assets older than 24 hours, keeping your spaces tidy and full of relevant scans. + +### New `k8s.admissionreview` and `k8s.admissionrequest` Resources + +**Problem:** You want to write policies against incoming Kubernetes deployments to understand the security of the deployment request itself. + +**Solution:** Mondoo now includes new `k8s.admissionreview` and `k8s.admissionrequest` resources that allow you to write policies against incoming deployments. Stay tuned as we expand this functionality over time to allow additional control over the workloads that make it into your cluster. + +### New `k8s.kubelet` Resource + +**Problem:** You need to secure your Kubernetes cluster nodes to secure your infrastructure, but the Kubelet configuration system is complex. How do you handle the different names for the same configs and different defaults depending on the config location? Should you check the CLI flags, the YAML config, or the JSON config? + +**Solution:** We've abstracted the complexity of parsing the Kubelet config options into a new `k8s.kubelet` resource. The resource parses all three configuration locations, handles defaults, and understands the changing default values when config files are loaded. With this resource, you can write simple queries to check for Kubelet config options and let Mondoo handle the heavy lifting of parsing Kubernetes configuration logic. + +A manual query that does not account for default values: + +```coffee +if (props.kubeletconfigpath != null) { + cfg = parse.yaml(props.kubeletconfigpath).params + cfg["featureGates"]["RotateKubeletServerCertificate"] != null + cfg["featureGates"]["RotateKubeletServerCertificate"] == true +} else { + processes.where( executable.contains("kubelet")).all(flags["feature-gates"] == "RotateKubeletServerCertificate=true") +} +``` + +An updated query that includes default value evaluation: + +```coffee +k8s.kubelet.configuration["featureGates"]["RotateKubeletServerCertificate"] == true +``` + +We've also updated our existing Kubernetes policies to use this new resource. This dramatically improves the reliability of configuration parsing in these policies, removing potential false positives. + +## 🧹 IMPROVEMENTS + +### env and envFrom in Kubernetes Container Resources + +**Problem:** You want to write policies to ensure that only secure environment variables are passed into your Kubernetes workloads. + +**Solution:** Container resources now expose the `env` and `envFrom` configs. This allows you to inspect manifests with plain text secrets being passed in via env vars like this: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: luna-frontend + namespace: prod +spec: + containers: + - name: luna-frontend + image: lunalectric/frontend:1.0 + env: + - name: LOGIN + value: "oh_no" + - name: PASSWORD + value: "they_are_really_doing_this!" +``` + +Using a query to check for env var names: + +```coffee +k8s.pods.all( + containers.all( + env["LOGIN"] == null && env["PASSWORD"] == null + ) +) +``` + +### Expanded Kubernetes Security & Best Practices Policies + +We continue to expand our Kubernetes Security Benchmark policy to better secure workloads in your clusters. This week we added two new controls: + +- `Pods should mount any host path volumes as read-only`: Ensures that pods don't have write access to paths on the cluster node, which would allow modifying the host configuration. +- `Pods should not bind to a host port`: Ensures pods aren't binding directly to cluster nodes where they can bypass network controls. + +### `mondoo exec` Is Now `mondoo run` + +We've updated the `mondoo exec` command to be `mondoo run`. The existing command will still work, but help will show just `mondoo run`. We're making this change to align CLI options for some exciting new releases coming soon. Stay tuned for more updates! + +## 🐛 BUG FIXES AND UPDATES + +- GitHub, Terraform, and cloud Kubernetes policies in the Policy Hub now include custom icons. +- Updates `Pods should not run with NET_RAW capability` and `Pods should not run with SYS_ADMIN capability` controls in the Mondoo Kubernetes Security policy to not fail when no `securityContext` or `capabilities` are defined. +- Resolves failures in `Minimize the admission of root containers` and `Minimize the admission of containers with the NET_RAW capability` controls in CIS Kubernetes policies. +- Asset view once again includes the state of the asset's Mondoo Client. +- Long policy names now truncate better in the asset view. +- The `--option` command line flag is now properly passed through to AWS EBS-based scans. +- The `--token` command line flag is now properly set when scanning GitHub organizations or repositories. +- Scans in the CI/CD view no longer appear unscored. +- Kubernetes cluster nodes are no longer part of the `k8s-workload` family. +- Prevents failures checking kernel parameters if files in `/proc/sys` cannot be read. diff --git a/releases/2022-10-04-mondoo-6.18-is-out.md b/releases/2022-10-04-mondoo-6.18-is-out.md new file mode 100644 index 000000000..8f79b438d --- /dev/null +++ b/releases/2022-10-04-mondoo-6.18-is-out.md @@ -0,0 +1,92 @@ +--- +slug: mondoo-6.18-is-out/ +title: Mondoo 6.18 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +🥳 Mondoo 6.18 is out! This release includes new policies and better out-of-the box Kubernetes scanning! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### NIST Special Publication 800 Preview Policies for AWS + +**Problem:** You need to comply with NIST Special Publication 800 guidance in your AWS environment. + +**Solution:** We're introducing a preview of five new NIST SP 800 policies to help you keep your systems in compliance with US federal government requirements. + +![NIST 800 Policies](/img/releases/2022-10-04-mondoo-6.18-is-out/nist.png) + +### Kubernetes Asset Scanning By Default + +**Problem:** You want to scan your Kubernetes cluster and apply the Mondoo Kubernetes Security and Kubernetes Best Practices policies to all of the workloads in your cluster. But without extra flags, only the cluster shows up and the new policies don't apply. + +**Solution:** Mondoo Kubernetes scans now automatically scan cluster objects as assets. This provides a much more Kubernetes-friendly view of where security problems exist within your cluster. You can use our new policies with dozens of controls that aren't present in the legacy Kubernetes Application Benchmark policy. + +![Kubernetes Assets](/img/releases/2022-10-04-mondoo-6.18-is-out/assets.png) + +### Expanded HashiCorp Terraform GitHub Action Support + +**Problem:** You want to set up the Mondoo GitHub Action to ensure the security of HashiCorp Terraform plans and state files so you can be confident in your changes before you apply them. + +**Solution:** The [Mondoo GitHub Action](https://github.com/marketplace/actions/mondoo-action) 0.7.0 now includes two new actions for scanning your Terraform code: + +- **[Terraform State File Action](https://github.com/mondoohq/actions/blob/main/terraform-state)** scans Terraform state files for security configuration best practices. +- **[Terraform Plan Action](https://github.com/mondoohq/actions/blob/main/terraform-plan)** scans Terraform plan repositories for security configuration best practices. + +## 🧹 IMPROVEMENTS + +### Simplified Terraform State File Resource + +**Problem:** You want to query out resources in Terraform state files without writing complex queries that dig deep into the files. + +**Solution:** We've simplified MQL access to resources from the Terraform state files. + +Before this release, you had to iterate over all Terraform modules to get access to the resources: + +```coffee +cnquery> terraform.state.rootModule.resources { providerName == "registry.terraform.io/hashicorp/null" } +terraform.state.rootModule.resources: [ + 0: { + providerName == "registry.terraform.io/hashicorp/null": true + } +``` + +With this release, you can now access the resources directly from the state: + +```coffee +cnquery> terraform.state.resources +terraform.state.resources: [ + 0: terraform.state.resource id = null_resource.ls +] +``` + +## 🐛 BUG FIXES AND UPDATES + +- Unknown scan status coloring is now always white throughout the console. +- Corrects control counts on the asset pages. +- Fixes small score donut charts on the asset pages. +- Searches of scans from the Kubernetes Admission Controller are now case insensitive. +- Adds missing breadcrumb links on the main Fleet page. +- Corrects sample PowerShell setup commands on the Workstation Integration page. +- Makes the asset type summary text more consistent. +- Properly detects an asset's platform. +- Improves the reliability and performance of removing policies and assets. +- Improves reliability of EBS volume scans with the AWS integration. +- `mondoo.version` queries now return the correct Mondoo Client version. +- Resolves errors deleting CI/CD jobs. +- Resolves Kubernetes cluster names reverting to UID from the friendly name in the CI/CD view. +- Improves the reliability of CIS Kubernetes controls that inspect the state of the Kubelet. +- `mondoo scan aws ec2 ebs` now respects the `--option region` option. +- Resolves an error that could cause creation of empty AWS account assets when scanning instances. +- Prevents errors in the `Linux Security by Mondoo` policy when `/etc/shadow` is not present on a system. +- Container images no longer show up in the fleet view as container registries during scans. +- Fixes parsing of OS uptime on some Linux distributions. +- Corrects reporting of Kubernetes Integration errors while cluster during scans. +- Scanning a Kubernetes cluster with an invalid namespace specified no longer creates an empty cluster asset. diff --git a/releases/2022-10-11-mondoo-6.19-is-out.md b/releases/2022-10-11-mondoo-6.19-is-out.md new file mode 100644 index 000000000..93e3511ce --- /dev/null +++ b/releases/2022-10-11-mondoo-6.19-is-out.md @@ -0,0 +1,136 @@ +--- +slug: mondoo-6.19-is-out/ +title: Mondoo 6.19 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 6.19 is out! This release includes new Kubernetes content and UI improvements! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 IMPORTANT CHANGES + +### New Mondoo Policies Replace Existing Policies + +We've introduced newly renamed Mondoo out-of-the-box policies. These policies include more consistent policy and UID names to communicate security vs. best practices as well as the new scoring system mentioned below. We've marked the existing policies as deprecated to avoid impacting users at this time. You can switch to these new policies by disabling the deprecated policy and enabling these new policies in the Policy Hub. At a date we will automatically migrate users from the existing policies to these new policies. Stay tuned for more details! + +### New Policy Scoring Evaluation + +We've updated our out-of-the-box Mondoo policies to use a more appropriate scoring system. With this change the overall score a policy receives is now always reflecting the most critical failure. Previously, we would compute an average for all failed controls, which sometimes hid critical controls. With this change high impact controls in policies are not hidden by a large number of low impact passing controls anymore. For many users this will increase the number of low scoring policies in their spaces by exposing controls that are failing. + +### GitHub Discussions open for business + +**Problem:** You have a question about writing policies or scanning hosts with Mondoo, but nothing comes up in search engines, and waiting on Slack responses can take forever. + +**Solution:** We decided to move our main community presence to [GitHub Discussions](https://github.com/orgs/mondoohq/discussions). Slack is fantastic for real-time discussions, but it's problematic for getting quick answers to common questions. With GitHub Discussions, every question asked in the past is available in search. Over time this builds up an extensive FAQ resource. You can find these discussions at [https://github.com/orgs/mondoohq/discussions](https://github.com/orgs/mondoohq/discussions). We already started to move interesting topics there, so you'll find plenty of MQL guidance. We'll still be around on Slack and Discord for interactive chat, but prefer to discuss common topics on GitHub now. + +## 🎉 NEW FEATURES + +### New Kubernetes Security Policies + +**Problem:** Your Kubernetes workloads are secure, but you want to ensure that the cluster and cluster nodes are also secured. + +**Solution:** We've introduced a number of new controls for the Kubernetes API Server and Kubelets to keep your cluster secure: + +| Policy | Applies To | +| ------------------------------------------------------------------------------------------ | ----------- | +| Ensure the kube-apiserver is not listening on an insecure HTTP port | API Server | +| Ensure the kube-apiserver does not allow anonymous authentication | API Server | +| Deployments should not run Tiller (Helm v2) | Deployments | +| Pods should not run Tiller (Helm v2) | Pods | +| Deployments should not run Kubernetes dashboard | Deployments | +| Pods should not run Kubernetes dashboard | Pods | +| Disable anonymous authentication for kubelet | Kubelets | +| Configure kubelet to capture all event creation | Kubelets | +| Configure kubelet to ensure IPTables rules are set on host | Kubelets | +| Configure kubelet to protect kernel defaults | Kubelets | +| Do not allow unauthenticated read-only port on kubelet | Kubelets | +| Ensure the kubelet is not configured with the AlwaysAllow authorization mode. | Kubelets | +| Configure kubelet to use only strong cryptography | Kubelets | +| Run kubelet with a user-provided certificate/key | Kubelets | +| Run kubelet with automatic certificate rotation | Kubelets | +| Ownership and permissions of kubelet configuration should be restricted | Kubelets | +| Specify a kubelet certificate authorities file and ensure proper ownership and permissions | Kubelets | + +### NSA/CISA Kubernetes Hardening Guidelines Preview Policy + +**Problem:** You want to secure your Kubernetes infrastructure against the latest NSA/CISA guidance. + +**Solution:** Mondoo now includes a preview policy implementing the NSA/CISA guidance. This guidance looks at Kubernetes security in the control plane, cluster nodes, and workloads. Stay tuned for updates to this policy in the coming weeks. Be sure to check out the NSA's press release announcing this new guidance document, which includes a link to the complete PDF: https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/ + +### Long-Lived Registration Tokens + +**Problem:** You want to automate the registration of new nodes into Mondoo Platform, but it's difficult when new registration tokens need to be generated constantly. + +**Solution:** You can now generate long-lived aka non-expiring registration tokens in the UI. These are ideal for automated processes like auto-scaling groups where tokens are stored in secrets management systems and cannot expire. + +![Non-expiring Tokens](/img/releases/2022-10-11-mondoo-6.19-is-out/tokens.png) + +### New Service Account UI + +**Problem:** Each integration you set up in Mondoo adds a service account, and managing these accounts can be difficult if you want to remove unused accounts or view usage. + +**Solution:** We've updated the service account page to make it easier to manage service accounts. The new UI exposes important information like the creation date, the last used date, and what created the account. You can also expand each item in the list to link to the integration using the service account, change permissions, or delete the account. + +![New Service Accounts UI](/img/releases/2022-10-11-mondoo-6.19-is-out/service_accounts.png) + +## 🧹 IMPROVEMENTS + +### EBS Volume Scanning in the Instance's Region + +**Problem:** You want to scan AWS instances without installing the Mondoo Client using the EBS volume scanning, but you run in multiple regions, making the cost prohibitive. + +**Solution:** We now scan the EBS volume of instances in the regions where the instances run. This avoids potentially costly data transfer costs. + +### More Severity Data in Policies + +**Problem:** At first scan Mondoo finds an enormous pile of security issues in your environment for you to tackle, but which ones are the most important? + +**Solution:** We've continued to improve our Mondoo's ability to help you prioritize your work with severities in policies. Our Windows policies now all include severity data and Linux policies have been adjusted to make sure you're tackling the most pressing issues first. + +### Better Prioritized Control Views + +**Problem:** Policies on your assets can have hundreds of controls and you need to evaluate the security of an asset at a glance. + +**Solution:** We've improved how controls in policies are displayed to make it easier to quickly understand the security posture of your assets. Skipped policies are now displayed at the bottom of the results, allowing you to see the controls that have passed or failed more easily. This is particularly useful when viewing the results of the Mondoo Kubernetes Security policy, which has many workload controls skipped depending on the asset type. We're also now sorting by severity within each status so you can quickly see the highest severity failed controls. + +You can now also manually sort on any column in the results, so you can always view the data just how you like. + +![Sorted Controls](/img/releases/2022-10-11-mondoo-6.19-is-out/controls.png) + +### Hover over in Top 5 Recommended Actions tile + +**Problem:** The Top 5 Recommended Actions tile shows high-impact failures that should be resolved first, but it's often hard to determine which controls have failed due to the small size of the tile and the long control names. + +**Solution:** If part of a control name is clipped due to the size of the Top 5 Recommended Actions tile, you can now hover over the titles for a tooltip with the complete name. + +![Hover over in top 5](/img/releases/2022-10-11-mondoo-6.19-is-out/hover_over.png) + +### All Kubernetes Namespaces Scanned by Default + +**Problem:** You want to scan your Kubernetes cluster, but it includes workloads from many different namespaces, which aren't scanned by default. + +**Solution:** By default Mondoo will now scan all Kubernetes namespaces. This means a complete cluster scan can be achieved with just `mondo scan k8s` now. The `--all-namespaces` CLI flag has been deprecated and will be removed from a future release. If you'd like to limit your scans to just a single namespace, you can still do this by specifying the namespace on the CLI with `--namespace FOO`. + +## 🐛 BUG FIXES AND UPDATES + +- Fix failures to properly filter on tags when scanning AWS instances. +- Fix failures parsing the contents of `/proc/sys` when a file was empty. +- Fix incorrect asset counts in the fleet view after an asset was deleted. +- Kubernetes manifest names in the shell now show as the file name and not the file's directory. +- Improve help text to make it more clear what commands do. +- Remove the undocumented `mondoo scan github user` sub-command. Stay tuned for the return of this command with more clear use cases for scanning all user repositories. +- Use sysctl to scan Linux kernel parameters where we can to prevent failures scanning `/proc/sys` in some scenarios. +- Properly read the exit codes of commands that are executed on Docker containers. +- Improve error output when connecting to AWS accounts. +- Do not panic when querying a single k8s resource without providing id/name. +- Do not fail when using `k8s.networkPolicies` if a cluster has the Calico CNI. +- Registration tokens properly refresh in the integrations setup UI pages. +- Prevent failures to scan EC2 instances when a single keypair is missing. +- Fix failures using Microsoft 365 certificate authentication. +- Fix failures in search filtering for Kubernetes admission controller assets. diff --git a/releases/2022-10-18-mondoo-7.0-is-out.md b/releases/2022-10-18-mondoo-7.0-is-out.md new file mode 100644 index 000000000..2321cfd2f --- /dev/null +++ b/releases/2022-10-18-mondoo-7.0-is-out.md @@ -0,0 +1,107 @@ +--- +slug: mondoo-7.0-is-out/ +title: Mondoo 7.0 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.0 is out! + +I you have been following our past releases, you'll have seen a ton of improvements that were added during the last months, including: + +- Major new features for Kubernetes + - Kubernetes resource, workload, node, pods, and control plane scanning + - Automatic discovery of assets and related resources + - Mondoo Kubernetes Operator 1.0 +- New and updated compliance policies, including: + - NSA, NIST, BSI, AKS, EKS, Best Practices and too many updates to mention here +- New UI for fleet views, asset relationships, recommended actions, control and policy views +- Supply chain security, including GitHub and GitLab +- Deeper CI/CD integrations (new UI, better filtering) + - support for Azure pipelines, Jenkins, CircleCI +- Extended integration for Terraform and Packer +- AWS side scanning, GCOS, and GitHub Actions + +**Breaking changes** + +- The previously deprecated features from v5.x have now been removed. If you have any old clients running v5.x, they will stop working with this release. Please upgrade to the latest version. All v6.x clients continue to be supported. + - During v5.x policies were compiled differently. The changes are behind the scenes. Simply re-run policies with a new version of Mondoo. +- Previously scanned results that were collected as `null` may now show up as empty values. Once the asset is re-scanned, this is fixed. + +**Deprecations** + +All deprecations will be supported throughout the lifetime of Mondoo v7. We will remove them when we release Mondoo v8. + +- We have a major open-source announcement coming next week. After it, we will start to deprecate the current `mondoo` CLI in favor of the new commands. Don't worry: it's a drop-in replacement and smooth transition. +- We are removing the need to call `.list` for many resources that have required it so far. For example `users.list` now becomes `users`, `ports.list` becomes `ports` and so on. Please note, that blocks are now automatically applied to the child elements of such lists. For example `users { name }` is valid, but `users { list }` is now deprecated and will be removed in v8. This is relevant for e.g. `ports.listening { ... }`. Since the block applies to individual blocks, you don't want to write e.g. `ports { listening }` anymore. + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### CI Setup in Integration + +**Problem:** You want to set up Mondoo to scan projects through your favorite CI systems, but the setup is manual and requires jumping between the Mondoo console and documentation. + +**Solution:** We've revamped how Mondoo CI integrations are set up to make them faster and more intuitive to set up. Gone is the manual service account setup process and documentation site, and in its place are CI projects set up through the Integrations tab in the console, just like other integrations. Service account tokens are automatically created, and the integration setup process now suggests helpful policies for use with your CI projects. + +![New CI Setup Page](/img/releases/2022-10-18-mondoo-7.0-is-out/ci_setup.png) + +## 🧹 IMPROVEMENTS + +### Updated EOL Data + +We've updated our platform EOL data with new platform versions, so you always have the most up-to-date data: + +- Added Google Container OS 101 with a release date of Sept 15, 2002, and an EOL date of Sept 1, 2024. +- Added Google Container OS release date information for milestone 97, 93, and 89. +- Added macOS 13.0 with a release date of Oct 24, 2022. +- Updated macOS 10.14 with an EOL date of Jul 21, 2021 when the last security update was released. + +### Improved Mondoo Operator Security + +We've improved the security of the Mondoo Kubernetes Operator by dropping unnecessary privileges from any pods that are created by the operator. + +### New and Improved Policies + +- All Mondoo policies now include additional usage guidance with examples of how to run the policies using cnspec. +- Linux Security by Mondoo policy's auditd controls now fail instead of erroring if auditd configs are not found. +- Policy control UIDs in `Mondoo TLS/SSL Security Baseline`, `Linux Workstation Security by Mondoo`, and `Linux Security by Mondoo` policies better describe what is being checked. +- Kubernetes Cluster and Workload Security by Mondoo policy's `Ensure that the Kubernetes PKI/SSL directory is owned by root:root` control properly handles paths on Minikube. +- CIS Kubernetes Worker Node Level 1 policy's `Ensure that the Kubelet only makes use of Strong Cryptographic Cipher` no longer results in a query error on Minikube. +- CIS Kubernetes Master Level 1 policy's Pod Security Standards controls have been updated to not run against workloads. +- CIS Ubuntu 20.04 Server Level 1 policy's `Ensure password creation requirements are configured` no longer errors if PAM is not installed, such as when Mondoo is scanning a container or container image. +- CIS Ubuntu 20.04 Server Level 1 policy's `Ensure chrony is configured` no longer errors if chrony's config is not found. +- Terraform HCL Security Static Analysis for Google Cloud policy's `Ensure that Cloud Storage bucket is not publicly accessible` control was updated to improve reliability. +- NSA Kubernetes Hardening Guide Version 1.2 policy's `Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate` and `Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate` checks now check for the proper values. +- NSA Kubernetes Hardening Guide Version 1.2 policy now includes new controls to check for secure cryptographic ciphers on the API Server and Kubelets. + +## 🐛 BUG FIXES AND UPDATES + +- Add links to download Mondoo Client to the manual setup instructions on the Workstation integration page. +- Add missing breadcrumbs to the Policy Hub pages to make it easier to navigate +- Avoid a scan failure when a `/proc/sys` file cannot be read. +- Don't show controls skipped due to conditionals in policies as being `disabled` on assets. +- Don't show double asset scans in the CI projects. +- Fix container images being incorrectly classified as operating system assets. +- Fix incorrect breadcrumb names on some integration pages. +- Fix incorrect Kubernetes namespace IDs in `k8s.namespaces{ id }` if Kubernetes objects have no namespace. +- Fix the `--sudo` flag not being honored when running `mondoo scan` +- Fix the`mondoo.version` MQL query not returning the correct version +- Google Container OS systems are now properly categorized as operating systems instead of "Uncategorized Assets" +- Mondoo Platform links for CI/CD jobs on the CLI now go to the proper CI/CD asset view. +- Only show asset scheduled EOL warning if the vendor has scheduled the EOL for less than one year in the future. +- Performing an empty search in the Fleet view no longer goes to an error page. +- Policy descriptions on Policy Hub no longer suggest the legacy `mondoo scan -t` CLI format. +- Policy Hub no longer lists potentially incorrect manual scan instructions. +- Properly render the list of assets when navigating through the pagination. +- Remember the previous fleet filter selection when returning to the fleet page after viewing an asset. +- Resolved failures running `mondoo scan gitlab` +- Resolved multiple errors when running CIS Kubernetes Master Level 1 policy on Minikube clusters. +- The initial load of the Mondoo console no longer flashes white when dark mode is enabled. +- Updates the VMware and Azure integration pages to use the latest `mondoo scan` syntax. +- Warn when using `mondoo scan k8s --namespace` if the namespace was not found on the cluster. diff --git a/releases/2022-10-25-mondoo-7.1-is-out.md b/releases/2022-10-25-mondoo-7.1-is-out.md new file mode 100644 index 000000000..c088277cc --- /dev/null +++ b/releases/2022-10-25-mondoo-7.1-is-out.md @@ -0,0 +1,149 @@ +--- +slug: mondoo-7.1-is-out/ +title: Mondoo 7.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.1 is out! This release includes UI and policy improvements! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Local Provider by Default + +**Problem:** You just want to scan your local system for security misconfigurations without needing to think about scan providers. + +**Solution:** We've make `mondoo scan` default to the local system once again. With this change you can easily scan you local system without the need to specify the `local` provider. + +### Bulk Delete Assets + +**Problem:** You have a large number of assets that you want to clean up, but deletion involves opening each asset and selecting the delete icon. + +**Solution:** You can now multi-select and delete assets directly from the fleet view. Select the pencil icon in the top-right corner of the asset list, check each asset to delete. From the `Batch Edit Selection` pull down menu, select `Delete`. + +![Batch Delete Assets](/img/releases/2022-10-25-mondoo-7.1-is-out/batch_delete.png) + +### Group Kubernetes Admissions Controller Scans by Namespace + +**Problem:** New deployments come into Kubernetes clusters at a dizzying pace and it's often hard to see which new workflows are being deployed to which namespaces. + +**Solution:** We've reworked our the Kubernetes admission controller UI in the CI/CD tab to better show which namespaces workflows are being deployed into. This helps group similar scans so you can more easily escalate issues to the proper teams. + +![Grouped Namespaces](/img/releases/2022-10-25-mondoo-7.1-is-out/namespaces.png) + +### Group Multiple CI Scans + +**Problem:** It's often useful to run multiple Mondoo scans in your CI/CD pipelines, but the scans don't show up together in the Mondoo CI/CD project pages. + +**Solution:** Scans are now grouped together in the CI/CD project pages so you can better tell which scans ran in the same branch commits or PRs. + +![CI Jobs](/img/releases/2022-10-25-mondoo-7.1-is-out/ci_jobs.png) + +### Ignore Kubernetes Namespaces in Scans + +**Problem:** You have a large Kubernetes cluster with different namespaces owned by different teams, and you don't want to scan the entire cluster at once. + +**Solution:** + +We've added two new CLI flags to allow you to control which namespaces to scan and which to skip. To scan all namespaces except ones that you specify, use the `--namespaces-exclude` flag. To scan just the namespaces you specify, use the `--namespaces` flag. + +```shell +mondoo scan k8s --namespaces-exclude mondoo-operator +mondoo scan k8s --namespaces luna-ui,luna-backend +``` + +#### New Microsoft Azure Security by Mondoo policy + +**Problem:** You want to secure your Azure infrastructure against common security misconfigurations + +**Solution:** Mondoo now includes a new Azure Security by Mondoo policy. This policy provides guidance for establishing minimum recommended security and operational best practices for Azure. This policy includes ten controls, with new controls planned for future Mondoo releases. + +## 🧹 IMPROVEMENTS + +### SSM Connections using Instance Name + +You can now scan AWS instances using Amazon's SSM using either the IP or the instance name. This makes it easier to scan instances using the names shown in the awscli or the AWS Management Console. + +### Use Shorter Container Names + +Mondoo now includes the shortened container SHAs to match the Docker experience. These short container names fit better in the UI and match the names shown when running Docker CLI commands. + +![Short Image Name](/img/releases/2022-10-25-mondoo-7.1-is-out/short_image_name.png) + +### VMware Appliance Now Auto Upgrades Mondoo + +We know you want the latest Mondoo Client capabilities so you can run updated policies, so we've updated the Mondoo VMware appliance to automatically pull in the latest client releases. No more compatibility concerns or time spent manually updating the instance. + +### Better Examples in CI Integration Pages + +The CI/CD integration setup pages now include additional example configuration files, making it easier to setup Mondoo in your CI pipelines. + +![Additional CI Examples](/img/releases/2022-10-25-mondoo-7.1-is-out/ci_examples.png) + +### NSA Kubernetes Hardening Guide Version 1.2 Generally Available + +The NSA Kubernetes Hardening Guide Version 1.2 policy is no longer considered to be a preview release after the addition of several new controls and fixes: + +- Add an improved policy description with example usage information. +- Update remediation steps to improve clarity. +- Switch policy scoring system so that the policy score on an asset matches the worst offense found rather than the average of all scores (which previously could mask critical issues). +- Update controls to properly run on the Kubernetes cluster asset itself when appropriate. +- Fix `Ensure that the Kubernetes PKI/SSL directory is owned by root:root` control to work on Minikube. +- Split `Pods should not run with NET_RAW or SYS_ADMIN capabilities` control into two controls so it can be disabled at a more granular level. +- Add new controls: + - `CVE-2021-25742 - checking nginx-ingress ConfigMaps for dangerous settings` + - `Do not allow ClusterRoles that allow users execution privileges into containers` + - `Do not allow roles that allow users execution privileges into containers` + - `Minimize and verify access to cluster-admin binding via rolebindings` + - `Minimize and verify access to cluster-admin binding` + +![NSA Policy](/img/releases/2022-10-25-mondoo-7.1-is-out/nsa_policy.png) + +### Policy Improvements + +We continue to improve the descriptions, remediation steps, and reliability of our out-of-the-box Mondoo policies so you can secure your infrastructure with less effort. This week we've made the following policy improvements: + +- Add improved descriptions and remediation steps to all Kubernetes Security controls. +- Add getting started guides to each Mondoo policy with usage information. +- CIS and BSI Linux policies now accept the `shadow` group when checking permissions on `/etc/shadow` and `/etc/shadow-`. +- Move additional queries in the CIS Kubernetes policies from the cluster asset to the individual workload assets. This helps more quickly identify the workload in question and allows for more granular skip/disables. +- Adjust impact levels in the CIS and Mondoo Linux policies to lower levels where appropriate. +- Disable alerting of Pod Security Standard policies in the mondoo-operator namespace as enabling PSS would break operator functionality. +- Improve descriptions and remediation steps for `/etc/*` file check controls in Linux Security by Mondoo policy. +- Remove `livenessProbe` and `readinessProbe` checks from CronJobs and Jobs in `Kubernetes Best Practices by Mondoo` as these recommendations don't apply to Job and CronJob workloads. +- Update remediation steps in Linux Security policy's `Ensure system accounts are non-login` control to properly identify high UID system accounts. +- Fix incorrect remediation step in Linux Security by Mondoo policy's `Ensure secure permissions on SSH private host key files are set` control. +- Fix `AWS Security by Mondoo` policy's `Ensure there is only one active access key available for any single IAM user` control to properly check that one key is active. + +### Time `+` operator in MQL + +We've added a new `+` operator to the Time resource so you can more easily manipulate time values in your MQL queries. This makes queries like the ones below possible: + +![Time manipulation](/img/releases/2022-10-25-mondoo-7.1-is-out/time.png) + +## 🐛 BUG FIXES AND UPDATES + +- Update the CI integrations pages to provide correctly encoded Mondoo credentials for use with CI platforms. +- Add missing icons to Mondoo policies in the Policy Hub. +- Improve alignment of enabled/selected policies in the Policy Hub. +- Fix the `MONDOO_CONFIG_PATH` environmental variable not being honored in the Mondoo CLI. +- Fix the progress bar not showing during Mondoo CLI scans. +- Update the AWS integration to skip creating an EBS snapshot if one already exists. +- Add workaround rate limiting with EBS snapshot scanning in large accounts. +- Better handle long asset names in the fleet view. +- Present the original case of the Kubernetes integration instead of uppercasing the name. +- Fix top recommended action links on CI job assets to load controls properly. +- Add missing page titles to some pages in the console. +- Fix minor UI alignment and spelling mistakes. +- Ensure that AWS account assets are created when scanning accounts. +- Don't create empty k8s-node assets when scanning Kubernetes clusters. +- Find GCP instances in all zones when scanning GCP accounts. +- Don't return an error if all policy controls are skipped. +- Add a friendly error message when trying to connect to assets of SSH without an identity file or password. +- Improve the reliability of Kubernetes asset garbage collection in the Mondoo Kubernetes Operator. diff --git a/releases/2022-11-01-mondoo-7.2-is-out.md b/releases/2022-11-01-mondoo-7.2-is-out.md new file mode 100644 index 000000000..0625f8fbb --- /dev/null +++ b/releases/2022-11-01-mondoo-7.2-is-out.md @@ -0,0 +1,203 @@ +--- +slug: mondoo-7.2-is-out/ +title: Mondoo 7.2 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.2 is out! This release launches our new OSS projects cnquery and cnspec + much more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Powered by new open source projects + +We are excited to announce the open-source release for: [cnquery](https://github.com/mondoohq/cnquery) and [cnspec](https://github.com/mondoohq/cnspec). These are the core components of the Mondoo CLI and will replace it going forward. + +[cnquery](https://github.com/mondoohq/cnquery) is an asset inventory and search engine, which features an interactive shell, MQL runner, and query pack execution. Query packs are a new way to create a bundle of queries which are automatically executed and all data collected. This is useful for the creation of asset inventories and collection of data during incidents. They are a lightweight alternative to policies (without scoring). + +[cnspec](https://github.com/mondoohq/cnspec) is the security test project, which focuses on misconfigurations and vulnerabilities. It is built on top of cnquery and adds policies and scored controls. It is also a drop-in replacement to the Mondoo CLI today and uses the same commands to scan assets, run queries, open a shell, or work with policies. + +Together with this open-source release, we are opening the ability to create custom resources and providers. In the coming weeks we will start to release more guides for developers who are interested in contributing. + +Furthermore, we are solidifying [MQL](/mql/mql.write/) as and open standard for GraphQL-based infrastructure querying and assertions. Most of the engine can be found in cnquery and is highly extensible as well as embeddable. + +We highly encourage you to try out [cnquery](https://github.com/mondoohq/cnquery) and [cnspec](https://github.com/mondoohq/cnspec)! Please let us know if you encounter any challenges switching from the Mondoo CLI to cnspec. We will continue to support the Mondoo CLI throughout the v7 release. + +### CLI CVE scanning + +**Problem:** Sometimes you only care about CVEs on a server, container, or container image, but you have to scan the system for security misconfigurations as well. + +**Solution:** We've added a new `cnspec vuln` command that allows you to scan for CVEs on servers, containers, and container images without performing a full security scan. The command also offers more detailed CVE output so you can see what's best to patch first. + +![cnspec vuln scanning](/img/releases/2022-11-01-mondoo-7.2-is-out/cve_scan.png) + +### FreeBSD scanning support + +**Problem:** You run a diverse infrastructure including FreeBSD hosts which need to be properly secured. + +**Solution:** cnquery and cnspec now include initial support for remotely scanning FreeBSD hosts. With this update, you can now list packages and services, examine file contents, and execute commands. Stay tuned for more FreeBSD updates, and if you have thoughts or would like to contribute resource support for FreeBSD, join the [Mondoo GitHub Discussions](https://github.com/orgs/mondoohq/discussions). + +## 🧹 IMPROVEMENTS + +### Add ephemeralContainers to `k8s.pod` + +The `k8s.pods` and `k8s.pod` and resources now includes information on `ephemeralContainers` attached to the pods. `ephemeralContainers` are a relatively new feature in Kubernetes. They let you attach containers to Pods for debugging. You can't remove them, and if you forget about them, they can introduce significant security risks to your environment. + +Example workload with `ephemeralContainers` defined: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + annotations: + creationTimestamp: "2022-11-03T16:40:54Z" + labels: + admission-result: pass + name: passing-pod-yaml + namespace: debug-ns + resourceVersion: "75952" + uid: 823d82d5-890e-4d6a-9da6-404648144585 +spec: + automountServiceAccountToken: false + containers: + ... + dnsPolicy: ClusterFirst + enableServiceLinks: true + ephemeralContainers: + - args: + - sleep + - "9999" + image: busybox:1.28 + imagePullPolicy: IfNotPresent + name: ephemeral_junk + resources: {} + securityContext: + privileged: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + preemptionPolicy: PreemptLowerPriority + priority: 0 + restartPolicy: Always + ... +``` + +### Improve CLI warnings when no provider is specified + +In cnquery, if the user specified an invalid provider, the CLI unexpectedly used the local provider instead: + +```text +cnquery shell rockylinux +→ no provider specified, using defaults. + Use --help for a list of available providers. provider=local +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 + ___ _ __ __ _ _ _ ___ _ __ _ _ + / __| '_ \ / _` | | | |/ _ \ '__| | | | +| (__| | | | (_| | |_| | __/ | | |_| | + \___|_| |_|\__, |\__,_|\___|_| \__, | + mondoo™ |_| |___/ interactive shell +``` + +Now if a user accidentally forgets the provider usage information is provided: + +```text +$ cnquery shell rockylinux +x provider rockylinux does not exist +Allows for the interactive exploration of MQL queries + +Usage: + cnquery shell [flags] + cnquery shell [command] + +Available Commands: + arista Connect to an Arista endpoint + aws Connect to an AWS account or instance + azure Connect to a Microsoft Azure account or instance + container Connect to a container, an image, or a registry +... +``` + +### Load base64 configuration directly from env vars + +cnspec now loads a Base64-encoded configuration from the `MONDOO_CONFIG_BASE64` env var. This means you no longer need to load the Base64-encoded config in your CI jobs, write it out to a config file on disk and then run cnspec to scan your CI job. + +Previously CI jobs had to write the config to disk: + +```shell +echo $VARIABLE_WITH_BASE64_CONFIG > mondoo.json +cnspec scan k8s my_file.yml --config mondoo.json +``` + +Now with `MONDOO_CONFIG_BASE64` set you can just run the CLI: + +```shell +cnspec scan k8s my_file.yml +``` + +### Add MQL ports resource for macOS and Windows + +The MQL `ports` resource now supports Windows and macOS hosts in addition to Linux hosts. Using this resource you can track ports to listening addresses and executables: + +```coffee +cnquery> ports.listening +ports.listening: [ + port port=56863 protocol="ipv4" address="*" process.executable="/usr/libexec/rapportd" + port port=56863 protocol="ipv6" address="*" process.executable="/usr/libexec/rapportd" + port port=7000 protocol="ipv4" address="*" process.executable="/System/Library/CoreServices/ControlCenter.app/Contents/macOS/ControlCenter" + port port=7000 protocol="ipv6" address="*" process.executable="/System/Library/CoreServices/ControlCenter.app/Contents/macOS/ControlCenter" + port port=5000 protocol="ipv4" address="*" process.executable="/System/Library/CoreServices/ControlCenter.app/Contents/macOS/ControlCenter" + port port=5000 protocol="ipv6" address="*" process.executable="/System/Library/CoreServices/ControlCenter.app/Contents/macOS/ControlCenter" + port port=44960 protocol="ipv4" address="127.0.0.1" process.executable="/Users/chris/Library/Application" + port port=44950 protocol="ipv4" address="127.0.0.1" process.executable="/Users/chris/Library/Application" + port port=18412 protocol="ipv4" address="127.0.0.1" process.executable="/Users/chris/Library/Application" + port port=7335 protocol="ipv4" address="127.0.0.1" process.executable="/Users/chris/Library/Application" + port port=17223 protocol="ipv4" address="127.0.0.1" process.executable="/Users/chris/Library/Application" + port port=17223 protocol="ipv6" address="[::1]" process.executable="/Users/chris/Library/Application" +] +``` + +### Auto discover ESXi hosts for vSphere + +When scanning VMware vSphere assets, Mondoo now automatically discovers all ESXi hosts. + +### New controls for macOS security policy + +We've added new controls to the macOS Security policy to make sure that automatic updates are securely configured: + +- Ensure automatic checking of software updates enabled +- Ensure automatic download of software updates enabled +- Ensure critical updates are installed automatically + +### New NSA Kubernetes Hardening Guide Version 1.2 controls + +We've added several new controls to the NSA Kubernetes Hardening Guide Version 1.2 policy to help you secure your Kubernetes cluster and workloads: + +- Protect Pod service account tokens +- Minimize and verify access to cluster-admin binding via rolebindings +- Minimize and verify access to cluster-admin binding +- CVE-2021-25742 - checking nginx-ingress ConfigMaps for dangerous settings + +## 🐛 BUG FIXES AND UPDATES + +- Detect Rocky Linux 9 as platform family `redhat` so `package` and `service` resources function properly. +- Better raise permission issues when running the `ports` resource. +- Avoid panics in cnquery when there are no query bundles. +- Escape JSON data to prevent errors parsing some values. +- If an asset is terminated mid-scan, report it as unscored instead of an error. +- Fix asset filter not properly applying Terraform HCL Security Static Analysis for AWS policy. +- Update EOL dates for Debian releases to the latest versions on their wiki. +- Improve spacing of EBS volume scans to reduce API throttling. +- Greatly improve the speed of service account and space deletion. +- Fix typos in NSA Kubernetes Hardening Guide Version 1.2 policy. +- Resolve errors when checking for default ingress/egress network rules in NSA Kubernetes Hardening Guide Version 1.2 policy. +- Resolve errors when checking for the PKI directory on Minikube in NSA Kubernetes Hardening Guide Version 1.2 policy. +- Avoid incorrect CVE counts for assets in the console. +- Update the Amazon Linux 2 EOL date to reflect the updated date of June 30, 2024. +- Detect the upcoming Fedora 37 release in the EOL policy. +- Improve error messages in the Mondoo Kubernetes Operator when private images cannot be scanned. diff --git a/releases/2022-11-08-mondoo-7.3-is-out.md b/releases/2022-11-08-mondoo-7.3-is-out.md new file mode 100644 index 000000000..d5d7ee6f9 --- /dev/null +++ b/releases/2022-11-08-mondoo-7.3-is-out.md @@ -0,0 +1,82 @@ +--- +slug: mondoo-7.3-is-out/ +title: Mondoo 7.3 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.3 is out! This release includes UI and policy improvements! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### New Azure authentication options + +**Problem:** You want to secure your Azure infrastructure, but you don't want to authenticate using less secure methods like token authentication. + +**Solution:** Mondoo now includes additional options for authenticating against your Azure infrastructure, including those that enable security features such as MFA. You can now authenticate to your Azure infrastructure using certificates or a client ID and secret. + +Certificate authentication: + +```shell +cnquery shell azure --client-id --certificate-path /Users/stella/certificate.pfx --tenant-id --certificate-secret supersecret +``` + +Client ID/secret authentication: + +```shell +cnquery shell azure --client-id --tenant-id --client-secret my_secret +``` + +If you don't specify an authentication method, Mondoo uses the method you've set up for the `az` CLI. So if you prefer shorter CLI commands, feel free to leave out the authentication flags entirely. + +We also know you often have multiple subscriptions, so we've made it easy to select subscriptions. If the `subscription` flag is not set, you'll get a CLI menu of possible subscriptions to use: + +![Multiple Subscriptions](/img/releases/2022-11-08-mondoo-7.3-is-out/multiple_subs.png) + +### Policies for OpenSSL + +**Problem:** You want to apply a specific policy to find instances or containers running OpenSSL versions vulnerable to the [recently announced](https://www.openssl.org/blog/blog/2022/11/01/email-address-overflows/) CVE-2022-3786 and CVE-2022-3602 CVEs. + +**Solution:** We've introduced a new policy, `OpenSSL Vulnerability Policy by Mondoo`, to specifically report on CVEs in OpenSSL so you can more easily target these systems for remediation. + +## 🧹 IMPROVEMENTS + +### Status tabs on top of asset pages + +Asset pages now include tabs for navigating between policies, controls, configuration, and vulnerabilities at the top of the page. Not only are these a bit easier to find here, the content of these tabs now shows on the whole screen so you can better explore the data. + +![Asset Tabs](/img/releases/2022-11-08-mondoo-7.3-is-out/tabs.png) + +### Resource improvements + +We continue to improve the cnquery resource to give you the best insight into servers, clouds, Kubernetes clusters, and more. This week we shipped the following fixes and improvements: + +- Resolve errors running `github.repository { webhooks }` if no webhooks were found. +- Resolve errors running `aws.rds.dbClusters {*}`. +- Add `state` data to the `aws.ec2.snapshot` resource. + +### Policy improvements + +This week we made several improvements to Linux and Kubernetes policies with new and updated controls: + +- Added missing queries to controls in the AlmaLinux CIS benchmark. +- Added new `Limit the access of Pods to cloud metadata services ` control to the `NSA Kubernetes Hardening Guide Version 1.2` policy. +- Added new `Minimize and verify access to secrets` control to the `NSA Kubernetes Hardening Guide Version 1.2` policy. +- Updated `Kubernetes Cluster and Workload Security` policy to avoid failures scanning Kubernetes master nodes. + +## 🐛 BUG FIXES AND UPDATES + +- Resolve failures loading base64 configs from env vars in cnspec. +- Resolve a panic when running cnspec in GitHub Actions. +- The install script now points users to GitHub Discussions not Slack. +- Improve cleanup of Kubernetes admissions controller scans older than 30 days to improve performance in spaces. +- EOL warning banners now show up on asset pages after an asset becomes EOL with the OS vendor. +- Show errors when policies cannot be uploaded to Policy Hub. +- Resolve errors with pagination on the asset not behaving as expected. +- Resolve incorrect links in Microsoft Teams notifications. diff --git a/releases/2022-11-16-mondoo-7.4-is-out.md b/releases/2022-11-16-mondoo-7.4-is-out.md new file mode 100644 index 000000000..dd929447d --- /dev/null +++ b/releases/2022-11-16-mondoo-7.4-is-out.md @@ -0,0 +1,320 @@ +--- +slug: mondoo-7.4-is-out/ +title: Mondoo 7.4 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.4 is out! This release includes Google Workspaces, Slack, and Okta security scanning! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Builds for Linux on IBM Z + +**Problem:** You need to ensure the security of Linux distributions running on IBM Z mainframes. + +**Solution:** Mondoo now includes packages for Ubuntu, SLES, and Red Hat running on IBM Z mainframes. You can find these packages in our releases repository at [releases.mondoo.com](https://releases.mondoo.com/). + +### New SaaS scanning capabilities + +**Problem:** Securing your business isn't just about the servers that your operations run on. It's also critical to safeguard the many SaaS services your teams rely on. How can you extend policies and security practices to protect this critical infrastructure? + +**Solution:** We've expanded our SaaS Security Posture Management (SSPM) capabilities by introducing resources, security policies, and incident response packs for Google Workspace, Okta, and Slack. These new policies let you codify and continuously apply security policies to these critical SaaS services. + +#### Google Workspace + +The new `googleworkspace` MQL resource pack allows you to query the state of your Google Workspace: + +```shell +cnquery scan googleworkspace --customer-id --impersonated-user-email +``` + +```coffee +# list all domains +googleworkspace.domains { * } + +# list all groups for your Google Workspace customer +googleworkspace.groups { * } + +# find the group for a specific email +googleworkspace.groups.where( email == "myemail@example.com") { * } + +# list all users for your Google Workspace customer +googleworkspace.users { * } + +# search a specific user +googleworkspace.users.where ( primaryEmail == "myuser@example.com") { * } + +# find all users that have Slack authorized +googleworkspace.users.where(tokens.one( displayText == "Slack") ) { + fullName + primaryEmail +} + +# list all super admins + googleworkspace.report.users.where(security["isSuperAdmin"] == true) { userEmail } + +# check that all users are enrolled with MFA +googleworkspace.report.users.all( security["isS2SvEnrolled"] == true ) +``` + +#### Okta + +The new `okta` MQL resource pack allows you to query the state of your Okta organization: + +```shell +cnquery shell okta --organization --token +``` + +```coffee +# display information about the org +okta.organization { * } + +# display registered applications +okta.applications { * } + +# display all users +okta.users { * } + +# display policies +okta.policies.password { id name rules { * } } +``` + +#### Slack + +The new `slack` MQL resources will allow you to query the state of your Slack workspace. + +```shell +cnquery shell slack --token +``` + +```coffee +# display team info +slack.team { * } + +# display members +slack.users.members { * } + +# display bots +slack.users.bots { * } + +# display all users +slack.users { * } + +# list all users that have no MFA (members + bots) +slack.users.where( has2FA == false) { * } + +# list all members that have no MFA +slack.users.members.where( has2FA == false) { * } + +# list all conversation and their creator +slack.conversations { name id creator { id name } } + +# display user groups (only on Slack paid plan) +slack.userGroups { * } + +# display access logs (only on Slack paid plan) +slack.accessLogs { * } +``` + +## 🧹 IMPROVEMENTS + +### Package CVE support for Fedora 37 + +The Fedora Project team [released Fedora 37](https://fedoramagazine.org/announcing-fedora-37/) this week. Mondoo is ready for upgrades, with CVE scanning support for this new release. + +### `terraform.module` now includes the full block for modules + +The `terraform.module` now returns the full block for the module if it is included in the hcl files: + +```coffee +cnquery> terraform.modules { block key } +terraform.modules: [ + 0: { + key: "consul.consul_servers.security_group_rules" + block: null + } + 1: { + key: "consul.consul_servers.security_group_rules.client_security_group_rules" + block: null + } + 2: { + key: "" + block: null + } + 3: { + key: "consul" + block: terraform.block id = terraform.block/modules.tf/1/1 + } + 4: { + key: "consul.consul_clients.iam_policies" + block: null + } + 5: { + key: "consul.consul_servers" + block: null + } + 6: { + key: "gke" + block: terraform.block id = terraform.block/gke.tf/10/1 + } + 7: { + key: "consul.consul_clients" + block: null + } + 8: { + key: "consul.consul_clients.security_group_rules" + block: null + } + 9: { + key: "consul.consul_clients.security_group_rules.client_security_group_rules" + block: null + } + 10: { + key: "consul.consul_servers.iam_policies" + block: null + } +] +``` + +### Array deletion in MQL + +You can now perform array subtraction within MQL. For example: + +```coffee +> [1,2,3,3,4] - [3,4,5] +[1,2] +``` + +### TLS configuration within the `port` resource + +The `ports` resource now includes information on any TLS certificates on the port: + +```coffee +cnquery> ports.listening[1] { port tls{*} } +ports.listening[1]: { + port: 8080 + tls: { + socket: socket protocol="tcp" port=8080 address="127.0.0.1" + nonSniCertificates: [ + certificate serial="3e:44:c8:e3:2c:bc:2a:6e:0a:1f:f8:9e:53:57:69:91:eb:3f:c4:dd" subject.commonName="mondoo.dev" subject.dn="CN=mondoo.dev,OU=n/a,O=Mondoo,L=LA,ST=California,C=US,1.2.840.113549.1.9.1=#0c0e646f6d406d6f6e646f6f2e636f6d" + ] + ciphers: [ + 0: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" + 1: "TLS_RSA_WITH_AES_256_CCM_8" + 2: "TLS_RSA_WITH_AES_128_GCM_SHA256" + 3: "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" + 4: "TLS_CHACHA20_POLY1305_SHA256" + 5: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" + 6: "TLS_AES_256_GCM_SHA384" + 7: "TLS_RSA_WITH_AES_256_CBC_SHA256" + 8: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" + 9: "TLS_RSA_WITH_AES_128_CBC_SHA" + 10: "TLS_RSA_WITH_AES_128_CCM" + 11: "TLS_RSA_WITH_AES_128_CCM_8" + 12: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305" + 13: "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" + 14: "TLS_AES_128_GCM_SHA256" + 15: "TLS_RSA_WITH_ARIA_256_GCM_SHA384" + 16: "TLS_RSA_WITH_AES_256_CCM" + 17: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" + 18: "TLS_RSA_WITH_AES_128_CBC_SHA256" + 19: "TLS_RSA_WITH_ARIA_128_GCM_SHA256" + 20: "TLS_RSA_WITH_AES_256_GCM_SHA384" + 21: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + 22: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + 23: "TLS_RSA_WITH_AES_256_CBC_SHA" + ] + versions: [ + 0: "tls1.3" + 1: "tls1.2" + ] + params: { + certificates: [ + 0: id:"certificate:f157279e8a7f6b819e8fbcaaa980f069a318bb9ea90ef9ea0c89204cffae4e94" name:"certificate" + ] + ciphers: { + OLD_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256: false + OLD_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: false + OLD_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: false + SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA: false + SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA: false + SSL_DHE_DSS_WITH_DES_CBC_SHA: false + SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA: false + SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA: false + SSL_DHE_RSA_WITH_DES_CBC_SHA: false + SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA: false + SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA: false + SSL_DH_DSS_WITH_DES_CBC_SHA: false + SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA: false + SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA: false + SSL_DH_RSA_WITH_DES_CBC_SHA: false + SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA: false + SSL_DH_anon_EXPORT_WITH_RC4_40_MD5: false + SSL_DH_anon_WITH_3DES_EDE_CBC_SHA: false + SSL_DH_anon_WITH_DES_CBC_SHA: false + SSL_DH_anon_WITH_RC4_128_MD5: false + SSL_NULL_WITH_NULL_NULL: false + SSL_RSA_EXPORT_WITH_DES40_CBC_SHA: false + SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5: false + SSL_RSA_EXPORT_WITH_RC4_40_MD5: false + SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA: false + SSL_RSA_FIPS_WITH_DES_CBC_SHA: false + SSL_RSA_WITH_3DES_EDE_CBC_SHA: false + SSL_RSA_WITH_DES_CBC_SHA: false + SSL_RSA_WITH_IDEA_CBC_SHA: false + SSL_RSA_WITH_NULL_MD5: false + SSL_RSA_WITH_NULL_SHA: false + SSL_RSA_WITH_RC4_128_MD5: false + SSL_RSA_WITH_RC4_128_SHA: false + TLS_AES_128_CCM_8_SHA256: false + TLS_AES_128_CCM_SHA256: false + TLS_AES_128_GCM_SHA256: true + TLS_AES_256_GCM_SHA384: true + TLS_CHACHA20_POLY1305_SHA256: true + TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256: false + TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256: false + TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384: false + TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384: false + TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256: false + TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384: false + TLS_DHE_PSK_WITH_AES_128_CCM: false + TLS_DHE_PSK_WITH_AES_256_CCM: false + TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256: false + TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256: false + TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384: false + TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384: false + TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256: false + TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256: false + TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384: false + TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384: false + TLS_DHE_PSK_WITH_CHACHA20_POLY1305: false + TLS_DHE_RSA_WITH_AES_128_CCM: false + TLS_DHE_RSA_WITH_AES_128_CCM_8: false +... (197 lines left) +``` + +### Extend Kubernetes queries for ephemeralContainers + +We've updated our Kubernetes policies to scan the security of `ephemeralContainers` defined in Kubernetes workloads. This ensures the security of any containers attached to workloads for debugging. + +## 🐛 BUG FIXES AND UPDATES + +- Significantly reduce memory usage when syncing data to Mondoo Platform. +- Tag `cnspec`/`cnquery` container images on Docker Hub for the major version (7, 8, etc) to match `mondoo` image tagging. +- Publish `cnspec`/`cnquery` rootless container images to Docker Hub to match `mondoo` rootless container builds. +- `cnspec -o json` now produces properly formatted JSON and includes the policy scores. +- Resolve errors in some MQL queries using `{ * }` such as `docker.containers { * }`. +- Automatically discover Google organizations when `--discover` is set to `auto` or the `--discover` flag is not specified. +- Resolve authentication failures against Microsoft 365. +- Update the chevrons in the Fleet view so it's clear when there are hidden lists of assets. +- Improve CVE pages to show data more reliably. +- Improve `mondoo update` reliability on Windows. +- Update the example setup commands for Debian/Ubuntu on the Integrations page to overwrite repository GPG keys. +- Improve GitHub Actions examples in the Integrations page. diff --git a/releases/2022-11-22-mondoo-7.5-is-out.md b/releases/2022-11-22-mondoo-7.5-is-out.md new file mode 100644 index 000000000..6a12bf246 --- /dev/null +++ b/releases/2022-11-22-mondoo-7.5-is-out.md @@ -0,0 +1,53 @@ +--- +slug: mondoo-7.5-is-out/ +title: Mondoo 7.5 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.5 is out! This release includes faster GitHub Actions execution and improved CIS policies! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Faster GitHub Action Execution + +**Problem:** The Mondoo GitHub Action could rapidly scan content in your CI pipelines, but was slow to install and setup Mondoo Client during each run. + +**Solution:** We've refactored the [Mondoo GitHub Action](https://github.com/mondoohq/actions) to use our new [cnspec container image](https://hub.docker.com/r/mondoo/cnspec). Not only do you get our latest command line experience, but also there's no need to install Mondoo Client during your GitHub jobs. This can reduce the time it takes to run your job by 30 seconds to 1 minute, getting you results quicker in your CI pipelines. + +## 🧹 IMPROVEMENTS + +### Additional CIS Linux Controls + +We've updated our CIS Linux policies to implement the following controls: + +- AlmaLinux 8: Ensure FTP client is not installed +- AlmaLinux 8: Ensure rsync-daemon is not installed or the rsyncd service is masked +- Debian 8: Ensure inetd is not installed +- Debian 9: Ensure SELinux is enabled in the bootloader configuration +- Debian 10: Ensure syslog-ng is configured to send logs to a remote log host +- RHEL 6: Ensure augenrules is enabled +- RHEL 8: Ensure journald is not configured to receive logs from a remote client +- RHEL 8: Ensure rsyslog is not configured to receive logs from a remote client +- RHEL 8: Ensure rsyslog is not configured to receive logs from a remote client +- SLES 11: Ensure only approved ciphers are used +- SLES 11: Ensure password expiration is 90 days or less +- SLES 12: Ensure IPv6 firewall rules exist for all open ports +- Ubuntu 14.04: Ensure password expiration is 90 days or less +- Ubuntu 20.04: Ensure syslog-ng is configured to send logs to a remote log host + +## 🐛 BUG FIXES AND UPDATES + +- Fail early and show an error when an invalid GitHub token is provided instead of creating an asset with all errored scans. +- Correctly detect AWS EC2 asset names when scanning them over EC2 Instance Connect or SSM. +- Correctly detect platform names when scanning containers. +- Fix loading of spaces when older assets with an unrecognized asset type are present. +- Fix login failures for some users in the Mondoo EU region. +- Improve the reliability of CI/CD asset cleanup. +- Improve fetching of CVE data for Rocky Linux. diff --git a/releases/2022-11-29-mondoo-7.6-is-out.md b/releases/2022-11-29-mondoo-7.6-is-out.md new file mode 100644 index 000000000..0e620b985 --- /dev/null +++ b/releases/2022-11-29-mondoo-7.6-is-out.md @@ -0,0 +1,36 @@ +--- +slug: mondoo-7.6-is-out/ +title: Mondoo 7.6 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.6 is out! This release includes improvements to asset naming and bug fixes. + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🧹 IMPROVEMENTS + +### New --asset-name CLI flag + +The mondoo and cnspec CLIs include a new `--asset-name` flag that allows you to control the name of the asset when registering with Mondoo Platform. + +### Fetch instance name using EC2 metadata + +When connecting to instances using EC2 Instance Connect or SSM, Mondoo now identifies assets based on the instance name (from AWS metadata). + +## 🐛 BUG FIXES AND UPDATES + +- Remove deprecated `mondoo scan` syntax from the deprecated Mondoo policies to prevent failures on Mondoo Client 7.x. +- Fix warnings when scanning Kubernetes clusters. +- Update invalid credential message from the Slack provider to mention Slack. +- Improve the warning in the `kernel` resource when running on an unsupported platform. +- Add missing Google Workspaces, Slack, and Okta scan examples to the Workstation integration page. +- Update the suggested policies during the Kubernetes integration setup to include the latest Mondoo and NSA Kubernetes policies. +- Remove references to Windows from the Ubuntu integration page. +- Lower memory usage in the Kubernetes admission controller. +- Skip scanning events in the Kubernetes admission controller when only the managedFields changed. diff --git a/releases/2022-12-06-mondoo-7.7-is-out.md b/releases/2022-12-06-mondoo-7.7-is-out.md new file mode 100644 index 000000000..12b8c58a6 --- /dev/null +++ b/releases/2022-12-06-mondoo-7.7-is-out.md @@ -0,0 +1,123 @@ +--- +slug: mondoo-7.7-is-out/ +title: Mondoo 7.7 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.7 is out! This release includes new Kubernetes integration pages & VMware Cloud Director scanning! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### VMware Cloud Director scanning + +**Problem:** Your organization uses VMware Cloud Director, and you'd like to secure your deployments with Mondoo policies. + +**Solution:** + +Mondoo now includes a set of new VMware vCloud Director resources to help you secure your VMware infrastructure. + +Sample queries: + +```coffee +# display vCloud Director version +asset { platform version build } +asset: { + build: "20079017" + version: "10.4.0" + platform: "vcd" +} + +# show all vCenter server +vcd.serverInstances { * } + +# list all vCenter organizations +vcd.organizations + +# list all external networks +vcd.externalNetworks +``` + +For additional use cases, see the [VMware Cloud Director Resource Pack MQL documentation](/mql/resources/vcd-pack/). + +### New Kubernetes integrations pages + +**Problem:** Once you've set up a Kubernetes integration in Mondoo, it's difficult to see the status of the resources, including the version of the operator that's running. + +**Solution:** Mondoo has a whole new Kubernetes integration page to help you understand what's running and what's been detected. This page includes essential status information such as the Kubernetes release, operator release, and the enabled scanning methods. It also includes a quick summary of everything that's been detected by the operator with a link to view operator-scanned assets in the fleet view. + +![New Kubernetes integration page](/img/releases/2022-12-06-mondoo-7.7-is-out/k8s_integration.png) + +### Overview data for assets + +**Problem:** In scan results, it can be hard to understand an asset's location or platform. + +**Solution:** We redesigned the Mondoo asset pages to make finding details about your assets easier. We've combined multiple tabs into a new summarized main page that folds asset metadata into the main view. + +![New asset page](/img/releases/2022-12-06-mondoo-7.7-is-out/asset.png) + +### Debian 11 and Ubuntu 22.04 CIS level 1 & 2 policies + +**Problem:** You're running the latest Debian and Ubuntu releases and you need to apply CIS policies to meet regulatory requirements. + +**Solution:** Mondoo now includes CIS Level 1 and 2 policies for Ubuntu 22.04 and Debian 11. + +## 🧹 IMPROVEMENTS + +### Assets now display their last scanned time + +We've updated the asset pages to better describe when assets were scanned and when they last checked into Mondoo Platform. Previously we tracked only the update time, which showed the last time the asset had checked in either through a CLI scan or a non-scanning integration discovery. This led to confusion since some AWS assets looked as though they had just been scanned after the integration discovery ran. You now see both the scan time and the update time so you can better understand how old scan results are and when assets were last seen. + +![Update vs. Scanned Time](/img/releases/2022-12-06-mondoo-7.7-is-out/update_vs_scanned.png) + +### Automatic stale service account cleanup + +Mondoo now automatically cleans up service accounts that sit unused for 30 days. This reduces both clutter and the risk of account compromise. + +### Policy improvements + +This week we made several improvements to Linux and Kubernetes policies with new and updated controls: + +- Add new `Ensure the kubelet is not configured with the AlwaysAllow authorization mode` and `The default namespace should not be used` controls to the NSA Kubernetes Hardening Guide policy. +- Add new `Use clear naming for external channels` control to the Slack Security Best Practices policy. +- Add new `Ensure system accounts are non-login` control to the BSI SYS.1.3 Linux and Unix Servers policy. +- Update the Slack Security Best Practices policy to collect the names of all Slack workstation admins. +- Update the Slack Security Best Practices policy to ignore the SlackBot users when ensuring users have 2FA enabled. +- Ensure the Linux Security policy's auditd controls can run when scanning containers, EBS volumes, or Kubernetes nodes. +- Update the `Ensure system accounts are non-login` control in CIS policies to treat accounts with a UID < 1000 as non-system accounts instead of < 500. + +### MQL Improvements + +#### Empty arrays evaluate as false + +We've updated MQL to treat an empty array as a false-like (falsey) value. This means queries like `list.where(a == 1)`, which return an empty array, now evaluate as false instead of true. This may correct code in your environment that was intended to fail, but didn't due to the empty array result. + +#### IPv6 data in the port resource + +The [port resource](/mql/resources/os-pack/port/) now includes TCP/UDP port information for IPv6 addresses in additional to IPv4 addresses. + +#### Indexed array output + +Query results that return an array now include the array index in the results so you can more easily find flagged issues or dig deeper into specific results. + +![Indexed Results](/img/releases/2022-12-06-mondoo-7.7-is-out/indexed_results.png) + +## 🐛 BUG FIXES AND UPDATES + +- Only attempt to delete EBS volumes if there's a failure during the scan. +- Fix failures checking file ownership when running under sudo. +- Fix incorrectly formatted output of scan results on Windows. +- Fix an error message that included a typo in the suggested `--incognito` flag. +- Default to `us-east-1` in cnquery/mondoo if no AWS region is provided to avoid failures. +- Exit with 1 when cnspec fails to connect to an asset. +- Avoid a crash if asset data cannot be synced to Mondoo Platform. +- Improve some error messages that included legacy components and client names. +- Set asset name when EBS scanning if it is provided. +- Avoid a crash when working with certain dict values in MQL. +- Avoid a crash when viewing some older service accounts in the console. diff --git a/releases/2022-12-13-mondoo-7.8-is-out.md b/releases/2022-12-13-mondoo-7.8-is-out.md new file mode 100644 index 000000000..daaa48659 --- /dev/null +++ b/releases/2022-12-13-mondoo-7.8-is-out.md @@ -0,0 +1,153 @@ +--- +slug: mondoo-7.8-is-out/ +title: Mondoo 7.8 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.8 is out! This release includes new resources for OS updates, packages, and simpler IaC file scanning! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### More intuitive resource names + +**Problem:** When running cnquery it can be difficult to know which resources are available and what individual resources do. + +**Solution:** We've renamed several resources to better match the objects scanned (rather than the underlying technology). This makes it easier to discover resources and navigate your infrastructure with cnquery. + +Updated resource names: + +- `msgraph.beta` -> `microsoft` (Microsoft 365 + Azure Active Directory) +- `gcloud` ->` gcp` +- `azurerm` -> `azure` + +Don't worry though; the old resource names still work. You don't need to update policies before rolling out this new release. + +### Software update data for macOS and Windows + +**Problem:** To secure your hosts, you want to find available software updates for all platforms. + +**Solution:** Mondoo now exposes `os.updates` resource data for macOS and Windows hosts. You can now write cnspec policies to ensure systems are fully patched, or use cnquery to remotely identify unpatched systems. + +```coffee +os.updates: [ + 0: os.update name="MSU_UPDATE_21G217_patch_12.6.1" + 1: os.update name="Command Line Tools beta 3 for Xcode" + 2: os.update name="Command Line Tools for Xcode" + 3: os.update name="Safari16.1MontereyAuto" +] +``` + +### Windows MSI package inspection + +**Problem:** The packages installed on your Windows hosts are critical to their security. You want to write a policy that checks for specific packages and package versions. + +**Solution:** Mondoo now includes support for querying `MSI` packages (and continues to support `Appx` packages). With cnspec, use the `packages` resource to write policies enforcing package versions. With cnquery, explore what's installed on hosts: + +```coffee +packages.list: [ + 0: package name="Python 3.10.4 pip Bootstrap (64-bit)" version="3.10.4150.0" + 1: package name="Python 3.10.4 Core Interpreter (64-bit)" version="3.10.4150.0" + 2: package name="VMware Tools" version="11.3.0.18090558" + 3: package name="Python 3.10.4 Development Libraries (64-bit)" version="3.10.4150.0" + 4: package name="Microsoft Visual C++ 2019 X64 Additional Runtime - 14.28.29913" version="14.28.29913" + 5: package name="Python 3.10.4 Utility Scripts (64-bit)" version="3.10.4150.0" + 6: package name="Mondoo" version="7.4.0" + 7: package name="Python 3.10.4 Test Suite (64-bit)" version="3.10.4150.0" + 8: package name="Python 3.10.4 Tcl/Tk Support (64-bit)" version="3.10.4150.0" + 9: package name="Python 3.10.4 Documentation (64-bit)" version="3.10.4150.0" + 10: package name="Microsoft Visual C++ 2019 X64 Minimum Runtime - 14.28.29913" version="14.28.29913" + 11: package name="Python 3.10.4 Executables (64-bit)" version="3.10.4150.0" + 12: package name="Python 3.10.4 Standard Library (64-bit)" version="3.10.4150.0" + 13: package name="Python 3.10.4 (64-bit)" version="3.10.4150.0" + 14: package name="Microsoft Edge" version="108.0.1462.42" +] +``` + +### Scan all Terraform configs or Kubernetes manifests in directories + +**Problem:** You have a repository full of Terraform configs or Kubernetes manifests you want to scan, but you don't want to scan them one command at a time. + +**Solution:** Let Mondoo do the heavy lifting: Scan your IaC configs by directory. cnspec automatically finds all the relevant files to scan, even those nested deep in directories. + +In this example, cnspec scans all of our Lunalectric repositories to find Kubernetes manifest files in the `postgresql` and `frontend` repositories, while ignoring other non-Kubernetes YAML files: + +```text +cnspec scan k8s dev/lunalectric/ +→ loaded configuration from /Users/tsmith/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ discovery option auto is used. This will detect the assets: cluster, jobs, cronjobs, pods, statefulsets, deployments, replicasets, daemonsets +→ resolved assets resolved-assets=5 +→ connecting to asset K8s Manifest lunalectric (code) + +███████████████████████████████████████████████████████████████████████████ 100% K8s Manifest lunalectric +→ connecting to asset luna/postgres (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/postgres +→ connecting to asset luna/luna-frontend (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/luna-frontend +→ connecting to asset luna/postgres (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/postgres +→ connecting to asset luna/luna-frontend (k8s-object) + +███████████████████████████████████████████████████████████████████████████ 100% luna/luna-frontend +``` + +## 🧹 IMPROVEMENTS + +### Default values for GCP resources + +GCP resources now include default values, so it's easier to explore your infrastructure with cnquery. You no longer have to provide the field for each query; you can simply rely on the default values and skip the field names. We picked the most important values for each resource to save you time. + +Old: `gcp.sql.instances{name}` + +New: `gcp.sql.instances` + +### Instance names from EBS volume scans + +EBS volume scans from the CLI or the AWS integration now include asset names that match scans over SSM or SSH. + +### Process information in the `ports` resource + +The `ports` resource now includes process information so you can see which process is binding to an open port: + +```coffee +ports.list: [ + 0: port port=53 protocol="tcp" address="127.0.0.53" process.executable="/lib/systemd/systemd-resolved" + 1: port port=22 protocol="tcp" address="0.0.0.0" process.executable="sshd:" + 2: port port=22 protocol="tcp" address="10.0.2.15" process.executable="sshd:" + 3: port port=22 protocol="tcp" address="10.0.2.15" process.executable="sshd:" + 4: port port=22 protocol="tcp" address="10.0.2.15" process.executable="sshd:" + 5: port port=53 protocol="udp" address="127.0.0.53" process.executable="/lib/systemd/systemd-resolved" + 6: port port=68 protocol="udp" address="10.0.2.15" process.executable="/lib/systemd/systemd-networkd" + 7: port port=22 protocol="tcp" address="::" process.executable="sshd:" + 8: port port=80 protocol="tcp" address="::" process.executable="/usr/sbin/apache2" +] +``` + +### Improved Linux policy reliability + +We rewrote much of the Linux Security policy to improve the reliability of scans when commands cannot run directly. This provides additional security context, particularly auditd configuration context when scanning container images and side-scanning AWS instances using EBS volumes. As a bonus, it also reduces CPU and memory use during the scan. + +## 🐛 BUG FIXES AND UPDATES + +- Don't panic when inspecting an empty certificate on a host. +- Properly parse out Kubernetes custom resources in manifest files. +- Update the service accounts page to allow sorting by the last date used. +- Properly discover containers when running `cnquery scan docker --discover container`. +- Add missing help output for multiple resources. +- Improve several error messages to make required user action more apparent. +- Ignore case when parsing SSHd config include statements to support both `Include` and `include`. +- Update invalid example commands on the Terraform integration page. +- Explicitly set our Kubernetes operator workflows to run unprivileged. +- Better raise errors encountered in malformed MQL queries. +- Fix an issue where the console cursor could disappear after running a scan. diff --git a/releases/2022-12-20-mondoo-7.9-is-out.md b/releases/2022-12-20-mondoo-7.9-is-out.md new file mode 100644 index 000000000..79f60f288 --- /dev/null +++ b/releases/2022-12-20-mondoo-7.9-is-out.md @@ -0,0 +1,100 @@ +--- +slug: mondoo-7.9-is-out/ +title: Mondoo 7.9 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.9 is out! This release includes a new Kubernetes Ingress resource and automatic discovery of Amazon ECR registries! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### Kubernetes Ingress resource + +**Problem:** You want to ensure the security of Kubernetes Ingresses. + +**Solution:** Mondoo now includes new resources for exploring and securing Kubernetes Ingress objects. New resources support exploring the Ingress objects themselves as well as the HTTP rules in each Ingress. + +New Ingress resources: + +- [k8s.ingress](/mql/resources/k8s-pack/k8s.ingress/) +- [k8s.ingressbackend](/mql/resources/k8s-pack/k8s.ingressbackend/) +- [k8s.ingresshttprulepath](/mql/resources/k8s-pack/k8s.ingresshttprulepath/) +- [k8s.ingressresourceref](/mql/resources/k8s-pack/k8s.ingressresourceref/) +- [k8s.ingressrule](/mql/resources/k8s-pack/k8s.ingressrule/) +- [k8s.ingressservicebackend](/mql/resources/k8s-pack/k8s.ingressservicebackend/) + +Example cnspec shell query: + +```coffee +k8s.ingresses: [ + 0: { + annotations: {} + namespace: "default" + labels: {} + manifest: { + apiVersion: "networking.k8s.io/v1" + kind: "Ingress" + metadata: { + creationTimestamp: null + name: "no-tls-ingress" + namespace: "default" + } + spec: { + ingressClassName: "nginx" + rules: [ + 0: { + host: "api.nexus.info" + http: { + paths: [ + 0: { + backend: { + resource: { + apiGroup: "k8s.example.io" + kind: "MyKind" + name: "my-resource" + } + } + path: "/" + pathType: "Prefix" + } + ] + } + } +... +``` + +You can also automatically discover Ingress objects during your cluster scan with the `--discover ingresses` flag. With this flag, each Ingress object is scanned as an asset available in the Mondoo Console. + +Stay tuned for new Ingress security policies and auto-discovery of HTTP/HTTPS endpoints so you can automatically discover incorrectly configured or expiring certificates. + +### Amazon ECR discovery support + +**Problem:** To scan an AWS ECR registry, you have to know its address. + +**Solution:** The cnquery/cnspec AWS scanner now automatically discovers and scans ECR registries. + +Just type `cnspec scan aws --discover ecs`, or `cnspec scan aws --discover all`. + +## 🧹 IMPROVEMENTS + +### Improve EC2 instance discovery + +When running `cnspec scan aws --discover instances` cnspec now uses EC2 Instance Connect and SSM to connect and remotely scan EC2 instances. + +## 🐛 BUG FIXES AND UPDATES + +- Improve the reliability of many controls in CIS and Mondoo Linux policies. +- Change SSM-scanned instances to not show up as "Other" scans. +- Avoid rate limiting in the AWS Lambda integration by reducing total API calls. +- Improve help and resource autocomplete text. +- Remove some unhelpful warning log messages in cnspec and cnquery. +- Fix the display of long Kubernetes integration names in the Kubernetes integration page. +- Fix login failures using the latest release of Safari on macOS and iOS. +- Fix incorrect display of long organization IDs in the create organization window. diff --git a/releases/2022-12-27-mondoo-7.10-is-out.md b/releases/2022-12-27-mondoo-7.10-is-out.md new file mode 100644 index 000000000..6e7729ac8 --- /dev/null +++ b/releases/2022-12-27-mondoo-7.10-is-out.md @@ -0,0 +1,100 @@ +--- +slug: mondoo-7.10-is-out/ +title: Mondoo 7.10 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.10 is out! This release includes support for K8s Ingress certificates and a resource for GCP GKE clusters! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### New GCP GKE resource + +**Problem:** You've secured your Kubernetes workloads and kubelet configs with Mondoo and NSA Kubernetes security policies, but you need to secure your GKE cluster configuration as well. + +**Solution:** A new `gcp.project.clusters` resource lets you explore your GKE clusters and write policies to secure your cluster control plane. + +```coffee +cnquery> gcp.project.clusters { * } +gcp.project.clusters: [ + 0: { + resourceLabels: {} + name: "luna-gke-cluster-2" + projectId: "luna-edge" + locations: [ + 0: "us-central1-b" + 1: "us-central1-c" + 2: "us-central1-f" + ] + created: 2022-12-15 20:43:41 +0000 +0000 + status: "RUNNING" + zone: "us-central1" + description: "" + nodePools: [ + 0: gcp.project.cluster.nodepool name="generic-pool" + ] + loggingService: "logging.googleapis.com/kubernetes" + expirationTime: null + enableKubernetesAlpha: false + initialClusterVersion: "1.24.5-gke.600" + network: "luna-gke-cluster-2" + clusterIpv4Cidr: "10.20.0.0/16" + autopilotEnabled: false + endpoint: "63.192.209.236" + currentMasterVersion: "1.24.5-gke.600" + id: "123abcbcada644fcb3b83c30ea0efcfc3cd6d8f42a814bccbcb3503181e12b5a" + subnetwork: "luna-gke-cluster-2-subnet" + monitoringService: "monitoring.googleapis.com/kubernetes" + } +] +``` + +### Examine Kubernetes Ingress certificates + +**Problem:** You've secured your Kubernetes Ingresses with the new `k8s.ingress` resource, but you need to examine and secure the certificates associated with those Ingresses as well. + +**Solution:** A new `k8s.ingress.certificates` resource allows you to explore and secure certificates associated with Kubernetes Ingress objects. + +```coffee +$ ./cnquery run k8s --discover ingresses -c +'k8s.ingress.certificates{ expiresIn }' +→ discover related assets for 1 asset(s) +→ use cluster name from kube config cluster-name=minikube +→ resolved assets resolved-assets=1 +k8s.ingress.certificates: [ + 0: { + expiresIn: 12 days 2 hours 12 minutes 14 seconds + } +] +``` + +## 🧹 IMPROVEMENTS + +### Continued migration to cnspec + +Our migration from the legacy Mondoo CLI to cnspec continues this week with CI and Kubernetes. CI integration examples in the console now show simpler cnspec steps, and the Mondoo Kubernetes Operator uses the new cnspec container images for all cluster scans. Stay tuned as we continue to migrate to our improved open source cnspec CLI over the coming weeks. + +### See errors from the Kubernetes operator + +Kubernetes integration pages show any errors reported by the Mondoo Kubernetes Operator so you can more easily troubleshoot operator failures. + +![Kubernetes Integration](/img/releases/2022-12-27-mondoo-7.10-is-out/k8s.png) + +### Improved help descriptions + +cnspec and cnquery now include improved help and resource descriptions: We've improved many command descriptions to help new users, added descriptions for many resources, and removed some invalid resources that were showing up in auto-complete in the cnquery/cnspec shells. + +## 🐛 BUG FIXES AND UPDATES + +- Fix MachineType error in `gcp.compute.instances` resource. +- Fix integer comparisons in MQL failing when resources returned a 32-bit integer instead of the assumed 64-bit integer. +- Allow users to navigate the console tabs with the keyboard. +- Allow users to upload policies that use alternative YAML MIME types to the Policy Hub. +- Fix errors in `Ensure default user umask is 027 or more restrictive` and `Ensure default user umask is configured` controls within Mondoo and CIS Linux policies. diff --git a/releases/2023-01-03-mondoo-7.11-is-out.md b/releases/2023-01-03-mondoo-7.11-is-out.md new file mode 100644 index 000000000..d03db5217 --- /dev/null +++ b/releases/2023-01-03-mondoo-7.11-is-out.md @@ -0,0 +1,190 @@ +--- +slug: mondoo-7.11-is-out/ +title: Mondoo 7.11 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.11 is out! This release includes new GCP resources, GitHub Code Scanning of policies, and simplified Windows deployment! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### MQL policy linting + +**Problem:** Custom MQL policies can become large quickly, making it difficult to make sure they are properly formatted. + +**Solution:** cnspec now includes a new `cnspec bundle lint` command that helps you find incorrectly formatted policies. This new command checks for the following conditions: + +- MQL compile error +- UID is not valid +- Missing policy UID +- Missing policy name +- No unique policy UID +- Policy is missing checks +- Assigned query missing +- Policy version is missing +- Policy version is invalid +- Missing query UID +- Missing query title +- No unique query UID +- Unassigned query + +![Run linting of policies from CLI](/img/releases/2023-01-03-mondoo-7.11-is-out/cnspec_bundle_lint.png) + +But wait, there's more! This new linting works with GitHub Code Scanning through our Mondoo GitHub Action. Applying the updated action scans your repository for Mondoo policies, annotates pull requests with any problems it finds, and even opens GitHub Code Scanning issues for problems. + +The action is compact and doesn't require a service account or any other additional setup: + +```yaml +--- +name: Lint Policies + +on: + pull_request: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Lint cnspec policies and output SARIF + uses: mondoohq/actions/cnspec-lint@main + with: + path: . + output-file: "results.sarif" + - name: Upload SARIF results file + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: results.sarif +``` + +This action scans each opened PR and merge, giving you annotations directly in the GitHub UI: + +![GitHub Annotation](/img/releases/2023-01-03-mondoo-7.11-is-out/annotation.png) + +The GitHub Action integrates with GitHub Code Scanning to open GitHub Code Scanning issues for each problem in your policy: + +![GitHub Code Scanning](/img/releases/2023-01-03-mondoo-7.11-is-out/code_scanning.png) + +### New GCP resources + +**Problem:** You want to explore and secure your GCP Pub/Sub and KMS services using cnquery and cnspec. + +**Solution:** cnquery and cnspec now include new resources for securing GCP Pub/Sub and KMS services. + +We added new resources to query GCP KMS Key Rings and their cryptographic keys: + +```javascript +cnquery> gcp.project.kms.keyrings { * } +gcp.project.kms.keyrings: [ + 0: { + resourcePath: "projects/example-project/locations/global/keyRings/testring" + created: 2022-12-19 15:17:46.974842182 +0000 UTC + projectId: "example-project" + cryptokeys: [ + 0: gcp.project.kmsService.keyring.cryptokey name="testring-key" purpose="ENCRYPT_DECRYPT" + ] + name: "testring" + location: "global" + } +] +``` + +Inspect details for Crypto Keys: + +```javascript +cnquery> gcp.project.kms.keyrings { name cryptokeys { * } } +gcp.project.kms.keyrings: [ + 0: { + name: "testring" + cryptokeys: [ + 0: { + purpose: "ENCRYPT_DECRYPT" + resourcePath: "projects/example-project/locations/global/keyRings/testring/cryptoKeys/testring-key" + versions: [ + 0: gcp.project.kmsService.keyring.cryptokey.version name="1" state="ENABLED" + ] + name: "testring-key" + primary: gcp.project.kmsService.keyring.cryptokey.version name="1" state="ENABLED" + } + ] + } +] +``` + +We also added support for GCP Pubsub Subscriptions, Topics and Snapshots: + +```javascript +cnquery> gcp.project.pubsub { * } +gcp.project.pubsub: { + topics: [ + 0: gcp.project.pubsubService.topic name="gke-cluster-event-queue" + ] + snapshots: [] + projectId: "example-project" + subscriptions: [ + 0: gcp.project.pubsubService.subscription name="gke-cluster-event-queue-subscription" + ] +} +``` + +See full documentation for all GCP resources in our [GCP Resource Pack docs](/mql/resources/gcp-pack/). + +### Mondoo installation PowerShell module + +**Problem:** You need to deploy trusted binaries from Mondoo to Windows hosts using Active Directory Group Policy or MDM solutions. + +**Solution:** You can now install Mondoo using a new `Mondoo.Installer` signed PowerShell module that is published on the PowerShell Gallery at https://www.powershellgallery.com/packages/Mondoo.Installer/1.0. You can use this new signed module to deploy Mondoo CLIs to managed Windows hosts by running `Install-Mondoo`. + +```powershell +Install-Module -Name Mondoo.Installer +Install-Mondoo +``` + +Because our scripts and binaries are fully signed, the rollout of `cnquery` and `cnspec` was never easier. The module automatically validates if the latest version is already installed, or it updates to the newest version if required: + +![PowerShell module installation](/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_install.png) + +After the installation script is complete, `cnquery` and `cnspec` are available for use: + +![cnquery and cnspec installed with PowerShell module](/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_version.png) + +## 🧹 IMPROVEMENTS + +### Detect expiring certs in Kubernetes Ingresses + +A new `Ingress certificates less than 15 days from expiration` query in the `Kubernetes Best Practices by Mondoo` policy detects certificates nearing their expiration data in your Kubernetes cluster. This query looks at all certificates defined in a Kubernetes Ingress resource that are stored as a Secret and fails when the expiration data is less than 15 days. + +### Better asset scanning with the Mondoo AWS Lambda integration + +The Mondoo AWS integration has been improved to better scan large and complex AWS environments: + +- Scan regions with more than 1,000 running instances. +- Use AWS Instance Connect to scan instances if SSH scans fail. + +### Add cnquery/cnspec to the integrations page + +You can now set up cnquery and cnspec to communicate with Mondoo Platform directly on the Integrations page of the console. + +![cnspec and cnquery Integrations](/img/releases/2023-01-03-mondoo-7.11-is-out/integrations.png) + +## 🐛 BUG FIXES AND UPDATES + +- Fix some help descriptions not being displayed. +- Don't cut off the beginning of some help descriptions. +- Using two or more search filters in the console requires all filters to match instead of just one. +- Allow organization owners to delete invites. +- Improve the default output of the `kernel` resource. +- Fix `terraform.module` not discovering all modules. +- Fix invalid command examples in some console integration pages. +- Update Workstation integrations page text to better match terms used by cloud vendors. diff --git a/releases/2023-01-10-mondoo-7.12-is-out.md b/releases/2023-01-10-mondoo-7.12-is-out.md new file mode 100644 index 000000000..9bcd00763 --- /dev/null +++ b/releases/2023-01-10-mondoo-7.12-is-out.md @@ -0,0 +1,281 @@ +--- +slug: mondoo-7.12-is-out/ +title: Mondoo 7.12 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.12 is out! This release includes new GCP/Azure resources, New/Updated CIS Policies, AWS ECS scanning, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/mondoo/) | [Docker Container](https://hub.docker.com/r/mondoo/client) + +--- + +## 🎉 NEW FEATURES + +### New GCP and Azure resources + +**Problem:** You want to explore and secure your GCP and Azure cloud accounts using cnquery and cnspec. + +**Solution:** cnquery and cnspec now include new resources for securing GCP and Azure cloud services: + +- NEW `azure.cloudDefender` resource +- NEW `azure.sql.server.vulnerabilityassessment` resource +- NEW `azure.authorization.roleDefinition` resource +- NEW `azure.mysql.flexibleServer` resource +- NEW `azure.storage.account.queueService.properties` resource +- NEW `azure.storage.account.blobService.properties` resource +- NEW `azure.storage.account.tableService.properties` resource +- NEW `azure.storage.account.dataProtection` resource +- NEW `azure.network.watcher.flowlog` resource +- NEW `azure.monitor.diagnosticSettings` resource +- NEW `azure.monitor.activitylog` resource +- NEW `gcp.project.apiKeys` resource +- NEW `gcp.project.essentialContacts` resource +- NEW `gcp.project.logging` resource +- NEW `gcp.project.sql` resource +- `gcp.compute.firewall` now includes `allowed` and `denied` data +- `gcp.compute.network` now includes `mode` data +- `gcp.project.clusters` moved to `gcp.project.gke.clusters` + +See the full documentation for all GCP resources in our [GCP Resource Pack docs](/mql/resources/gcp-pack/) and [Azure Resource Pack docs](/mql/resources/azure-pack/). + +### New and updated CIS policies + +**Problem:** Your infrastructure is complex, with an ever growing number of operating systems you need to secure. + +**Solution:** Mondoo now includes the latest macOS and Linux CIS policies with new policies for the latest OS releases. + +**New CIS policies:** + +- CIS Red Hat Enterprise Linux 9 Benchmark 9 1.0 +- CIS AlmaLinux OS 9 Benchmark 1.0 +- CIS Rocky Linux 9 Benchmark 1.0 +- CIS Oracle Linux 9 Benchmark 1.0 +- CIS Apple macOS 13.0 Ventura Benchmark 1.0.0 + +**Updated CIS policies:** + +- CIS CentOS Linux 8 Benchmark updated from 1.0.1 to 2.0.0 +- CIS Oracle Linux 8 Benchmark updated from 1.0.1 to 2.0.0 +- CIS SUSE Linux Enterprise 11 Benchmark updated from 2.0.0 to 2.1.1 +- CIS Apple macOS 10.15 Catalina Benchmark updated from 2.1.0 to 3.0.0 +- CIS Apple macOS 11.0 Big Sur Benchmark updated from 2.1.0 to 3.0.0 +- CIS Apple macOS 12.0 Monterey updated from 1.1.0 to 2.0.0 + +### AWS ECS container scanning + +You can now scan all AWS ECS containers when scanning your AWS account with a new `--discover` flag option, `ecs`. Use this flag with cnquery and cnspec to explore and secure ECS containers in your infrastructure. + +![Scan ECS Containers on the CLI](/img/releases/2023-01-10-mondoo-7.12-is-out/ecs.png) + +### Multiple login methods in the Mondoo Console + +**Problem:** You signed up with your email account, and now you want to sign in with your Google, Microsoft, or GitHub login. + +**Solution:** You can now add multiple authentication methods to your Mondoo Platform account, so you can log in with any combination of email, Microsoft, Google, or GitHub accounts. + +To change your login method: + +1. In the top-right corner of the Mondoo Console, select your user icon. +2. Select **User Settings**. +3. In the left navigation, select **Security**. Under **Connected Accounts**, you can connect and disconnect accounts to update your login methods. + +![Managing Connected Accounts](/img/releases/2023-01-10-mondoo-7.12-is-out/accounts.png) + +### New scan summaries for multiple asset scans + +**Problem:** cnspec scan output gives you quick insight into the security posture of assets. However, when scanning complex systems like Kubernetes clusters with hundreds or thousands of assets, there is often too much data to consume. + +**Solution:** We've developed an all-new summary view for asset scans that allows you to more easily understand the security posture of complex systems like Kubernetes in cnspec. + +An example scan of a small Kubernetes cluster: + +```text +Scanned 29 assets + +Debian GNU/Linux 9 (stretch) + F index.docker.io/library/nginx@f7988fb6c02e + F index.docker.io/library/postgres@3f4441460029 + +Distroless + B registry.k8s.io/etcd@6f72b8515449 + B registry.k8s.io/kube-apiserver@4188262a351f + B registry.k8s.io/kube-controller-manager@d3a06262256f + B registry.k8s.io/kube-proxy@6bf25f038543 + B registry.k8s.io/kube-scheduler@f478aa916568 + +Kubernetes Cluster + F K8s Cluster minikube + +Kubernetes DaemonSet + D kube-system/kube-proxy + +Kubernetes Deployment + C kube-system/coredns + D luna/luna-frontend + D luna/postgres + +Kubernetes Pod + C kube-system/coredns-565d847f94-b4pcx + C kube-system/etcd-minikube + D kube-system/kube-apiserver-minikube + D kube-system/kube-controller-manager-minikube + D kube-system/kube-proxy-bqthk + D kube-system/kube-scheduler-minikube + D kube-system/storage-provisioner + D luna/luna-frontend-7fb96c846b-jjnhz + D luna/luna-frontend-7fb96c846b-tmg95 + D luna/luna-frontend-7fb96c846b-xrl6c + D luna/postgres-5bb9d69b96-d9zzg + +Kubernetes ReplicaSet + C kube-system/coredns-565d847f94 + D luna/luna-frontend-7fb96c846b + D luna/postgres-5bb9d69b96 + D luna/postgres-655d75f54b + +scratch + U gcr.io/k8s-minikube/storage-provisioner@18eb69d1418e + U registry.k8s.io/coredns/coredns@8e352a029d30 + +Summary +======= + +Score Distribution Asset Distribution +------------------ ------------------ +A 0 assets Kubernetes ReplicaSet 4 +B 5 assets Kubernetes Pod 11 +C 4 assets Kubernetes DaemonSet 1 +D 15 assets Distroless 5 +F 3 assets Kubernetes Cluster 1 +U 2 assets scratch 2 + Debian GNU/Linux 9 (stretch) 2 + Kubernetes Deployment 3 + +For detailed output, run this scan with "-o full". + +See more scan results and asset relationships on the Mondoo Console: https://console.mondoo.com/space/fleet?spaceId=lunalectric-prod-eks +``` + +### Iterating over keys and values + +MQL already supports accessing keys and values via `key` and `value` in maps: + +```coffee +> sshd.config.params.where( key == /p/ ) +sshd.config.params.where: { + ChallengeResponseAuthentication: "no" + Ciphers: "aes256-ctr,aes192-ctr,aes128-ctr" +} +``` + +We've extended this support to include parsed JSON and YAML structures: + +```coffee +> parse.json("my.json").params.where( value == 1 ) +parse.json.params.where: { + apples: 1.000000 + oranges: 1.000000 +} +``` + +You can use these structures to quickly filter maps via `key` and `value` or to make assertions. For example you can ensure that certain keys exist: + +```coffee +> parse.json("my.json").params.where( key == /or/ ) +parse.json.params.where: { + "hawthorn berries": 16.000000 + oranges: 1.000000 +} +``` + +## 🧹 IMPROVEMENTS + +### Asset counts on integration tiles + +Integration tiles in the integration tab now show a summary of discovered assets, applied policies, and total applied controls. Now you can more easily see where assets are discovered. + +![Integration Summary](/img/releases/2023-01-10-mondoo-7.12-is-out/integrations.png) + +### Detect missing asset filters in `cnspec bundle lint` + +`cnspec bundle lint` now includes a new check to ensure the policy's spec section includes an asset filter. This new check raises an error for policies that have no asset filter defined: + +```yaml +policies: + - uid: mondoo-azure-security + name: Microsoft Azure Security by Mondoo + version: 1.0.0 + specs: + - scoring_queries: + mondoo-azure-security-ensure-os-disk-are-encrypted: null + mondoo-azure-security-ssh-access-restricted-from-internet: null +``` + +The policy should be updated with an asset filter like this: + +```yaml +policies: + - uid: mondoo-azure-security + name: Microsoft Azure Security by Mondoo + version: 1.0.0 + specs: + - asset_filter: + query: | + platform.name == "azure" + platform.kind == "api" + scoring_queries: + mondoo-azure-security-ensure-os-disk-are-encrypted: null + mondoo-azure-security-ssh-access-restricted-from-internet: null +``` + +### Expanded vault support for storing secrets + +cnquery and cnspec now have expanded vault support for short-term secret storage when using inventory files. You can now store secrets with an in-memory vault or using GCP KMS encryption and GCP Cloud Storage through the [Berglas project](https://github.com/GoogleCloudPlatform/berglas). + +Example inventory file storing secrets with `gcp-berglas`: + +```yaml +apiVersion: v1 +kind: Inventory +metadata: + name: inventory +spec: + assets: + - name: cool-stuff + connections: + - backend: 0 + credentials: + - secret_id: storage/my-secrets/secret + type: 1 + secret_encoding: 3 + options: + discover: + targets: + - all + vault: + name: gcp-berglas + type: gcp-berglas + options: + project_id: id +``` + +### Fine-grained control over Azure subscription scanning + +You can now control particular Azure subscriptions to include or exclude during scans with new `--subscriptions` and `--subscriptions-exclude` flags. You can use these new flags to control which subscriptions you want to inspect. For example, to run the cnquery shell on all subscriptions except for two, you can exclude those subscriptions explicitly: `cnquery shell azure --subscriptions-exclude=984df67f-fc2e-4ebf-80a2-1234567891011,1e829eb0-e6a3-4c7b-8212-1234567891011` + +## 🐛 BUG FIXES AND UPDATES + +- Show better results for failures in the `Google Cloud (GCP) Security by Mondoo` policy. +- Only check SSH server configuration when the SSH server is installed in the `Linux Server Security by Mondoo`. Thanks. [@stdevel](https://github.com/stdevel)! +- Avoid failures when the Kubernetes Ingress has no certificates. +- Fix queries in `Linux Workstation Security by Mondoo`, `BSI SYS.1.2 Windows Server`, and `Amazon Web Services (AWS) Operational Best Practices`, `CIS Distribution Independent Linux Benchmark`, and `CIS VMware ESXi 6.7 Benchmark` policies that were not executing. +- Don't show a policy lint error if the policy spec has either scoring queries or data queries attached. +- Improve reliability when scanning instances using SSM in cnquery, cnspec, and the Mondoo AWS Integration. +- Better describe when a directory of Terraform or Kubernetes files is scanned. +- Improve reliability in MQL queries that execute commands concurrently. +- Don't silently fail to run the `socketstats` resource when it's not supported. +- Improve the reliability of scanning ECR images. diff --git a/releases/2023-01-17-mondoo-7.13-is-out.md b/releases/2023-01-17-mondoo-7.13-is-out.md new file mode 100644 index 000000000..3cdcb3f91 --- /dev/null +++ b/releases/2023-01-17-mondoo-7.13-is-out.md @@ -0,0 +1,128 @@ +--- +slug: mondoo-7.13-is-out/ +title: Mondoo 7.13 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.13 is out! This release includes new GCP and Azure resources and cnspec as a service! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New OpenPGP resource + +**Problem** You want to validate that OpenPGP keys for YUM or APT repositories have not expired. + +**Solution** You can now use new OpenPGP resources to validate that repository signatures are still valid. + +```coffee +cnquery> parse.openpgp(path: "./expires.asc").all( identities.all( signatures.all( keyExpiresIn.days > 30 ))) +[ok] value: true +``` + +Inspect OpenPGP keys with the following MQL query: + +```coffee +parse.openpgp(path: "./expires.asc") { + primaryPublicKey { * } + identities { + id + signatures { * } + } +} +``` + +Result from `cnquery` + +```coffee +cnquery> parse.openpgp(path: "./expires.asc") { primaryPublicKey { * } identities { id signatures { * } } } +parse.openpgp.list: [ + 0: { + primaryPublicKey: { + id: "7312FA356E7DB13F" + bitLength: 4096 + version: 4 + fingerprint: "07a453f8aea248e1e9b8eae27312fa356e7db13f" + keyAlgorithm: "rsa" + creationTime: 2023-01-14 17:24:58 +0100 CET + } + identities: [ + 0: { + id: "Test Expiration " + signatures: [ + 0: { + keyAlgorithm: "rsa" + version: 4 + keyExpiresIn: 363 days 23 hours 43 minutes 5 seconds + identityName: "Test Expiration " + signatureType: "positive_cert" + hash: "SHA-256" + creationTime: 2023-01-14 17:24:58 +0100 CET + lifetimeSecs: -1 + expiresIn: null + fingerprint: "07a453f8aea248e1e9b8eae27312fa356e7db13f" + keyLifetimeSecs: 31449568 + } + ] + } + ] + } +] +``` + +### New GCP and Azure resources + +**Problem:** You want to explore and secure your GCP and Azure cloud accounts using cnquery and cnspec. + +**Solution:** cnquery and cnspec now include new resources for securing GCP and Azure cloud services: + +- NEW `azure.cloudDefender.defenderForContainers` resource +- NEW `azure.cloudDefender.defenderForServers` resource +- NEW `azure.resourceGroups` resource +- NEW `gcp.project.cloudFunctions` resource +- NEW `gcp.project.cloudRun` resource +- NEW `gcp.project.dataproc.clusters` resource +- NEW `gcp.project.iam.serviceAccounts` resource +- `gcp.bigquery` is now `gcp.project.bigquery` +- `gcp.compute` is now `gcp.project.compute` +- `gcp.dns` is now `gcp.project.dns` +- `gcp.project.compute.networks` now includes `subnetworks` data +- `gcp.project.compute.instances` now includes `confidentialInstanceConfig` data +- `gcp.project.dns.managedZones` now includes `dnssecConfig` data +- `gcp.project.kms.keyrings { cryptokeys { * } }` now includes `created`, `nextRotation`, `rotationPeriod`, `versionTemplate`, `labels`, `importOnly`, `destroyScheduledDuration`, and `cryptoKeyBackend` data +- `gcp.project` now includes `commonInstanceMetadata` data + +See the full documentation for all GCP resources in our [GCP Resource Pack docs](/mql/resources/gcp-pack/) and [Azure Resource Pack docs](/mql/resources/azure-pack/). + +### Run cnspec as a service + +**Problem** You want to move from the existing Mondoo Client to the new and expanded cnspec client to scan your servers, but cnspec can't run as a service + +**Solution** You can now run cnspec as a service to continuously scan servers and workstations. cnspec is our next-generation open source client with capabilities not found in the existing Mondoo command line interface (Mondoo Client). We highly recommend that you migrate your system to use this new and improved client as we begin the process of deprecating Mondoo Client. + +[Learn about cnspec ->](/cnspec/cnspec-about/) + +[Install cnspec ->](/cnspec/) + +After deploying the cnspec package to your systems, you can migrate to the cnspec service with the following commands on systemd-based Linux hosts: + +```bash +systemctl stop mondoo.service +systemctl disable mondoo.service +systemctl enable cnspec.service +systemctl start cnspec.service +``` + +## 🐛 BUG FIXES AND UPDATES + +- Ensure that `gcp.project.bigquery` resource IDs are always unique. +- Change the default values in `github.repository` from `id` to `fullName` to make it easier to find repositories. +- Print labels when running MQL queries that use variables inside blocks. +- Show an error instead of crashing if the config file contains malformed keys. +- Avoid a potential crash when running `cnspec login` on a fresh installation. diff --git a/releases/2023-01-25-mondoo-7.14-is-out.md b/releases/2023-01-25-mondoo-7.14-is-out.md new file mode 100644 index 000000000..54833b483 --- /dev/null +++ b/releases/2023-01-25-mondoo-7.14-is-out.md @@ -0,0 +1,180 @@ +--- +slug: mondoo-7.14-is-out/ +title: Mondoo 7.14 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.14 is out! This release includes expanded GitHub support, new GCP resources, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Dive deeper into GitHub + +**Problem:** You need out-of-the-box functionality to help you secure your GitHub organization, repositories, and users. + +**Solution:** We've been busy improving nearly every aspect of the GitHub experience with cnspec, making it easier to apply out-of-the-box policy to secure your GitHub infrastructure and providing the resources and UI experience you need to create custom policies. + +The `GitHub Organization Security by Mondoo` policy has been rewritten from the ground up to focus on critical security settings in your organization and repository. Existing queries focused on open source repository best practices have been removed and replaced with additional security queries to ensure settings like important branch protections are in place. + +While building out this updates policy, we realized the various GitHub resources were missing important data necessary to write our out of the box policy and custom policies for your organizations. We made the following changes to improve the GitHub resources: + +- `github.repository` resources now support repository stargazer counts, repo fork resolution, and support for repository issues. +- `github.organization` resource now includes avatar, followers and following data +- `github.user` resource is greatly expanded to help examine user accounts +- `github.organization` and `github.user` now support collecting information on gists + +Finally, we improved the `cnquery` to make exploring your GitHub infrastructure easier. The `cnquery shell github` command now shows a list of repositories to examine, making it easier to find the repository you want to explore. We also added a new `cnquery shell github user ` command allows you to examine details on GitHub users using the expanded `github.user` resource. + +![Shell GitHub Repository Selection](/img/releases/2023-01-25-mondoo-7.14-is-out/shell_github_repos.png) + +### New and updated GCP Resources + +**Problem:** You want to explore and secure your GCP projects using cnquery and cnspec. + +**Solution:** cnquery and cnspec now include new and improved resources for exploring and securing GCP services: + +- New `gcp.project.compute.backendServices` resource +- New `gcp.project.monitoring.alertPolicies` resource +- Add `access` data to `gcp.project.bigquery.datasets` resource +- Add `accessApprovalSettings` data to `gcp.organizations` and `gcp.projects` resources +- Add `cryptokeys` data to `gcp.project.kms.keyrings` resource +- Add `network` data to `gcp.project.dns.policies` resource +- Add `storageBucket` data to `gcp.project.logging.sinks` resource +- Add `retentionPolicy` data to `gcp.project.storage.buckets` resource +- Fix errors when using `gcp.project.kms` when key status is not available +- Rename `gcp.storage` resource to `gcp.project.storage` + +### Updated Azure CIS Policy + +**Problem:** You need CIS policies to keep your Azure subscriptions secure and compliant. + +**Solution:** Mondoo now includes the latest `CIS Microsoft Azure Foundations Benchmark` version to 1.5.0. This updated policy utilizes the latest new resources shipped with the latest versions of cnspec and includes many new queries as well as audit and remediation steps for all queries. + +### Store GCP service account in an inventory file vault + +**Problem:** You want to use an inventory file to store a set of GCP assets to scan, but you don't want to insecurely store credentials in the yaml config. + +**Solution:** You can now store your GCP service account data in a secure inventory vault so you can share inventory files without worrying about credentials. This example inventory file stores the credentials used to access GCP infrastructure using the GCP Berglas project. + +```yaml +apiVersion: v1 +kind: Inventory +metadata: + name: inventory +spec: + assets: + - name: cool-stuff + connections: + - backend: 13 + credentials: + - secret_id: storage/random-bucket2/foo + type: 1 + secret_encoding: 3 + options: + discover: + targets: + - auto + vault: + name: gcp-berglas + type: gcp-berglas + options: + project_id: mondoo-dev-262313 +``` + +You can then run this inventory on the CLI without passing credentials on the CLI or within env vars: + +```bash +cnquery scan --inventory-file inv.yaml +``` + +### Junit output format for cnspec + +**Problem:** You want to run cnspec in your CI pipelines, but the output is hard to understand. + +**Solution:** The cnspec CLI can now produce JUnit output on the CLI for integration with popular CI/CD platforms such as Jenkins or GitLab: + +```bash +cnspec scan docker debian:10 --output junit > report.junit +``` + +```xml + + + + + + + + + + + + + ... + + + + + +``` + +### Multi-Role service accounts + +**Problem:** You need to set additional permissions for your service accounts, but you don't want to give unnecessary permissions by using the **owner** role. + +**Solution:** You can now assign more than one role to a service account in the console to provide more fine grained permissions for service accounts. To set permissions on a service account select the **Settings** tab, select **Service Accounts**, select the account you wish to edit, and then select the **Permissions** button. + +![Permissions selection modal](/img/releases/2023-01-25-mondoo-7.14-is-out/multi_role.png) + +### Trigger AWS integration scans directly in the console + +**Problem:** Hassle free continuous scanning of your AWS accounts is great, but sometimes you need to trigger a scan to evaluate the current security state. + +**Solution:** Now you can trigger a one time scan of your AWS account in the AWS Integration page. + +![Scan Now in AWS](/img/releases/2023-01-25-mondoo-7.14-is-out/scan_now.png) + +### Filter namespaces to scan in the Kubernetes Operator + +**Problem:** Different teams are responsible for different parts of a Kubernetes cluster and you need to control which namespaces the Mondoo Kubernetes Operator scans. + +**Solution:** Mondoo now gives you more control over which namespaces are scanned by the Kubernetes Operator. Scan all namespaces, scan all namespaces except a list of specific namespaces, or take full control and only scan specified namespaces. + +![Namespace Filtering](/img/releases/2023-01-25-mondoo-7.14-is-out/namespace_filtering.png) + +## 🧹 IMPROVEMENTS + +### Improved multi-asset scanning CLI + +We've reworked how progress bars behave when scanning complex, multi-asset infrastructure such as Kubernetes systems. The new progress bar format will allow you to see better what is currently scanning and the total progress for the cluster scan. + +![CLI Scan](/img/releases/2023-01-25-mondoo-7.14-is-out/cli_scan.png) + +### AWS integrations show asset counts + +The AWS integration pages now show the total number of assets at the top of the page, similar to other integration pages. + +![AWS Integration](/img/releases/2023-01-25-mondoo-7.14-is-out/aws_integration.png) + +## 🐛 BUG FIXES AND UPDATES + +- Fix an issue where the fallback to ssh-agent authentication was not working properly +- Improve client setup instructions in the console to resolve failures +- Simplify the workstation setup instructions +- Update Packer integration instructions to use cnspec and the latest Mondoo packer plugin +- Update long-lived token instructions to use cnspec +- Make sure that query result data displays in the console scan results +- Improve the reliability of Kubernetes integration status data in the console +- Fix the loading of inventory files when cnspec is running in serve mode +- Fix BSI/CIS/Mondoo Windows policies to account for users on a system that have not yet logged in +- Improve remediation steps in Mondoo and CIS policies +- Resolves slow loading times on the integrations tab +- Fix vendor specific icons not always displaying for policies in Policy Hub +- Add alias for `mondoo login` to the existing `mondoo register` command so that cnspec and mondoo commands match diff --git a/releases/2023-01-31-mondoo-7.15-is-out.md b/releases/2023-01-31-mondoo-7.15-is-out.md new file mode 100644 index 000000000..d9dd3b28d --- /dev/null +++ b/releases/2023-01-31-mondoo-7.15-is-out.md @@ -0,0 +1,86 @@ +--- +slug: mondoo-7.15-is-out/ +title: Mondoo 7.15 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.15 is out! This release includes CSV output support, a new GCP CIS policy, and UI improvements! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### CSV output format for cnquery + +**Problem:** You want to export cnquery results to a spreadsheet for analysis. + +**Solution:** The cnquery CLI can now produce CSV output on the CLI for integration spreadsheet apps or other systems that parse CSV input. + +```bash +cnquery scan docker debian:11 --output csv > report.csv +``` + +![CSV output in spreadsheet](/img/releases/2023-01-31-mondoo-7.15-is-out/csv.png) + +### Terraform in the Fleet view + +**Problem:** You want to use cnspec to secure your Terraform code, but it's hard to find Terraform code results when they show up as uncategorized assets. + +**Solution:** A new Terraform section in the Fleet view makes it easy to find all your Terraform scans in one place. + +![Terraform in the console](/img/releases/2023-01-31-mondoo-7.15-is-out/terraform.png) + +## 🧹 IMPROVEMENTS + +### Only show applicable controls in the console + +Controls that are cnspec automatically skipped are no longer shown as disabled in the Mondoo console. Depending on the policy and infrastructure scanned, there could be several dozen controls that cnspec skipped automatically. This new behavior simplifies the asset controls view and makes it more clear which controls ran and which you disabled. + +### Improved CLI scanning UX + +After launching our updated CLI UX last week, we got loads of great feedback from the community on how we could continue to improve the experience. This week we shipped several improvements to make it easier to read the scan output and to improve the experience when scans fail. + +![Updated CLI scan behavior](/img/releases/2023-01-31-mondoo-7.15-is-out/cli.gif) + +### Org names in shared space titles + +Differentiating between shared spaces can be difficult if the space names are the same. Shared spaces now include the org and space name, so you can better tell spaces apart. + +![Shared Spaces with Org names](/img/releases/2023-01-31-mondoo-7.15-is-out/orgs.png) + +### Updated GCP CIS policy + +Mondoo now includes the latest `CIS Google Cloud Platform Foundation Benchmark` policy version 2.0.0. This updated policy uses the latest new resources shipped with the latest versions of cnspec. It includes many new queries as well as audit and remediation steps for all queries. + +### Install cnspec using Ansible + +The Mondoo Ansible role has been updated to make deploying and migrating to cnspec at scale easier. This updated role deploys cnspec and cnquery to new systems and upgrades existing installations to use cnspec and cnquery. Just run this role against systems, and you'll automatically have the latest cnspec release running as a service. + +## 🐛 BUG FIXES AND UPDATES + +- Enable the Mondoo install script to handle GPG key updates to package repositories to prevent update failures +- Improve the error message when an incorrect repository is passed to `scan github repo` +- Fix a race condition in the cnspec/cnquery scan progress bars +- Print status of assets that can't be scanned in the progress bars +- Expose the actual error from GCP when unable to connect to resources +- Remove an extra warning that was incorrectly printed while scanning Terraform configs +- Ignore Terraform content in the `.terraform` directory +- Properly display policies in Policy Hub that have zero queries +- Fix links to integration pages from the Service Accounts +- Improve reliability in some Azure CIS Foundation policy queries +- Improve the reliability of Kubernetes status in the Kubernetes integration pages +- Operating system integration pages no longer mention the setup of Mondoo Client +- Kubernetes Integration page once again enables workload scanning by default +- Mondoo GitHub action supports scanning GitHub organizations again +- Fix MQL queries hanging with aliased and direct resource in the same policy +- Show the scan trigger button on the AWS integrations when they are in an errored state +- Only call the Google Cloud CLI when scanning GCP if neither project or project-id were provided +- Fix errors using the `gcp.project.gkeService` when a GKE cluster hasn't finished provisioning +- Fix failures when scanning GCP storage buckets +- Add projectID to many GCP resources so asset relationships can be determined +- Deprecate the `zone` value for GKE clusters in favor of a new `location` value diff --git a/releases/2023-02-07-mondoo-7.16-is-out.md b/releases/2023-02-07-mondoo-7.16-is-out.md new file mode 100644 index 000000000..d4518dbc2 --- /dev/null +++ b/releases/2023-02-07-mondoo-7.16-is-out.md @@ -0,0 +1,278 @@ +--- +slug: mondoo-7.16-is-out/ +title: Mondoo 7.16 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.16 is out! This release includes new Azure, GCP, and Microsoft 365 integrations plus a whole new UI experience! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New UI navigation experience + +**Problem:** There are many things you can do in the Mondoo console, but sometimes it's hard to find what you need. + +**Solution:** We rebuilt the navigation in the Mondoo console from the ground up to make finding information and navigating your infrastructure easier. We replaced the top navigation tabs with a new navigation menu on the left side of the page. This menu includes frequently accessed sections of the UI that were previously tabs, such as Fleet, CI/CD, Integrations, and Policy Hub. + +![New UI](/img/releases/2023-02-07-mondoo-7.16-is-out/new_ui.png) + +Sub-items in the menu make it easier to find what you're looking for without having to navigate through multiple pages. For example to view Kubernetes integrations you can select Integrations -> Kubernetes in the menu instead of loading the Integrations page and then selecting Kubernetes. This new menu also includes quick access to the Mondoo Vulnerability Database, which was previously buried deep in the Policy Hub. If you're thinking "I didn't know there was a Mondoo Vulnerability Database," well, that's why we have new menu. + +![Mondoo Vulnerability Database](/img/releases/2023-02-07-mondoo-7.16-is-out/mvd.png) + +We have plenty more planned to fill out this new navigation menu, so stay tuned for new releases. + +### New GCP, Azure, and Microsoft 365 integrations + +**Problem:** You need to continuously assess the security of all your cloud and SaaS resources. + +**Solution:** You can now configure continuous scanning of GCP, Azure, and even Microsoft 365 services through the Mondoo console. There's no need to download an agent or deploy any code into your infrastructure. Configure ready-only service credentials in the Mondoo console and let Mondoo do the rest. + +![New Integrations Page](/img/releases/2023-02-07-mondoo-7.16-is-out/integrations.png) + +### Manage vault secrets data with cnspec and cnquery + +**Problem**: You want to use a Mondoo inventory file to scan multiple assets, but you also need to securely store any required secrets. + +**Solution**: cnspec and cnquery now include the ability to manage secrets data in vaults directly using the command line. + +Given an existing Mondoo inventory file: + +```yaml +kind: Inventory +spec: + assets: + - id: 34.122.119.102 + connections: + - host: 34.122.119.102 + backend: ssh + credentials: + - type: password + user: chris + password: mypwd +``` + +You can use this inventory file to scan all defined assets: + +```bash +cnspec scan --inventory-file inventory.yml +``` + +To securely store the secrets in this vault, you can define a keychain vault: + +```bash +cnspec vault set mondoo-client-vault --type keyring +→ set new vault configuration name=mondoo-client-vault +→ stored vault configuration successfully +``` + +Then confirm that the vault is configured with the `vault list` command: + +```bash +cnspec vault list +vault : mondoo-client-vault (keyring) +``` + +Next, add your secret to the keychain vault with the `vault add-secret` command: + +```bash +cnspec vault add-secret mondoo-client-vault my-linux-user-secret '{ "user": "chris", "type": "password", "password: mypwd" }' +``` + +Now, you can reference the secret from the vault in your inventory: + +```yaml +kind: Inventory +spec: + assets: + - id: 34.122.119.102 + connections: + - host: 34.122.119.102 + backend: ssh + credentials: + - secret_id: my-linux-user-secret +vault: + name: mondoo-client-vault + type: keyring +``` + +Re-run the scan, and you will see that the secret was picked up: + +```bash +cnspec scan --inventory-file inventory.yml +``` + +### New AWS MQL resources + +**Problem:** You want to write policies to secure your Amazon ECR images and Amazon CloudFront distributions. + +**Solution:** Mondoo now includes new resources for Amazon ECR and CloudFront so you can explore and secure even more of your Amazon infrastructure using MQL. + +Querying ECR images: + +```coffee +cnquery> aws.ecr.images { * } +aws.ecr.images: [ + 0: { + registryId: "172746783610" + tags: [ + 0: "latest" + ] + digest: "sha256:0c78b32ef7f3b41e3ed3115488d64a6faf7a3cdade2a5eb720092b6e8e0a88ca" + repoName: "vjtestpriv" + mediaType: "application/vnd.docker.distribution.manifest.v2+json" + } +] +cnquery> aws.ecr.publicRepositories { * } +aws.ecr.publicRepositories: [] +cnquery> aws.ecr.privateRepositories { * } +aws.ecr.privateRepositories: [ + 0: { + uri: "172746783610.dkr.ecr.us-east-1.amazonaws.com/vjtestpriv" + public: false + region: "us-east-1" + registryId: "172746783610" + name: "vjtestpriv" + arn: "arn:aws:ecr:us-east-1:172746783610:repository/vjtestpriv" + images: [ + 0: aws.ecr.image id = vjtestpriv/sha256:0c78b32ef7f3b41e3ed3115488d64a6faf7a3cdade2a5eb720092b6e8e0a88ca + ] + } +] +``` + +Querying CloudFront distributions and functions: + +```coffee +cnquery> aws.cloudfront { distributions { *} functions { * } } +aws.cloudfront: { + distributions: [ + 0: { + origins: [ + 0: aws.cloudfront.distribution.origin id = 185972265011/test-1be01d1424077260.elb.us-east-1.amazonaws.com + ] + status: "Deployed" + cacheBehaviors: [] + domainName: "d1w4eig1i8et92.cloudfront.net" + arn: "arn:aws:cloudfront::185972265011:distribution/E3J92HBG5Z8S6Q" + defaultCacheBehavior: { + AllowedMethods: { + CachedMethods: { + Items: [ + 0: "HEAD" + 1: "GET" + ] + Quantity: 2.000000 + } + Items: [ + 0: "HEAD" + 1: "GET" + ] + Quantity: 2.000000 + } + CachePolicyId: "658327ea-f89d-4fab-a63d-7e88639e58f6" + Compress: true + DefaultTTL: null + FieldLevelEncryptionId: "" + ForwardedValues: null + FunctionAssociations: { + Items: null + Quantity: 0.000000 + } + LambdaFunctionAssociations: { + Items: null + Quantity: 0.000000 + } + MaxTTL: null + MinTTL: null + OriginRequestPolicyId: null + RealtimeLogConfigArn: null + ResponseHeadersPolicyId: null + SmoothStreaming: false + TargetOriginId: "test-1be01d1424077260.elb.us-east-1.amazonaws.com" + TrustedKeyGroups: { + Enabled: false + Items: null + Quantity: 0.000000 + } + TrustedSigners: { + Enabled: false + Items: null + Quantity: 0.000000 + } + ViewerProtocolPolicy: "allow-all" + } + } + ] + functions: [ + 0: { + status: "" + arn: "arn:aws:cloudfront:global:185972265011::/functions/vjtest" + comment: "" + stage: "DEVELOPMENT" + name: "vjtest" + runtime: "cloudfront-js-1.0" + lastModifiedTime: "2023-01-29T21:07:01Z" + createdTime: "2023-01-29T21:07:01Z" + } + ] +} +``` + +### GitHub Repository Best Practices policy + +**Problem:** You want to see the state of your GitHub repositories, including both security and best practices violations. + +**Solution:** We split out non-security checks in the `GitHub Repository Security by Mondoo` policy into a new policy, `GitHub Repository Best Practices by Mondoo`, so you can report security and best practices issues independently from one another. We've also added a new query to the `GitHub Repository Security by Mondoo` policy to ensure repositories are configured to use Dependabot to report available updates for package management lock files, GitHub Actions, or Docker base images. + +![New Policy](/img/releases/2023-02-07-mondoo-7.16-is-out/policy.png) + +## 🧹 IMPROVEMENTS + +### Terraform configs now scan as `terraform-hcl` platform + +It isn't always clear that the `terraform` platform in fleet view was Terraform HCL configuration files, so we've renamed the `terraform` platform to `terraform-hcl`. Existing assets will continue to scan and display as `terraform` until scanned with an updated client. + +### Add `publicAccessPrevention` to `gcp.storage.buckets` resource + +The `gcp.storage.buckets` resource now includes `publicAccessPrevention` data. Here's an example of querying this data out for all buckets in a project: + +```coffee +gcp.storage.buckets { iamConfiguration['publicAccessPrevention'] } +gcp.storage.buckets: [ + 0: { + iamConfiguration[publicAccessPrevention]: "inherited" + } + 1: { + iamConfiguration[publicAccessPrevention]: "inherited" + } + 2: { + iamConfiguration[publicAccessPrevention]: "inherited" + } + 3: { + iamConfiguration[publicAccessPrevention]: "inherited" + } +] +``` + +## 🐛 BUG FIXES AND UPDATES + +- The + button on the Managed Clients page now properly links to "Server & Endpoint Security" integrations. +- The platform column in the Managed Clients page now displays platform values +- Notification bell now indicates the number of unread notifications. +- Update several integration logos to use high-resolution logos for retina displays. +- Update integration pages with more consistent headers. +- Handle errors when setting up integrations. +- Add back the missing link to documentation on the Kubernetes integration page. +- Change all references to Amazon AWS to be just AWS. No ATM machines here! +- Fix the AWS Integration counts on the overview page not always matching actual counts. +- Improve reliability of results in the CIS Microsoft Azure Foundations and CIS GCP Foundations policies +- Don't mention the legacy Library name in the Mondoo Vulnerability Database +- Update VMware examples in the console to use cnspec diff --git a/releases/2023-02-14-mondoo-7.17-is-out.md b/releases/2023-02-14-mondoo-7.17-is-out.md new file mode 100644 index 000000000..2e0704462 --- /dev/null +++ b/releases/2023-02-14-mondoo-7.17-is-out.md @@ -0,0 +1,175 @@ +--- +slug: mondoo-7.17-is-out/ +title: Mondoo 7.17 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.17 is out! This release includes Amazon ECR/ECS scanning, new Amazon and Azure resources, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Continuous Amazon ECR and ECS scanning + +**Problem:** You want to continuously scan Amazon Elastic Container Registry (ECR) registries and Amazon Elastic Container Service (ECS) containers using the Mondoo AWS integration. + +**Solution:** You can now configure the Mondoo AWS integration to continuously scan your ECR and ECS infrastructure, providing security insight to your critical container infrastructure. + +![ECR & ECS Scanning](/img/releases/2023-02-14-mondoo-7.17-is-out/ecr_ecs.png) + +### New azure.subscription.aks.cluster resource + +**Problem:** You want to write policies to secure your Azure Kubernetes Service (AKS) clusters + +**Solution:** A new `azure.subscription.aks.cluster` resource allows you to explore and secure the settings in your Kubernetes control plane. + +To list all AKS clusters: + +```coffee +cnquery> azure.subscription.aks.clusters +azure.subscription.aks.clusters: [ + 0: azure.subscription.aksService.cluster name="aks-dev-cluster" location="westeurope" +] +``` + +To select particular fields for each cluster: + +```coffee +cnquery> azure.subscription.aks.clusters{name rbacEnabled kubernetesVersion powerState} +azure.subscription.aks.clusters: [ + 0: { + rbacEnabled: true + powerState: "Running" + kubernetesVersion: "1.24.9" + name: "aks-dev-cluster" + } +] +``` + +### Detect and secure PLCnext programmable logic controllers + +**Problem:** You need to secure Phoenix PLCnext programmable logic controllers to protect your physical infrastructure. + +**Solution:** cnspec and cnquery now detect Phoenix PLCnext PLCs, and we've introduced a new community [Phoenix PLCnext Security Policy](https://github.com/mondoohq/cnspec-policies/blob/main/community/mondoo-phoenix-plcnext-security.mql.yaml) that includes 22 security guidelines based on recommendations from PLCnext community. + +cnquery PLCnext platform output: + +```coffee +platform: { + name: "plcnext" + build: "d755854b5b21ecb8dca26b0a560e6842a0c638d7" + title: "PLCnext" + version: "23.0.0.65" +} +``` + +### New `aws.ssm` resource + +**Problem:** You want to write policies to secure your AWS Systems Manager (SSM) instances. + +**Solution:** A new `aws.ssm` resource allows you to explore and secure the settings in your AWS Systems Manager (SSM) infrastructure. + +To query SSM data using cnquery: + +```coffee +cnquery> aws.ssm.instances { * } +aws.ssm.instances: [ + 0: { + arn: "arn:aws:ssm:us-east-1:185972261234:instance/i-0f58c727dc7ca1337" + platformName: "Microsoft Windows Server 2022 Datacenter" + ipAddress: "172.1.89.50" + instanceId: "i-0f58c727dc7ca1337" + region: "us-west-2" + pingStatus: "Online" + tags: { + Name: "test-win" + } + } + 1: { + arn: "arn:aws:ssm:us-east-1:185972261234:instance/i-04680e19801302600" + platformName: "Amazon Linux" + ipAddress: "172.1.80.30" + instanceId: "i-04680e19801302600" + region: "us-west-2" + pingStatus: "Online" + tags: { + Name: "badssm" + } + } +... +``` + +Or write a query for a policy: + +```coffee +cnquery> aws.ssm.instances.all(pingStatus == "Online") +[ok] value: true +``` + +## 🧹 IMPROVEMENTS + +### Better integrations navigation menu + +We received tons of great feedback on the new navigation menu we released last week with Mondoo 7.16. Many of you asked for a simpler integrations menu that better represented the integrations in your spaces. This week we reworked the integrations menu to only show the integrations you've already set up and to always include a link to add new integrations. Thank you, everyone, for all the great feedback. + +![Integrations](/img/releases/2023-02-14-mondoo-7.17-is-out/integrations.png) + +### Input validation when setting up Azure and Microsoft 365 integrations + +Securing your cloud can be difficult, but Mondoo shouldn't be. We've added example text and input validation to the Azure and Microsoft 365 integration setup pages to ensure you set up integrations with the correct values. + +![Integration Validation](/img/releases/2023-02-14-mondoo-7.17-is-out/validation.png) + +### Immediately scan GCP, Azure, and Microsoft 365 after setup + +Our GCP, Azure, and Microsoft 365 integrations now start scanning your infrastructure after setup so you can see results in minutes. + +### Improved platform names and grouping for cloud & SaaS assets + +To make it easier to find your assets, we've renamed several platforms and added new groups in the fleet view. `azure`, `slack`, and `okta` assets are now `azure-subscription`, `slack-team`, and `okta-org` to better represent what they contain. The fleet view includes new Okta, Google Workspace, and Slack groups for filtering assets by SaaS service. + +![Fleet](/img/releases/2023-02-14-mondoo-7.17-is-out/fleet.png) + +### Show asset advisory counts in CVE views + +CVE pages now show information on the asset score for each affected asset as well as the total number of advisories for each asset so you can better prioritize which assets to patch first. + +![CVE View](/img/releases/2023-02-14-mondoo-7.17-is-out/cve.png) + +### Deploy cnspec with Chef Infra + +The [mondoo cookbook 0.5.0](https://supermarket.chef.io/cookbooks/mondoo/versions/0.5.0) is now available on [Chef Supermarket](https://supermarket.chef.io/). This updated release now configures systems to use the cnspec service. If your system was configured with the existing cookbook release, don't worry; this release will automatically update systems from the `mondoo` service to the `cnspec` service. + +### Improve Google Workspace command + +`googleworkspace` is a tricky one to read so we renamed the Google Workspace provider to `google-workspace`. Now you can scan Google Workspace with the `cnspec scan google-workspace` command. Don't worry though; the old command still works to maintain backwards compatibility for automation. + +### Identify scratch containers + +cnspec now detects the platform and architecture of containers built from scratch. Many projects, including Kubernetes, use scratch-built containers. + +![Scratch container](/img/releases/2023-02-14-mondoo-7.17-is-out/scratch.png) + +## 🐛 BUG FIXES AND UPDATES + +- Allow showing asset utilization even if billing is not configured. +- Improve the reliability of CIS GCP Foundation benchmark results. +- Update help and errors for cnspec and cnquery Azure commands to make it more clear you can use both a .pfx and a .pem certificate file. +- Fix parsing of certificate data on Linux with `ports.listening` resource. +- Fix parsing of IPv6 data with the `ports.listening` resource. +- Fix discovery of Google Workspace assets. +- Fix a remediation step typo in the AWS Security by Mondoo policy. +- Add a tooltip to the `Get Support` link in the navigation menu. +- Fix links to ChatOps integrations in the navigation menu. +- Fix errors running some Google Workspace resources. +- Improve help for GitHub resources. +- Improve the error message when Okta API requests fail. +- Fix a cnspec panic when using the `-o output` reporter when all results produce an error. +- Show errors when scanning systems with cnspec. +- Show asset names with cnspec when using the `-o report` reporter. diff --git a/releases/2023-02-21-mondoo-7.18-is-out.md b/releases/2023-02-21-mondoo-7.18-is-out.md new file mode 100644 index 000000000..d3681b6b8 --- /dev/null +++ b/releases/2023-02-21-mondoo-7.18-is-out.md @@ -0,0 +1,108 @@ +--- +slug: mondoo-7.18-is-out/ +title: Mondoo 7.18 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 7.18 is out! This release includes updated GCP resources, expanded EOL detection, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🧹 IMPROVEMENTS + +### GCP resource updates + +We've continued to expand the data you can query using MQL in your GCP projects to make asset inventory and security easier: + +- Add new `gcp.project.compute.addresses` resource + + ```coffee + gcp.project.compute.addresses[0]: { + ipv6EndpointType: "" + created: 2022-12-15 12:45:25.62 -0800 -0800 + address: "10.10.0.2" + network: data is not a map to auto-expand + networkTier: "PREMIUM" + id: "2700460578865297802" + userUrls: [ + 0: "https://www.googleapis.com/compute/v1/projects/mondoo-edge/regions/us-central1/forwardingRules/gke-mondoo-gke-cluster-2-c255f8bc-73b71c8f-pe" + ] + ipVersion: "" + name: "gke-mondoo-gke-cluster-2-c255f8bc-73b71c8f-pe" + status: "IN_USE" + subnetworkUrl: "https://www.googleapis.com/compute/v1/projects/mondoo-edge/regions/us-central1/subnetworks/mondoo-gke-cluster-2-subnet" + prefixLength: 0 + networkUrl: "" + regionUrl: "https://www.googleapis.com/compute/v1/projects/mondoo-edge/regions/us-central1" + addressType: "INTERNAL" + purpose: "GCE_ENDPOINT" + description: "" + subnetwork: gcp.project.computeService.subnetwork name="mondoo-gke-cluster-2-subnet" + } + ``` + +- Add new `gcp.project.compute.forwardingRules` resource + + ```coffee + gcp.project.compute.forwardingRules: [ + 0: { + description: "" + ipProtocol: "TCP" + serviceDirectoryRegistrations: [] + id: "1374403102344" + labels: {} + name: "front-lb-1-test" + serviceName: "" + network: gcp.project.computeService.network name="test-vpc-3" + networkUrl: "https://www.googleapis.com/compute/v1/projects/manuel-development-2/global/networks/test-vpc-3" + allPorts: false + targetUrl: "https://www.googleapis.com/compute/v1/projects/manuel-development-2/regions/us-central1/targetHttpProxies/lb-1-test-target-proxy" + ipAddress: "35.209.226.183" + allowGlobalAccess: false + networkTier: "STANDARD" + backendService: "" + isMirroringCollector: false + subnetwork: data is not a map to auto-expand + noAutomateDnsZone: false + serviceLabel: "" + ports: [] + loadBalancingScheme: "EXTERNAL_MANAGED" + ipVersion: "" + created: 2023-01-19 10:56:30.873 -0800 -0800 + metadataFilters: [] + regionUrl: "https://www.googleapis.com/compute/v1/projects/manuel-development-2/regions/us-central1" + portRange: "80-80" + subnetworkUrl: "" + } + ] + ``` + +- `gcp.project.dataproc.clusters` data is now only gathered if if the DataProc Cloud service is enabled in the project. +- Improve reliability of parsing GCP alert policies conditions. + +### New and improved EOL detection + +We've improved support for detecting end of life (EOL) platforms with new and updates EOL detection support: + +- Added EOL detection support for FreeBSD. +- Added EOL detection support for Linux Mint. +- Added EOL date for Alpine 3.17. +- Added EOL date for Fedora 36 and 37. +- Updated Debian EOL dates to use the end of LTS dates. +- Updated Photon 2.0 EOL date for the revised date of Dec 31, 2022. +- Updated Amazon 2022 EOL date for the revised date of Nov 1, 2027. + +### Support storing Okta token in `OKTA_CLIENT_TOKEN` env var + +If you don't want to pass your Okta token on the CLI with the `--token` flag, cnquery and cnspec now support fetching the token from the `OKTA_CLIENT_TOKEN` env var in your shell. + +## 🐛 BUG FIXES AND UPDATES + +- Improve consistency of the icons in each integrations page and ensure they are all using the latest vendor logos. +- Allow opening assets in the fleet view in new windows. +- Don't show advisories with 0 impacted assets on the space overview page if there are no advisories for any assets in the space. diff --git a/releases/2023-03-08-mondoo-8.0-is-out.md b/releases/2023-03-08-mondoo-8.0-is-out.md new file mode 100644 index 000000000..48d3f7ea5 --- /dev/null +++ b/releases/2023-03-08-mondoo-8.0-is-out.md @@ -0,0 +1,666 @@ +--- +slug: mondoo-8.0-is-out/ +title: Mondoo 8.0 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.0 is out! This release includes a whole new policy experience, new SaaS integrations, and much more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +We are excited to announce Mondoo v8, the new major release of cnspec, cnquery, and Mondoo Platform. + +## 🚀 NEW POLICY EXPERIENCE + +This release significantly improves policies and query packs by simplifying their structure and adding major new features like properties, variants, and embedded queries. We continue to keep the Mondoo upgrade process incredibly simple, so you don’t have to worry about moving to v8. + +### Policies and query packs + +**Problem:** Some of our old fields were confusing to use. For example: `query` defined the MQL query inside of the query with metadata. (Why use it twice?) The `scoring_queries` and `data_queries` inside policies were unnecessarily convoluted. And what were `specs`? + +```yaml +policies + - specs: + - scoring_queries: + sshd-01: + - data_queries: + sshd-02: +queries: + - uid: sshd-01: + query: sshd.config.params["StrictModes"] == "yes" + - uid: sshd-02: + query: sshd.config.params +``` + +**Solution:** We have overhauled a lot of commonly used terms in policies and query packs. Queries now contain an `mql` field to store the MQL snippet. Policies are now built around `groups` that can generate chapters and contain `checks` (which are scored) and `queries` (which are not scored). Additionally, we have removed all instances of key-value maps (see `sshd-01:` above) and replaced them with named fields (see `- uid: sshd-01` below). + +```yaml +policies: + - groups: + - checks: + - uid: sshd-01 + - queries: + - uid: sshd-02 +queries: + - uid: sshd-01 + mql: sshd.config.params["StrictModes"] == "yes" + - uid: sshd-02 + mql: sshd.config.params +``` + +**Problem:** The old YAML files we used in cnspec and cnquery required users to create references for queries and checks to use them. This forced people to write policies and separately reference all queries they wanted to use. See the example above. + +**Solution:** We have introduced embedded queries. It’s now much easier to write policies that stand on their own. You don’t have to explicitly reference queries and checks anymore. Instead, you can embed queries and checks directly into the policy that describes them. + +```yaml +policies: + - groups: + - checks: # embedded query vv + - uid: sshd-01 + mql: sshd.config.params["StrictModes"] == "yes" + - queries: + - uid: sshd-02 + mql: sshd.config.params +``` + +If you want to re-use queries, you can continue to use them globally as well, as seen above. If you prefer not to set a `uid` for any of these embedded queries and checks, cnspec generates one for you: Just run `cnspec bundle format FILENAME`. Stable UIDs (and, in turn, MRNs) are still important for anyone who uses your policy and defines overrides, exceptions, or processes policy results. + +**Problem:** The ability to override queries and checks was very limiting. You could only affect a limited number of fields and had to understand how these were referenced. (We will skip the example to avoid even more confusion.) + +**Solution:** Making changes to individual queries is now simple and intuitive. For example, here is a globally shared query that is modified in a policy: + +```yaml +policies: + - groups: + - checks: + # reference the shared query and change its title and impact + - uid: sshd-01 + title: Make sure to enforce StrictMode + impact: 80 + +queries: + - uid: sshd-01 + mql: sshd.config.params["StrictModes"] == "yes" + impact: 50 +``` + +**Problem:** Policies containing a lot of queries flooded users with an unstructured list of all of their contents. However, most policy documents aren’t written this way. Instead, they contain chapters and sections that group together checks and controls. + +**Solution:** Policy groups now have a `type` to specify their function. For example, the most common type in a policy is a `chapter`: + +```yaml +policies: + - uid: policy1 + groups: + - type: chapter + title: Kernel checks + docs: + desc: | + Long description about what kernel checks do... + checks: + - uid: kernel-check-01 + ... +``` + +Other types include `import` (for referencing imported policies) and `override` (for making changes to any policies, queries, and checks). + +### Properties + +Properties are a way to make adjustments to existing queries in pre-defined ways. For example, you can change the list of allowed TLS ciphers to include ciphers you need or you can change the location of files that are tested. + +Properties existed before v8, but weren’t exposed to users. With this release we make properties configurable in the CLI, with configuration in the UI to follow in the coming weeks. + +**Configuration** + +Policy authors can add properties to their queries in YAML using `props`: + +```yaml +- uid: home-info + mql: file(props.home) { * } + title: Gather info about the user's home + props: + - uid: home + mql: | + "/home" +``` + +The `uid` is required. It provides the name for accessing properties in MQL. These follow standards for identifiers (such as no spaces or control characters allowed). + +**CLI usage** + +By default, the query uses the configured property. If you want to adjust it, such as for the above example, you can use the `--props` CLI argument: + +```bash +cnspec scan -f examples/example.mql.yaml --props "home='/home/zero'" +``` + +Note: This example overwrites a string property. Doing this properly requires escaping the CLI arguments so they retain the quotation (`’`) characters in MQL. Properties can be any MQL snippet, but must adhere to the expected type. For example: You can't overwrite a string property into a number. + +### Deprecations + +All deprecations will be supported throughout the lifetime of Mondoo v8. We will remove them when we release Mondoo v9. + +- With the new policy format established in this release, we are deprecating the old policy format. If you only use existing policies created and maintained by Mondoo, you don’t need to take any action. We are serving both v7 and v8 clients and will keep things compatible. +- If you have written your own policies, these will automatically work with v7 and v8 clients after you upload them to the Policy Hub. To take advantage of the many simplifications and features we have added, we encourage you to convert your policies to v8 with this simple command: + + ```bash + cnspec bundle format FILE + ``` + + The formatter in cnspec always store files in the latest format. + +- All public policies in our [community repo](https://github.com/mondoohq/cnspec-policies) will remain in the v7 format for a little longer. This is to support users who are still using v7 and manually downloading policy files. We will transition these policies throughout the v8 lifespan to allow some new capabilities, like configurable properties, context, and variants. + +## 🎉 OTHER NEW FEATURES + +### Continuous scanning of Google Workspace and Okta + +You can now continuously scan your Google Workspace and Okta SaaS environments directly from the Mondoo console. There's nothing to download or install in order to get started. Set up integrations with service accounts or tokens for these SaaS services, and they will securely scan every 8 hours. + +![New Integrations](/img/releases/2023-03-08-mondoo-8.0-is-out/integrations.png) + +### Scan GCP orgs, projects, and folders + +No matter what you want to inspect in your GCP infrastructure, Mondoo has your back with new scanning support from your whole organization—down to a single folder: + +```bash +cnquery scan gcp org 342423 # <-- scan GCP organization +cnquery scan gcp project mondoo-dev # <-- scan GCP project +cnquery scan gcp folder 3421423 # <-- scan GCP folder +``` + +### Secure your GKE control plane + +There's more to Cloud Kubernetes security than just the kubelet and cluster workloads, so we've added new data-gathering capabilities for the GKE control plan. Use this new data to take inventory of your GKE configuration or to write custom security policies for your organization. + +- [addonsConfig](#cluster-addonsconfig) +- [nodePools management](#cluster-nodepools-management) +- [Cluster networkConfig](#cluster-networkconfig) +- [Cluster workloadIdentityConfig](#cluster-workloadidentityconfig) +- [ipAllocationPolicy](#cluster-ipallocationpolicy) +- [binaryAuthorization](#cluster-binaryauthorization) +- [legacyAbac](#cluster-legacyabac) +- [masterAuth](#cluster-masterauth) + +#### Cluster addonsConfig + +```coffee +cnquery> gcp.project.gke.clusters{ addonsConfig{*} } +gcp.project.gke.clusters: [ + 0: { + addonsConfig: { + horizontalPodAutoscaling: { + disabled: false + } + id: "gcp.project.gkeService.cluster/12345/addonsConfig" + gkeBackupAgentConfig: {} + gcePersistentDiskCsiDriverConfig: { + enabled: true + } + networkPolicyConfig: { + disabled: false + } + gcpFilestoreCsiDriverConfig: { + enabled: false + } + dnsCacheConfig: { + enabled: false + } + httpLoadBalancing: { + disabled: false + } + kubernetesDashboard: { + disabled: true + } + configConnectorConfig: {} + cloudRunConfig: {} + } + } +] +``` + +#### Cluster nodePools management + +```coffee +cnquery> gcp.project.gke.clusters{ nodePools{ management } } +gcp.project.gke.clusters: [ + 0: { + nodePools: [ + 0: { + management: { + autoRepair: true + autoUpgrade: true + upgradeOptions: {} + } + } + 1: { + management: { + autoRepair: true + autoUpgrade: true + upgradeOptions: {} + } + } + ] + } +] +``` + +#### Cluster networkConfig + +```coffee +cnquery> gcp.project.gke.clusters{ networkConfig{*} } +gcp.project.gke.clusters: [ + 0: { + networkConfig: { + enableL4IlbSubsetting: false + id: "gcp.project.gkeService.cluster/12345/networkConfig" + dnsConfig: {} + serviceExternalIpsConfig: { + enabled: false + } + subnetworkPath: "projects/project-1/regions/us-central1/subnetworks/mondoo-gke-cluster-2-subnet" + privateIpv6GoogleAccess: "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED" + datapathProvider: "DATAPATH_PROVIDER_UNSPECIFIED" + networkPath: "projects/project-1/global/networks/mondoo-gke-cluster-2" + subnetwork: gcp.project.computeService.subnetwork name="mondoo-gke-cluster-2-subnet" + enableIntraNodeVisibility: false + defaultSnatStatus: { + disabled: false + } + network: gcp.project.computeService.network name="mondoo-gke-cluster-2" + } + } +] +``` + +#### Cluster workloadIdentityConfig + +```coffee +cnquery> gcp.project.gke.clusters{ workloadIdentityConfig } +gcp.project.gke.clusters: [ + 0: { + workloadIdentityConfig: { + workloadPool: "mondoo-edge.svc.id.goog" + } + } +] +``` + +#### Cluster ipAllocationPolicy + +```coffee +cnquery> gcp.project.gke.clusters{ ipAllocationPolicy{*} } +gcp.project.gke.clusters: [ + 0: { + ipAllocationPolicy: { + id: "gcp.project.gkeService.cluster/12345/ipAllocationPolicy" + stackType: "IPV4" + tpuIpv4CidrBlock: "" + useRoutes: false + createSubnetwork: false + nodeIpv4CidrBlock: "" + subnetworkName: "" + servicesSecondaryRangeName: "cluster-2-ip-range-svc" + useIpAliases: true + clusterSecondaryRangeName: "cluster-ip-range-pods" + clusterIpv4CidrBlock: "10.20.0.0/16" + ipv6AccessType: "IPV6_ACCESS_TYPE_UNSPECIFIED" + servicesIpv4CidrBlock: "10.30.0.0/16" + } + } +] +``` + +#### Cluster binaryAuthorization + +```coffee +cnquery> gcp.project.gke.clusters{ binaryAuthorization } +gcp.project.gke.clusters: [ + 0: { + binaryAuthorization: { + enabled: false + evaluationMode: "EVALUATION_MODE_UNSPECIFIED" + } + } +] +``` + +#### Cluster legacyAbac + +```coffee +cnquery> gcp.project.gke.clusters{ legacyAbac } +gcp.project.gke.clusters: [ + 0: { + legacyAbac: { + enabled: false + } + } +] +``` + +#### Cluster masterAuth + +```coffee +cnquery> gcp.project.gke.clusters{ masterAuth } +gcp.project.gke.clusters: [ + 0: { + masterAuth: { + clientCertificate: "" + clientCertificateConfig: {} + clientKey: "" + clusterCaCertificate: "***" + password: "" + username: "" + } + } +] +``` + +### Identify public IPs in Azure + +Identifying publicly exposed assets is critical to securing your cloud infrastructure. Use the new `publicIpAddresses` data available in the `azure.subscription.computeservice.vm` and `azure.subscription.networkservice` to quickly identify assets that may be incorrectly publicly exposed. + +Identify all public IP addresses in a subscription: + +```coffee +cnquery> azure.subscription.network.publicIpAddresses{*} +azure.subscription.network.publicIpAddresses: [ + 0: { + name: "super-cool-public-ip" + id: "/subscriptions//resourceGroups//providers/Microsoft.Network/publicIPAddresses/" + location: "uksouth" + tags: {} + ipAddress: "255.255.255.255" + } +] +``` + +Identify public IP addresses on specific VMs: + +```coffee +cnquery> azure.subscription.compute.vms{publicIpAddresses{*}} +azure.subscription.compute.vms: [ + 0: { + publicIpAddresses: [ + 0: { + name: "super-cool-public-ip" + id: "/subscriptions//resourceGroups//providers/Microsoft.Network/publicIPAddresses/" + location: "uksouth" + tags: {} + ipAddress: "255.255.255.255" + } + ] + name: "vm-name" + } +] +``` + +### Query Google Workspace connected apps + +You can now fetch Google Workspace connected apps with a new `googleworkspace.connectedApps` MQL resource: + +```coffee +googleworkspace.connectedApps { name clientid } +googleworkspace.connectedApps: [ + 0: { + clientId: "11234434534-abcdefg.apps.googleusercontent.com" + name: "Slack" + } + ... +] +``` + +You can also filter this data to return specific connected apps: + +```coffee +googleworkspace.connectedApps.where( name == /Slack/) { * } +googleworkspace.connectedApps.where: [ + 0: { + users: [ + 0: googleworkspace.user primaryEmail="user1@example.com" + ] + tokens: [ + 0: googleworkspace.token displayText="Slack" + ] + scopes: [ + 0: "https://www.googleapis.com/auth/activity" + 1: "https://www.googleapis.com/auth/drive.activity" + 2: "https://www.googleapis.com/auth/userinfo.profile" + 3: "https://www.googleapis.com/auth/userinfo.email" + 4: "openid" + 5: "https://www.googleapis.com/auth/calendar.readonly" + 6: "https://www.googleapis.com/auth/drive" + 7: "https://www.googleapis.com/auth/calendar.events" + ] + name: "Slack" + clientId: "11234434534-abcdefg.apps.googleusercontent.com" + } + 1: { + users: [ + 0: googleworkspace.user primaryEmail="user1@example.com" + 1: googleworkspace.user primaryEmail="user2@example.com" + 2: googleworkspace.user primaryEmail="user3@example.com" + 3: googleworkspace.user primaryEmail="user4@example.com" + ] + tokens: [ + 0: googleworkspace.token displayText="Slack" + 1: googleworkspace.token displayText="Slack" + 2: googleworkspace.token displayText="Slack" + 3: googleworkspace.token displayText="Slack" + ] + scopes: [ + 0: "https://www.googleapis.com/auth/userinfo.profile" + 1: "https://www.googleapis.com/auth/userinfo.email" + 2: "openid" + ] + name: "Slack" + clientId: "3321342421-abcdefg.apps.googleusercontent.com" + } + 2: { + users: [ + 0: googleworkspace.user primaryEmail="user1@example.com" + 1: googleworkspace.user primaryEmail="user2@example.com" + 2: googleworkspace.user primaryEmail="user3@example.com" + 3: googleworkspace.user primaryEmail="user4@example.com" + ] + tokens: [ + 0: googleworkspace.token displayText="Slack" + 1: googleworkspace.token displayText="Slack" + 2: googleworkspace.token displayText="Slack" + 3: googleworkspace.token displayText="Slack" + ] + scopes: [ + 0: "https://www.googleapis.com/auth/userinfo.profile" + 1: "https://www.googleapis.com/auth/userinfo.email" + 2: "openid" + ] + name: "Slack" + clientId: "6060606090-abcdefg.apps.googleusercontent.com" + } +] +``` + +### Python packages inspection + +Outdated packages don't end at the operating system, so we've introduced our first application package resource with the `python.packages` MQL resource. This new resource discovers packages automatically on macOS, Windows, and Linux in the following locations: + +- /usr/local/lib/python/\* +- /usr/local/lib64/python/\* +- /usr/lib/python/\* +- /usr/lib64/python/\* +- /opt/homebrew/lib/python/\* +- C:/Python/\* +- /System/Library/Frameworks/Python.framework/Versions +- /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions + +Each package returns data similar to this `pytz` package: + +```coffee +cnquery> python.packages[0]{ * } +python.packages[0]: { + author: "Armin Ronacher" + name: "Babel" + dependencies: [ + 0: python.package name="pytz" version="2022.7.1" + ] + summary: "Internationalization utilities" + id: "/usr/lib/python3.11/site-packages/Babel-2.10.3-py3.11.egg-info/PKG-INFO" + file: file path="/usr/lib/python3.11/site-packages/Babel-2.10.3-py3.11.egg-info/PKG-INFO" size=1283 permissions.string="-rw-r--r--" + license: "BSD" + version: "2.10.3" +} +``` + +To query a specific package on disk you can provide the path to the METADATA file: + +```coffee +cnquery> python.package("/home/jdiaz/.local/lib/python3.11/site-packages/python_ftp_server-1.3.17.dist-info/METADATA"){ * } +python.package: { + version: "1.3.17" + summary: "Command line FTP server tool designed for performance and ease of use." + file: file path="/home/jdiaz/.local/lib/python3.11/site-packages/python_ftp_server-1.3.17.dist-info/METADATA" size=1186 permissions.string="-rw-r--r--" + author: "Vadym Stupakov" + dependencies: data is not a map to auto-expand + id: "/home/jdiaz/.local/lib/python3.11/site-packages/python_ftp_server-1.3.17.dist-info/METADATA" + license: "MIT" + name: "python-ftp-server" +} +``` + +This is the first of many new application package resources we plan to introduce, allowing you to audit and secure your application dependencies. If you have particular application packaging systems you want to see in cnquery and cnspec, be sure to let us know on our [GitHub Discussions page](https://github.com/orgs/mondoohq/discussions). + +## 🧹 IMPROVEMENTS + +### Support for connecting to IPv6 hosts + +Some day we'll all take the leap and migrate to IPv6. When you do, Mondoo will be there for you. We've updated both cnquery and cnspec to connect to IPv6 hosts directly over SSH or using Ansible inventory files. + +``` +cnquery shell ssh chris@fd00::20c:30ff:fe8a:9da0 --ask-pass +Enter password: +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 + ___ _ __ __ _ _ _ ___ _ __ _ _ + / __| '_ \ / _` | | | |/ _ \ '__| | | | +| (__| | | | (_| | |_| | __/ | | |_| | + \___|_| |_|\__, |\__,_|\___|_| \__, | + mondoo™ |_| |___/ interactive shell + +cnquery> +``` + +### Expanded support for AWS ECS in MQL + +In this release we've greatly expanded MQL's AWS ECS support with new data and resources: + +- `aws.ecs.task` now includes `platformVersion` data. +- `aws.ecs.container` now includes `platformVersion`, `runtimeId`, and `containerName` data. +- `aws.ecs.cluster` now includes `containerInstances` data. +- `aws.ecs.image` now includes `uri` data exposing the URI of the image repository. +- New `aws.ecs.instance` resource. + +### New and improved policies + +- **New** Microsoft 365 Security by Mondoo + + This all-new policy by Mondoo helps you to secure your Microsoft 365 configuration. + +- **New** Microsoft Vulnerability Policy by Mondoo + + This all-new policy helps you find critical vulnerabilities in Microsoft Office and SharePoint. + +- **New** VMware vCenter Incident Response Pack + + Gather critical information on your vSphere and ESXi systems in the event of a security incident with this new incident response pack. + +- **Updated** CIS Microsoft 365 Foundations Benchmark from 1.2 to 1.5 + + This updated policy is nearly entirely rewritten with dozens of new controls, more reliable queries, and updated remediation steps. + +- **Updated** CIS Google Kubernetes Engine (GKE) Benchmark to 1.3.0 + + This updated policy includes new policies for securing not just the Kubelets, but now also the Kubernetes control plane. + +- **Updated** CIS Google Cloud Platform Foundation Benchmark policy + + Ten updated controls in the CIS Google Cloud Platform Foundation Benchmark policy improve the reliability of results. + +- **Updated** Microsoft Azure Security + + We added nine new queries to the Microsoft Azure Security to help you better secure the base directory configuration. + +- **Updated** Linux Workstation Security + + We expanded boot loader security to include permissions on `/boot/loader/loader.conf` so you can rest assured your boot sequence hasn't been tampered with. + +- **Updated** Linux Security Policy + + We improved the reliability of auditd package checks on some SUSE releases. + +### Specify GCP and Google Workspace credential path + +You can now specify the path to your GCP or Google Workspace credentials using a new `--credentials-path` flag. Shell environmental variables will continue to take precedence when defining the path, but this is a great method of setting the path if you don't have shell ENV vars set. + +With env var: + +```bash +GOOGLE_APPLICATION_CREDENTIALS=~/mondoo-dev-1111111.json cnquery shell gcp +``` + +With --credentials-path: + +```bash +cnquery shell gcp --credentials-path ~/mondoo-dev-1111111.json +``` + +### Find spaces more easily in large organizations + +It was hard to find a particular asset when you had a large number of organizations or spaces. We've made things easier to track down with new links to open individual organizations and alphabetical sorting of all spaces. + +![New Sorting of Spaces](/img/releases/2023-03-08-mondoo-8.0-is-out/sorted_spaces.png) + +### Login with a splash + +Our old login page didn't feel fancy enough, so we redesigned it with splashes of Mondoo purple and orange to spruce up your login experience. + +![New Login Screen](/img/releases/2023-03-08-mondoo-8.0-is-out/new_login.png) + +### Red Hat Universal Base Image cnspec containers on Docker Hub + +We are now publishing Red Hat Universal Base Image-based cnspec and cnquery containers to Docker Hub. These containers are perfect for running cnspec and cnquery in OpenShift clusters. You can find these images along with our standard Alpine-based images in our [cnspec](https://hub.docker.com/r/mondoo/cnspec) and [cnquery](https://hub.docker.com/r/mondoo/cnquery) repositories. + +### Improved scan error output + +Gone are cryptic asset connection error messages when scanning multiple assets! In their place you now see better formatted and parsed error messages that make it easier to track down exactly why assets can't be scanned. + +![Better error output](/img/releases/2023-03-08-mondoo-8.0-is-out/better_errors.png) + +## 🐛 BUG FIXES AND UPDATES + +- We now correctly detect services on Kali Linux. +- Mondoo EOL policy now executes on FreeBSD hosts. +- `cnquery run` and `cnspec run` now properly load Mondoo Platform config to support EOL and package vulnerability queries. +- Fix parsing of timestamps in Google Workspace. +- Fix setup instructions for Windows on the Integrations page to copy/paste correctly. +- Add missing breadcrumbs to the Vulnerabilities page. +- Add form validation to the GCP and Okta Integration setup pages. +- Don't report successful vulnerability scanning on an asset when zero packages were discovered. +- Fix incorrect quoting in the GitLab Docker scanning example +- Don't show the hour when reporting an EOL date for an asset. +- Fix incorrect GCP project ID validation in the GCP integration setup page. +- If an integration has never scanned, then display `Never` instead of `Jan 01, 0001`. +- Update links on integration pages to go to specific documentation. +- Use the latest Microsoft 365 logo on the integrations page. +- Improve performance of container image scanning in the Mondoo Kubernetes Operator. +- Update tabs on asset pages to match the new navigation UX. +- Add the missing Okta token field to the Okta integration setup page. +- Link to new CloudShell documentation in the AWS integration setup wizard. +- Fix GCP console links in the GCP integration setup page to load properly when logged out of GCP. +- Specify UDP or TCP in the `ports.listening` resource so specific protocols can be queried instead of just `ipv4`/`ipv6`. +- Resolve failures scanning container registries. +- Label container image assets with all discovered tags when scanning container registries. diff --git a/releases/2023-03-14-mondoo-8.1-is-out.md b/releases/2023-03-14-mondoo-8.1-is-out.md new file mode 100644 index 000000000..ffc65b1e6 --- /dev/null +++ b/releases/2023-03-14-mondoo-8.1-is-out.md @@ -0,0 +1,181 @@ +--- +slug: mondoo-8.1-is-out/ +title: Mondoo 8.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.1 is out! This release includes policy variants, new security policies, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Policy variants + +Sometimes queries differ slightly when executed in different environments. This can happen with: + +- Highly related queries, like OS checks that run differently on physical servers than they do on containers + +- Queries that test for similar things on entirely different targets + +Let's take a look at the latter example: + +```yaml +queries: + - uid: no-public-ip + title: No public IPs are allowed on internal instances + variants: + - uid: no-public-ip-aws + - uid: no-public-ip-terraform-aws + - uid: no-public-ip-aws + mql: | + aws.ec2.instances.all( publicIp == "" ) + filters: | + asset.platform == "aws" + - uid: no-public-ip-terraform-aws + mql: | + terraform.resources. + where( nameLabel == "aws_instance" ). + all( arguments['associate_public_ip_address'] != true ) + filters: | + asset.platform == "terraform-hcl" +``` + +This query ensures that “No public IPs are allowed on internal instances.” This query is implemented in two different ways: one for the AWS API (`no-public-ip-aws`) and one for Terraform (`no-public-ip-terraform-aws`). You can run this check against both AWS accounts and Terraform files and get consistent reporting. + +Additionally, this addresses a common use case where there's a split between things that happen in development and things that run in production. If you have separate tools in different environments, or even separate policies, you previously had to manage exceptions to certain checks across both ends of the lifecycle. Now with variants, you can instead define exceptions on the combined check, making sure that they are treated consistently between development and production. + +### New Okta Security policy + MQL enhancements + +Last week we shipped continuous Okta scanning integration in the Mondoo Console. This week we have a new Mondoo security policy and improvements to Okta MQL resources so you can secure your Okta environment in just minutes. + +Our new Okta Security Policy by Mondoo includes 11 checks to keep your Okta environment secure out of the box: + +- Ensure MFA is active for everybody accessing Okta platform +- Ensure a limited session lifetime has been enforced +- Ensure OpenID or SAML authentication is used for app access +- Ensure normal users cannot unlock themselves +- Ensure Secure Web Authentication (SWA) is disabled for critical apps +- Ensure the option "at every sign-in" is enabled for MFA +- Ensure "Persist session cookies across browser sessions" is disabled +- Ensure the users with Super Admin rights are limited to 3 +- Ensure the strong factor is used for MFA +- Ensure that MFA is configured to use password/IdP plus another authentication factor +- Ensure the "Password/IdP plus Another" factor is chosen for MFA + +If you want to define your own business policies for Okta, you're in luck. We've improved our Okta MQL policies, giving your access to more information on your environment: + +- Gather `okta.role` and `user.roles`, allowing you to query which roles are assigned to a user +- Gather access policy rules +- Fix `okta.trustedOrigin.scopes` parsing + +### New Microsoft Workstation Security policy + +Our all-new Microsoft Workstation Security policy provides security guidance for workstations running Windows 10 and 11. + +![New Windows Workstation Policy](/img/releases/2023-03-14-mondoo-8.1-is-out/windows_workstation_policy.png) + +### New and updated Kubernetes policies + +Kubernetes moves fast, so ensuring your security policy matches the latest and greatest security recommendations is essential. Mondoo now includes the latest CIS benchmarks for Kubernetes distributions with updated auditing and remediation steps as well as new checks for the control plane in cloud distributions: + +- **New**: CIS Kubernetes V1.24 Benchmark 1.0 +- **Updated:** CIS Amazon Elastic Kubernetes Service (EKS) Benchmark 1.2 +- **Updated:** CIS Google Kubernetes Engine (GKE) Benchmark 1.3 +- **Updated:** CIS Azure Kubernetes Service (AKS) Benchmark 1.2 +- **Updated:** CIS Red Hat OpenShift Container Platform v4 Benchmark 1.1 + +## 🧹 IMPROVEMENTS + +### Smaller installation size + +The Mondoo package has been optimized to reduce the space on disk consumed by Mondoo, cnquery, and cnspec commands. The legacy Mondoo CLI is now 200MB smaller on all platforms. Additionally, the cnquery and cnspec CLIs are each ~150MB smaller on Windows systems. + +### More AWS ElasticCache data in MQL + +We've deprecated `aws.elasticache.clusters` in favor of a new `aws.elasticache.cacheClusters` resource that presents cluster data in an easier to consume format. + +```coffee +cnquery> aws.elasticache.cacheClusters { * } +aws.elasticache.cacheClusters: [ + 0: { + arn: "arn:aws:elasticache:us-east-1:ID:cluster:vjtest-001" + notificationConfiguration: "" + cacheSubnetGroupName: "vjtest" + atRestEncryptionEnabled: false + logDeliveryConfigurations: [] + ipDiscovery: "ipv4" + authTokenLastModifiedDate: null + numCacheNodes: 1 + engine: "redis" + networkType: "ipv4" + region: "us-east-1" + securityGroups: [] + transitEncryptionMode: "" + cacheNodeType: "cache.t3.medium" + engineVersion: "7.0.7" + preferredAvailabilityZone: "us-east-1c" + transitEncryptionEnabled: false + cacheClusterId: "vjtest-001" + authTokenEnabled: false + snapshotRetentionLimit: 0 +``` + +### Expanded Azure Security policy + +We've updated the Microsoft Azure Security by Mondoo policy with seven new checks to keep your Azure environment secure out of the box: + +- Ensure that App services can authenticate with Active Directory +- Ensure that Web App takes advantage of latest version of TLS encryption +- Ensure that the expiration date is set for all keys and secrets in key vaults +- Ensure it is possible to recover key vaults +- Ensure all operations on key vault are logged +- Ensure that activity log alerts exist for the commands Create, Update, and Delete Network Security Group +- Ensure that "Notify about alerts with high severity" is enabled + +### Expanded Google Workspace policy + +We've updated our Google Workspace Security by Mondoo policy with three new checks: + +- Ensure more than one user has Super Admin permissions +- Users should not be allowed less secure app access +- Super users should use hardware-based security keys + +### Remove v7 deprecations + +Now that v8 is out, we've cleaned up several old flags and options that were deprecated during v7. + +#### Deprecated GCP flags + +We removed the deprecated cnspec and cnquery flags for GCP `--project` and `--organization`. We also marked the `--project-id` and `--organization-id` flags as deprecated. Use `cnspec scan gcp organization MY_ORG` or `cnspec scan gcp project MY_PROJECT` instead. + +#### Deprecated K8s flag + +We removed the deprecated cnspec and cnquery Kubernetes `--namespace` flag. Use `--namespaces` instead. + +#### Deprecated Azure/Microsoft 365 inventory options + +We removed the deprecated `tenantId`, `clientId`, and `subscriptionId` Azure/Microsoft 365 inventory file configuration options. Use `tenant-id`, `client-id`, and `subscription-id` instead. + +#### Deprecated `azure.subscription.sqlService.database` fields + +We removed the deprecated `containmentState`, `currentServiceObjectiveId`, `requestedServiceObjectiveId`, and `serviceTierAdvisors` fields from the `azure.subscription.sqlService.database` resource. + +## 🐛 BUG FIXES AND UPDATES + +- Don't fail an entire AWS account scan when a single service has a region restriction set. +- Fail better when a Kubernetes namespace cannot be scanned due to permissions failures. +- Fix `cnspec bundle format` failure introduced in 8.0. +- Update the scanning progress bar to make it more clear when an asset was not scored. +- Fix console login page text field text color to be black. +- Fix console login page links to user agreement and privacy policy to load in new windows. +- Don't display `0 Others` for Azure assets in the fleet page. +- Fix off-center spinner loaders on the integration pages. +- Rename "Latest Advisories" on the overview page to be "Top Advisories" to better match what the widget shows. +- Show accurate billing plan data in the console. +- Improve rendering on the welcome page on small displays. diff --git a/releases/2023-03-21-mondoo-8.2-is-out.md b/releases/2023-03-21-mondoo-8.2-is-out.md new file mode 100644 index 000000000..230b8e04f --- /dev/null +++ b/releases/2023-03-21-mondoo-8.2-is-out.md @@ -0,0 +1,166 @@ +--- +slug: mondoo-8.2-is-out/ +title: Mondoo 8.2 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.2 is out! This release includes GCP BigQuery exports, new Azure resources, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Google BigQuery data exports + +Love your security data, but need to analyze it more deeply? Now you can automatically export your Mondoo data directly to Google BigQuery. + +Exports are configured just like other integrations in Mondoo, and run daily without the need to install anything into your infrastructure. + +![BigQuery Setup](/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_setup.png) + +Once the data is exported it can be combined with other data in BigQuery and analyzed with BigQuery's machine learning and BI features. + +![BigQuery Data](/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_data.png) + +### New Azure resources + +cnspec and cnquery now ship with additional Azure resources so you can inventory and secure all aspects of your Azure infrastructure: + +#### azure.subscription.monitor.applicationinsights + +This new Azure resource lets you query each instance of Application Insights: + +```coffee +cnquery> azure.subscription.monitor.applicationInsights +azure.subscription.monitor.applicationInsights: [ + 0: azure.subscription.monitorService.applicationinsight id = /subscriptions/f1a2873a-6b27-4097-aa7c-3df51f103e96/resourceGroups/cloud-shell-storage-westeurope/providers/microsoft.insights/components/app-insight-test +] +cnquery> azure.subscription.monitor.applicationInsights {name kind location} +azure.subscription.monitor.applicationInsights: [ + 0: { + name: "app-insight-test" + location: "centralus" + kind: "web" + } +] +``` + +#### azure.subscription.network.bastionHost + +This new Azure resource lets you query all bastion hosts, including their names, locations, and product SKUs: + +```coffee +cnquery> azure.subscription.network.bastionHosts +azure.subscription.network.bastionHosts: [ + 0: azure.subscription.networkService.bastionHost id="/subscriptions/f1a2873a-6b27-4097-aa7c-3df51f103e96/resourceGroups/cloud-shell-storage-westeurope/providers/Microsoft.Network/bastionHosts/test-bastion-host" name="test-bastion-host" location="uksouth" +] +cnquery> azure.subscription.network.bastionHosts{name location sku} +azure.subscription.network.bastionHosts: [ + 0: { + name: "test-bastion-host" + sku: { + name: "Standard" + } + location: "uksouth" + } +] +``` + +#### azure.subscription.sql.virtualNetworkRule + +This new Azure resource lets you query the virtual network rules on an SQL server and is similar to firewall rules resources: + +```coffee +cnquery> azure.sql.servers[1].virtualNetworkRules{*} +azure.sql.servers[1].virtualNetworkRules: [ + 0: { + id: "/subscriptions/f1a2873a-6b27-4097-aa7c-3df51f103e96/resourceGroups/cloud-shell-storage-westeurope/providers/Microsoft.Sql/servers/sql-server-mondoo-test/virtualNetworkRules/newVnetRule1" + properties: { + id: "/subscriptions/f1a2873a-6b27-4097-aa7c-3df51f103e96/resourceGroups/cloud-shell-storage-westeurope/providers/Microsoft.Sql/servers/sql-server-mondoo-test/virtualNetworkRules/newVnetRule1" + name: "newVnetRule1" + properties: { + ignoreMissingVnetServiceEndpoint: false + state: "Ready" + virtualNetworkSubnetId: "/subscriptions/f1a2873a-6b27-4097-aa7c-3df51f103e96/resourceGroups/DefaultResourceGroup-CUS/providers/Microsoft.Network/virtualNetworks/prelav-test-VN/subnets/default" + } + type: "Microsoft.Sql/servers/virtualNetworkRules" + } + virtualNetworkSubnetId: "/subscriptions/f1a2873a-6b27-4097-aa7c-3df51f103e96/resourceGroups/DefaultResourceGroup-CUS/providers/Microsoft.Network/virtualNetworks/prelav-test-VN/subnets/default" + type: "Microsoft.Sql/servers/virtualNetworkRules" + name: "newVnetRule1" + } +] +``` + +#### azure.subscription.cosmosdb + +This new Azure resource lets you query the Azure Cosmos DB service. + +Query databases: + +```coffee +cnquery> azure.subscription.cosmosDb.accounts +azure.subscription.cosmosDb.accounts: [ + 0: azure.subscription.cosmosdbService.account name="test-cosmosdb-mondoo" location="West US" + 1: azure.subscription.cosmosdbService.account name="test-mondoo-cassandra" location="West US" +] +``` + +Write assertions to secure configuration: + +```coffee +cnquery> azure.cosmosDb.accounts{properties['isVirtualNetworkFilterEnabled'] name} +azure.cosmosDb.accounts: [ + 0: { + properties[isVirtualNetworkFilterEnabled]: true + name: "test-cosmosdb-mondoo" + } + 1: { + properties[isVirtualNetworkFilterEnabled]: true + name: "test-mondoo-cassandra" + } +] +``` + +## 🧹 IMPROVEMENTS + +### Kubernetes namespace scoped scanning + +You can now scan a single namespace in a Kubernetes cluster even if you don't have access to resources outside that namespace. This allows you to scan all workloads in your namespace and browse asset relationships under the namespace in the Mondoo Console. + +Example cnquery query against a single namespace: + +```shell +./cnquery run k8s --namespaces default -c "k8s.pods" --discover namespaces +→ loaded configuration from /Users/ivanmilchev/.config/mondoo/mondoo.yml using source default +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 +k8s.pods: [ + 0: k8s.pod namespace="default" name="nginx" created=2023-03-14 16:59:07 +0100 CET +] +``` + +### Homebrew now installs cnspec/cnquery along with Mondoo + +The Mondoo Homebrew tap now installs both cnquery and cnspec as dependencies, giving you the complete power of Mondoo in one installation. + +![Homebrew install](/img/releases/2023-03-21-mondoo-8.2-is-out/homebrew-install.gif) + +### All macOS binaries are now signed and notarized + +We now sign and notarize all binaries for macOS, not just those installed with the Mondoo `.pkg` file. This means no matter where you consume Mondoo packages, you will always have a fully secured binary that passes all of Apple's security requirements. + +## 🐛 BUG FIXES AND UPDATES + +- Fix failure if the `ps` `command` column has no data and warn if data otherwise can't be parsed correctly. +- Fix failures setting the AWS integration. +- Fix parsing of policies with arrays of remediations instead of simple strings. +- Improve the audit/remediation steps in Mondoo security policies. +- Update `cnspec bundle lint` and `cnspec bundle fmt` commands to support the Mondoo version 8.0+ policy structure. +- Update the `Ensure events that modify the system's Mandatory Access Controls are collected` query in the `Linux Security by Mondoo` policy to support either SELinux or AppArmor. Thanks [@micheelengronne](https://github.com/micheelengronne)! +- Improve reliability of queries in the `Okta Organization Security by Mondoo` policy. diff --git a/releases/2023-03-28-mondoo-8.3-is-out.md b/releases/2023-03-28-mondoo-8.3-is-out.md new file mode 100644 index 000000000..366472f39 --- /dev/null +++ b/releases/2023-03-28-mondoo-8.3-is-out.md @@ -0,0 +1,147 @@ +--- +slug: mondoo-8.3-is-out/ +title: Mondoo 8.3 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.3 is out! This release includes a new vulnerabilities experience, updated CIS/Mondoo policies, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New vulnerabilities views + +We've reworked our Vulnerabilities page to make it quicker to find vulnerabilities in your environment, identify the worst offending assets, and investigate newly released CVEs. A new Vulnerabilities menu now includes individual options for Advisories, CVEs, Affected Assets, and Mondoo Vulnerability Database (VMD). + +![Vulnerability Menu](/img/releases/2023-03-28-mondoo-8.3-is-out/vulns_menu.png) + +The Advisories and CVEs pages allow you to dive into specific vendor security advisories and CVEs that impact your environment. You can see when these issues were first discovered, progress towards patching them, and get more details on the advisory/CVEs, including impacted assets. + +![CVEs Page](/img/releases/2023-03-28-mondoo-8.3-is-out/cves_page.png) + +The new Affected Assets page lets you quickly dive into assets with unpatched CVEs or vendor advisories in your space. + +![Affected Assets](/img/releases/2023-03-28-mondoo-8.3-is-out/affected_assets.png) + +The completely reworked Mondoo Vulnerability Database (MVD) gives you a single UI to research new vendor CVEs and advisories even if they don't apply to your assets. Curious about that new CVE you read about online? Look it up to learn more, including details on the CVSSv3 score and any impacted assets in your environment. + +![MVD](/img/releases/2023-03-28-mondoo-8.3-is-out/mvd.png) + +### Slack Team Security by Mondoo policy + +Mondoo now includes a new Slack Team Security policy with seven checks to secure your Slack Team (Workspace): + +- Ensure that between 2 and 4 users have admin permissions +- Ensure that admins use the most secure 2FA method +- Ensure all users use 2FA +- Use clear naming for external channels +- Ensure there is at least one internal channel per workspace +- Ensure there is at least one internal channel in the workspace and there are no external members +- Ensure domain allowlisting is enforced on internal channels + +### Microsoft 365 assets grouped in console + +**Problem** Microsoft 365 assets weren't grouped together on the Fleet page, so finding them all could take a moment. + +**Solution** We grouped Microsoft 365 assets together on the Fleet page so you can quickly find them. + +![Fleet Page](/img/releases/2023-03-28-mondoo-8.3-is-out/ms365_fleet.png) + +### Set a proxy server for all Mondoo Platform communication + +**Problem** There was no way to isolate cnspec-to-Mondoo-Platform and cnquery-to-Mondoo-Platform communication from non-Mondoo traffic. + +**Solution** A new `--api-proxy` config flag allows you to specify the proxy server for Mondoo Platform API calls when you register an asset with the `cnspec login` command. You can also manually add the `api_proxy` configuration option in your mondoo.yml config. + +## 🧹 IMPROVEMENTS + +### Updated CIS Microsoft Azure Foundations Benchmark 2.0 policy + +The CIS Microsoft Azure Foundations Benchmark policy has been updated from 1.5 to 2.0. This new release includes reworked audit and remediation steps that match Azure's latest UI and CLI experiences. + +### Expanded Microsoft Azure Security policy + +The Microsoft Azure Security by Mondoo policy has been expanded with new checks for database systems and network assets in your Azure subscription: + +- Ensure SSL connection is enabled for PostgreSQL Database Server +- Ensure SSL connection is enabled for MariaDB Database Server with the latest version +- Ensure Public Network access for MariaDB is disabled +- Ensure SSL connection enabled for MySQL Database Server with the latest version +- Ensure Public Network access for SQL Server is disabled or only possible through firewall rules +- Ensure default Public Network access for Key Vault is disabled +- Ensure that all activities on SQL Server are audited +- Ensure that transparent data encryption is enabled on SQL Server +- Ensure that diagnostic settings exist for the subscription +- Ensure that Diagnostic Setting collects essential security categories +- Ensure that direct UDP access to Azure Virtual Machines from the Internet is restricted + +### Expanded Windows Security policy + +The Windows Security by Mondoo policy now includes a new check to ensure that Local Security Authority (LSA) protection is enabled on Windows assets. + +### Fewer API calls in the AWS Lambda integration + +We've optimized our Lambda-based AWS integration to reduce the number of API calls made by the integration to reduce Lambda costs. Don't worry; you'll still get the same great AWS resource scans, but now with added efficiency. + +### etcd database encryption state in gcp.project.gke.cluster resource + +The `gcp.project.gke.cluster` resource now includes information on encryption of the etcd database. + +```coffee +cnquery> gcp.project.gke.clusters[0]{databaseEncryption} +gcp.project.gke.clusters[0]: { + databaseEncryption: { + keyName: "projects/***/locations/us-central1/keyRings/***/cryptoKeys/***" + state: "ENCRYPTED" + } +``` + +### 2FA type in slack.users resource + +The `slack.users` resource now includes the type of two-factor authentication (2FA) used by users. This lets you query which users are configured for insecure SMS vs. more secure app-based 2FA. + +```coffee +cnquery> slack.users.where( has2FA == true ){ has2FA twoFactorType } +slack.users.where.list: [ + 0: { + twoFactorType: "app" + has2FA: true + } +] +``` + +### Updated and certified CIS Google Kubernetes Engine (GKE) Benchmark policy + +The CIS Google Kubernetes Engine (GKE) Benchmark policy has been enhanced with the following new checks and is now fully certified by CIS: + +- 5.1.1 Ensure Image Vulnerability Scanning using GCR Container Analysis or a third party provider +- 5.6.4 Ensure clusters are created with Private Endpoint Enabled and Public Access Disabled + +### Smaller Mondoo package size + +We've further optimized the Mondoo package to reduce the installation size by another 10MB. + +## 🐛 BUG FIXES AND UPDATES + +- Replace `mondoo shell` with `cnspec shell` in some policy audit instructions. +- Improve remediation steps in Mondoo Azure, Google, and AWS policies. +- Fix `cnspec bundle fmt` removing `scoring_system` from policies when converting between 7.x and 8.x formats. +- Fix `cnspec bundle fmt` not properly parsing typed docs. +- When scanning Kubernetes manifests containing resources without a namespace, don't create an unnamed namespace asset as the parent. +- Fix failures querying Azure Cloud Defender security contacts when none exist. +- Fix failure running `github.organization {*}` query. +- Fix CVSS aggregated score calculation in the `platform.advisories` resource. +- Fix some CIS Kubernetes policies not displaying in the Policy Hub. +- Improve ad-hoc scan instructions in AWS/Azure/GCP policies. +- Update CIS Azure AKS v.1.2 Pod Security Policy checks to only execute on Kubernetes < 1.25. +- Update Linux Security by Mondoo policy's `Ensure events that modify the system's Mandatory Access Controls are collected` check to expect a trailing slash in directories. Thanks [@micheelengronne](https://github.com/micheelengronne)! +- Remove the `running` and `unknown` states shown in asset names in the console, which did not consistently or correctly show asset scan status. +- Add missing impact scores to Windows Security by Mondoo policy. +- Fix the Kubernetes Operator not immediately scanning newly deployed workloads in a cluster. +- Update wording on the Azure and MS365 integration pages to make it more clear that the .pem file needs to include both the certificate and the private key. diff --git a/releases/2023-04-04-mondoo-8.4-is-out.md b/releases/2023-04-04-mondoo-8.4-is-out.md new file mode 100644 index 000000000..df157516d --- /dev/null +++ b/releases/2023-04-04-mondoo-8.4-is-out.md @@ -0,0 +1,183 @@ +--- +slug: mondoo-8.4-is-out/ +title: Mondoo 8.4 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.4 is out! This release includes a new way to explore asset resources, Snowflake data exports, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Asset resource explorer + +Use the new asset resource explorer to dive deep into the configuration of all your favorite assets in Mondoo. From the services running on Windows servers to container registries used in Kubernetes deployments, the asset resource explorer lets you navigate the critical configuration data that makes up your infrastructure. + +![Asset Resource Explorer](/img/releases/2023-04-04-mondoo-8.4-is-out/asset_explorer.png) + +If the data output looks familiar, that's because this new feature is powered by the same MQL resources used by cnspec and cnquery on the command line. Data is automatically gathered with new-out-of-the-box inventory query packs in the Policy Hub. + +![Inventory Packs](/img/releases/2023-04-04-mondoo-8.4-is-out/query_packs.png) + +Just like security policies, you can enable as many inventory packs as you'd like, and they'll run on the appropriate assets automatically. With inventory packs enabled, you'll see inventory data automatically in the new Resources tab for each asset. If you want to gather even more inventory data, you can create custom inventory packs using the hundreds of available MQL resources. See examples of inventory packs in the [cnquery-packs repository](https://github.com/mondoohq/cnquery-packs). + +### Snowflake data exports + +With Mondoo 8.2 we shipped our first data export integration: Google BigQuery. This week we everyone not running in GCP has reason to celebrate: new support for Snowflake data export. + +Configure data exports just like other integrations in Mondoo, without installing anything in your infrastructure. They automatically export your Mondoo data daily. + +![Snowflake Setup](/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_setup.png) + +You can combine your exported Mondoo data with any other data in Snowflake and analyze it using Snowflakes's machine learning and BI features. + +![Snowflake Data](/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_data.png) + +### Automatic Kubernetes Ingress scanning + +Both cnspec and the Mondoo Kubernetes Operator now automatically scan Kubernetes Ingress resources. With the Kubernetes Best Practices policy enabled, you can also now expose expiring TLS certificates in Ingress resources. + +![Ingress Asset](/img/releases/2023-04-04-mondoo-8.4-is-out/ingress_asset.png) + +## 🧹 IMPROVEMENTS + +### Scan container images in .tar format + +You can now use cnspec and cnquery to scan container images exported in .tar format with commands like `docker save`. + +```text +docker save luna-docs -o luna-docs.tar +cnspec scan container tar luna-docs.tar +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 + + luna-docs.tar ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% score: F + + +Asset: luna-docs.tar +-------------------- + +... + +Scanned 1 assets + +Debian GNU/Linux 8 (jessie) + F luna-docs.tar +``` + +### Expanded Okta MQL resources + +cnquery and cnspec now include more Okta resources so you can query and secure every aspect of your organization. + +_Access billing contact of Okta organizations_ + +```coffee +cnquery> okta.organization.billingContact +okta.organization.billingContact: okta.user id="12345678910" profile[email]="chris@example.com" +``` + +_Access technical contact of Okta organizations_ + +```coffee +cnquery> okta.organization.technicalContact +okta.organization.technicalContact: okta.user id="12345678910" profile[email]="chris@example.com" +``` + +_Gather the settings of security notification emails_ + +```coffee +cnquery> okta.organization.securityNotificationEmails +okta.organization.securityNotificationEmails: { + reportSuspiciousActivityEnabled: true + sendEmailForFactorEnrollmentEnabled: false + sendEmailForFactorResetEnabled: false + sendEmailForNewDeviceEnabled: false + sendEmailForPasswordChangedEnabled: false +} +``` + +_Gather Okta ThreatInsight settings_ + +```coffee +cnquery> okta.organization.threatInsightSettings { * } +okta.organization.threatInsightSettings: { + excludeZones: [ + 0: okta.network name="LegacyIpZone" type="IP" + ] + created: 2022-11-01 18:30:34 +0000 UTC + action: "audit" + lastUpdated: 2023-04-02 20:29:19 +0000 UTC +} +``` + +_Gather Okta networks_ + +```coffee +okta.networks { * } +okta.networks: [ + 0: { + locations: [] + lastUpdated: 2022-11-01 18:30:35 +0000 UTC + asns: [] + created: 2022-11-01 18:30:35 +0000 UTC + id: "12345678910" + type: "IP" + gateways: [] + status: "ACTIVE" + system: true + proxies: [] + proxyType: "" + usage: "BLOCKLIST" + name: "BlockedIpZone" + } + 1: { + locations: [] + lastUpdated: 2022-11-01 18:30:35 +0000 UTC + asns: [] + created: 2022-11-01 18:30:35 +0000 UTC + id: "12345678910" + type: "IP" + gateways: [] + status: "ACTIVE" + system: true + proxies: [] + proxyType: "" + usage: "POLICY" + name: "LegacyIpZone" + } + 2: { + locations: [ + 0: { + country: "AF" + } + ] + lastUpdated: 2023-04-02 18:58:13 +0000 UTC + asns: [] + created: 2023-04-02 18:58:13 +0000 UTC + id: "12345678910" + type: "DYNAMIC" + gateways: [] + status: "ACTIVE" + system: false + proxies: [] + proxyType: "TorAnonymizer" + usage: "POLICY" + name: "Test" + } +] +``` + +## 🐛 BUG FIXES AND UPDATES + +- Add missing impact scores to policies. +- Improve setup and remediation instructions in the Okta Organization Security by Mondoo policy +- Fix failures in Linux Security by Mondoo policy's _Ensure auditing for processes that start prior to auditd is enabled_ check. Thanks [@micheelengronne](https://github.com/micheelengronne)! +- Fix Linux Security by Mondoo policy's _Ensure sudo logging is enabled_ check to support configs in the /etc/sudoers.d directory. Thanks [@micheelengronne](https://github.com/micheelengronne)! +- Fix failures in Linux Security by Mondoo policy's _Ensure mail transfer agent is configured for local-only mode_ check. +- Improve the reliability of multiple CIS policies. diff --git a/releases/2023-04-11-mondoo-8.5-is-out.md b/releases/2023-04-11-mondoo-8.5-is-out.md new file mode 100644 index 000000000..10f825e5f --- /dev/null +++ b/releases/2023-04-11-mondoo-8.5-is-out.md @@ -0,0 +1,68 @@ +--- +slug: mondoo-8.5-is-out/ +title: Mondoo 8.5 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.5 is out! This release includes new security/CVE dashboards, a new policy management experience, S3 exports, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Vulnerabilities dashboard + +We've added a new vulnerabilities dashboard where you can quickly see the most vulnerable assets in your infrastructure and tackle the most critical issues first. + +![Vulnerabilities Dashboard](/img/releases/2023-04-11-mondoo-8.5-is-out/vuln_dashboard.png) + +### Security dashboard and policy view + +We've created a new section in the console navigation just for security concerns, with a new security dashboard and a policy view page. The security dashboard shows the most pressing policies and assets, exposing the top actions that should be remediated to secure your infrastructure. + +![Security Dashboard](/img/releases/2023-04-11-mondoo-8.5-is-out/security_dashboard.png) + +With the new policies view, you can dive into scores by policy and see failing assets for each policy. + +![Policy View](/img/releases/2023-04-11-mondoo-8.5-is-out/policy_view.png) + +### Security Registry + +Say hello to the Mondoo Security Registry, your new space for managing policies in Mondoo. The all-new UI in the Security Registry makes finding the policies you need for your space easier and quicker. You can search and filter by policy type right on the main page, so there's no need to dive deeper to add or remove policies. It displays important information such as the policy author, number of checks, and policy description for each policy, so you quickly evaluate policies without multiple clicks. Want to enable or disable a policy? Just toggle the policy from the main page. + +![Security Registry](/img/releases/2023-04-11-mondoo-8.5-is-out/security_registry.png) + +We've also redesigned the individual policy pages to help you better understand which checks are included in policies. Checks for particular technologies or subsystems are now bundled together in groups for easier browsing. + +![Policy Page](/img/releases/2023-04-11-mondoo-8.5-is-out/policy_page.png) + +You can also view available properties in each check to see how you can customize policy behavior for your organization. + +![Policy Properties](/img/releases/2023-04-11-mondoo-8.5-is-out/properties.png) + +### Amazon S3 and S3-compatible exports + +You can now export your Mondoo data to S3 and S3-compatible storage systems automatically. Export data in JSONL or CSV formats. Mondoo runs each export daily. + +![S3 Export Setup](/img/releases/2023-04-11-mondoo-8.5-is-out/s3.png) + +## 🧹 IMPROVEMENTS + +### Scan with friendly policy names + +You can now run cnquery and cnspec scans by specifying the friendly, short name of the policy shown in the Security Registry. + +```bash +cnspec scan okta --organization dev-12345.okta.com --token $OKTA_TOKEN --policy mondoohq/mondoo-okta-security +``` + +## 🐛 BUG FIXES AND UPDATES + +- Fix failures to apply local cnquery query packs. +- Improve parsing of UNIX uptime on some systems. +- Improve policy descriptions and add license information to policies. diff --git a/releases/2023-04-18-mondoo-8.6-is-out.md b/releases/2023-04-18-mondoo-8.6-is-out.md new file mode 100644 index 000000000..083211a4d --- /dev/null +++ b/releases/2023-04-18-mondoo-8.6-is-out.md @@ -0,0 +1,107 @@ +--- +slug: mondoo-8.6-is-out/ +title: Mondoo 8.6 is out! +authors: + - name: Tim Smith + title: Mondoo Core Team + url: https://github.com/tas50 + - name: Charles Johnson + title: Mondoo Core Team + url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.6 is out! This release includes a new overview dashboard, policy previews, and property editing in the console! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Organization overview dashboard + +We've added a new overview dashboard that lets you see the health of all your infrastructure at a glance. + +Mondoo spaces are a great way to organize your scanned assets in Mondoo. You can group assets in ways that reflect how your company manages infrastructure, apply policies to all the assets in a space with a single action, and allow teams to concentrate on their area of responsibility. + +![Organization Dashboard](/img/releases/2023-04-18-mondoo-8.6-is-out/org_dashboard.png) + +The new overview dashboard gives you a single view to see what's happening in every Mondoo space. See how asset scores are trending over time, track the vulnerabilities Mondoo detects wherever they appear in your infrastructure, and compare spaces to see how different business areas manage compliance and risk obligations. + +Quickly see the most vulnerable assets in your infrastructure and tackle the most critical issues first. + +![Organization-wide Vulnerabilities](/img/releases/2023-04-18-mondoo-8.6-is-out/overview_vulnerabilities_modal.png) + +We have big plans here and we're eager for your feedback. + +### Policy preview + +We've added a way to preview policies in your spaces, so you can see the results of new checks and queries without impacting your scores. + +Previewed policies still fully execute, but the results aren't counted into your scores until you decide they are. As a result, teams get visibility into their infrastructure without worrying about creating surprises or awkward conversations with management. + +![Preview Security Registry](/img/releases/2023-04-18-mondoo-8.6-is-out/registry_with_preview.png) + +![Policy View](/img/releases/2023-04-18-mondoo-8.6-is-out/policy_with_preview.png) + +Policies can be previewed directly from the Security Registry by selecting the "Preview" icon. Previewed policies will appear on scanned assets with a blue light bulb. + +![Previewed Policy](/img/releases/2023-04-18-mondoo-8.6-is-out/previewed_policy.png) + +### Customize policy properties in the console + +We've added a way to configure the properties on a property directly from the Mondoo Console. + +Policy properties let you customize policies in ways that make sense to you without creating a fork of the entire policy. For example, you can use properties to adjust a maximum password age, modify a list of recommended ciphers, or create an allowlist of packages to continue utilizing beyond vendor EOL. Edit the properties directly from the Mondoo Console Registry. + +![Edit Properties](/img/releases/2023-04-18-mondoo-8.6-is-out/properties_edit.png) + +## 🧹 IMPROVEMENTS + +### Updated EOL data + +- FreeBSD 12.2 EOL added +- macOS 10.15 EOL added +- Ubuntu 23.04 EOL added +- Linux Mint 21 now detected +- openSUSE 15.5 now detected + +### Support for EuroLinux 7/8/9 + + + +cnspec and cnquery now detect the [EuroLinux RHEL-derivative distribution](https://en.euro-linux.com/eurolinux/what-is/). + + + +```coffee +cnquery> platform { name version family } +platform: { + name: "eurolinux" + family: [ + 0: "redhat" + 1: "linux" + 2: "unix" + 3: "os" + ] + version: "9.1" +} +``` + +## 🐛 BUG FIXES AND UPDATES + +- Fix VMware integration setup instructions to use cnspec. +- Fix viewing queries on private policies. +- Fix several links to the old Policy Hub instead of the new registry. +- Fix CI scans now showing the Asset Resource Explorer +- Remove incorrect pagination for policy checks in the registry. +- Fix failures using the `--api-proxy` CLI flag. +- Fix date parsing in the Asset Resource Explorer. +- Add missing group names to Mondoo and CIS security policies. +- Fix setting the Kubernetes operator to use OpenShift for certificate management. +- Correctly categorize Red Hat Enterprise Linux CoreOS (RHCOS) scans as operating systems in the console. +- Improve handling of nested arrays in the Asset Resource Explorer. +- Improve identification of OpenShift clusters in the Mondoo Kubernetes Operator. +- Prevent failures scanning OpenShift cluster nodes. +- Fix `cnspec scan host` not correctly reporting the asset type as a host. diff --git a/releases/2023-04-25-mondoo-8.7-is-out.md b/releases/2023-04-25-mondoo-8.7-is-out.md new file mode 100644 index 000000000..9fe653cb1 --- /dev/null +++ b/releases/2023-04-25-mondoo-8.7-is-out.md @@ -0,0 +1,60 @@ +--- +slug: mondoo-8.7-is-out/ +title: Mondoo 8.7 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.7 is out! This release includes public report viewing, improved policy filtering, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Public report viewing in cnspec + +Open source users: Want to scan your infrastructure with cnspec and instantly see a visual report on the results? Now you can! Upload scan results to mondoo.com. For 72 hours, you can view the graphical report is available to view and share with anyone. + +![Scan Summary](/img/releases/2023-04-25-mondoo-8.7-is-out/scan_summary.png) + +![Report in Browser](/img/releases/2023-04-25-mondoo-8.7-is-out/report.png) + +Want reports for longer than 72 hours? Register your cnspec installation with Mondoo Platform for reports that never expire, asset relationships, security planning, regression alerting, and more. + +## 🧹 IMPROVEMENTS + +### Filter on enabled policies + +Filtering in the registry now lets you show only policies that are enabled in the space. + +![Security Registry Filtering](/img/releases/2023-04-25-mondoo-8.7-is-out/filtering.png) + +## 🐛 BUG FIXES AND UPDATES + +- Fix `--asset-name` flag not setting a custom asset name for all asset types. +- Fix failure gathering data in the `azure.subscription.network.ipAddress` resource. +- Add missing default resource values to `gcp.project.bigqueryService` and `gcp.project.bigqueryService.dataset.accessEntry`. +- Add a more user-friendly error message when an unauthenticated client attempts to query CVE or EOL platform data. +- Add a more user-friendly status error message when cnquery/cnspec receive invalid credentials. +- Provide an error message in the `ms365` provider when the certificate is malformed. +- Set the `ms365` provider's `--client-id` and `--tenant-id` command line flags as required. +- Be clear in help that the `ms365` provider allows for both PKCS #12/PFX _and_ PEM format certificates. +- Fix false negatives in the Google Cloud (GCP) Security policy's `Ensure that Cloud Storage buckets have uniform bucket-level access enabled` check. +- Update the Linux Security policy's `Ensure SSH root login is disabled or set to prohibit-password` check to detect additional methods of preventing password-based logins from the root user. +- Display values in nested arrays such as `aws.ec2.securityGroups[1].ipPermissions[0]` in the Asset Resource Explorer. +- Display field-only queries such as `github.repository.license.spdxId` in the Asset Resource Explorer. +- Fix display of queries with multiple nested resources such as `gcp.project.bigquery.datasets {*}` in the Asset Resource Explorer. +- Don't count fixed CVEs in the Organization dashboard. +- Group `k8s-ingress` assets under `K8s Ingress` in the fleet view instead of `Others`. +- Fix the display of policies with variants in the registry. +- Fix a page load error when selecting CVE lists in the organization overview. +- Fix a failure displaying CVE data on an asset. +- Fix editing of properties in variant policies. +- Allow deleting private policies in the registry. +- Resize data display in the Asset Resource Explorer to make it easier to get back to resource navigation. +- Fix vendor advisories to list all included CVEs. +- Allow re-scheduling integration scans and exports after a failure. diff --git a/releases/2023-05-02-mondoo-8.8-is-out.md b/releases/2023-05-02-mondoo-8.8-is-out.md new file mode 100644 index 000000000..dd3058b52 --- /dev/null +++ b/releases/2023-05-02-mondoo-8.8-is-out.md @@ -0,0 +1,92 @@ +--- +slug: mondoo-8.8-is-out/ +title: Mondoo 8.8 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.8 is out! This release includes Azure inventory collection, CIS policies for GCOS, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Gather asset data on Azure + +Our new Azure Asset Inventory pack allows you to gather information on Azure assets so you can browse your Azure infrastructure in the asset resource explorer: + +![Azure Query Pack](/img/releases/2023-05-02-mondoo-8.8-is-out/azure.png) + +### New Google Container OS (GCOS) CIS Benchmark policy + +Security in your Kubernetes clusters goes beyond just workloads and cluster configuration. Ensure you're fully securing the nodes that make up your GKE clusters with this new CIS benchmark policy for the Google Container OS (GCOS) Linux distribution that powers GKE clusters. + +![GCOS CIS Policy](/img/releases/2023-05-02-mondoo-8.8-is-out/gcos.png) + +### Output formatters for vulnerability scans + +You can now output vulnerability scan data in CSV, YAML, or JSON formats using the same output flag you use with cnspec security scans. + +```text +cnspec vuln container image ubuntu:focal-20220113 -o csv +→ loaded configuration from /etc/opt/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 +Package Name,Score,Installed,Fixed,Available,Advisory,CVEs +libpam-modules,9.8,1.3.1-5ubuntu4.3,1.3.1-5ubuntu4.6,1.3.1-5ubuntu4.6,, +libpam-modules,9.8,1.3.1-5ubuntu4.3,1.3.1-5ubuntu4.4,1.3.1-5ubuntu4.6,USN-5825-1,CVE-2022-28321 +libpam-modules,9.8,1.3.1-5ubuntu4.3,1.3.1-5ubuntu4.6,1.3.1-5ubuntu4.6,USN-5825-2,CVE-2022-28321 +zlib1g,9.8,1:1.2.11.dfsg-2ubuntu1.2,1:1.2.11.dfsg-2ubuntu1.5,1:1.2.11.dfsg-2ubuntu1.5,, +zlib1g,9.8,1:1.2.11.dfsg-2ubuntu1.2,1:1.2.11.dfsg-2ubuntu1.5,1:1.2.11.dfsg-2ubuntu1.5,USN-5570-2,CVE-2022-37434 +zlib1g,5,1:1.2.11.dfsg-2ubuntu1.2,1:1.2.11.dfsg-2ubuntu1.3,1:1.2.11.dfsg-2ubuntu1.5,USN-5355-1,CVE-2018-25032 +gzip,8.8,1.10-0ubuntu4,1.10-0ubuntu4.1,1.10-0ubuntu4.1,, +gzip,8.8,1.10-0ubuntu4,1.10-0ubuntu4.1,1.10-0ubuntu4.1,USN-5378-1,CVE-2022-1271 +liblzma5,8.8,5.2.4-1ubuntu1,5.2.4-1ubuntu1.1,5.2.4-1ubuntu1.1,, +liblzma5,8.8,5.2.4-1ubuntu1,5.2.4-1ubuntu1.1,5.2.4-1ubuntu1.1,USN-5378-2,CVE-2022-1271 +libc6,7.8,2.31-0ubuntu9.2,2.31-0ubuntu9.7,2.31-0ubuntu9.9,, +libc6,7.8,2.31-0ubuntu9.2,2.31-0ubuntu9.7,2.31-0ubuntu9.9,USN-5310-1,CVE-2016-10228 CVE-2020-6096 CVE-2020-27618 CVE-2020-29562 CVE-2019-25013 CVE-2021-3326 CVE-2021-27645 CVE-2021-35942 CVE-2021-3998 CVE-2021-3999 CVE-2022-23218 CVE-2022-23219 +tar,7.8,1.30+dfsg-7ubuntu0.20.04.1,1.30+dfsg-7ubuntu0.20.04.3,1.30+dfsg-7ubuntu0.20.04.3,, +... +``` + +## 🧹 IMPROVEMENTS + +### Control cnspec public report sharing + +We recently added the ability to report and share cnspec scan results on the Mondoo website (without a Mondoo account). After each scan, cnspec asks if you want to report the scan results. + +This release adds flags and controls for this capability. + +Use this flag to skip the prompt and share a report: + +```bash +cnspec scan --share-report +``` + +Use this flag to skip the prompt and not share a report: + +```bash +cnspec scan --share-report=false +``` + +To configure cnspec to never prompt and never share a report, change the config: + +```yaml +share_report: false # only applicable if used unauthenticated +``` + +If you disable report sharing using the config and you run `cnspec scan --share-report`, the flag overrides the config and cnspec shares the report. + +## 🐛 BUG FIXES AND UPDATES + +- Improve alignment of cnspec scan results. +- Fix failures in some MQL queries using switch statements. +- Discover Kubernetes assets in manifests even if they lack a namespace. +- Validate that the provided Microsoft 365 certificate can correctly authenticate with Microsoft 365. +- Fix `cnspec bundle publish` failing when policies use variants. +- Fix `Ensure nodev option set on /var partition` and `Ensure nosuid option set on /var partition` false negatives in the CIS Ubuntu 22.04 policy. diff --git a/releases/2023-05-09-mondoo-8.9-is-out.md b/releases/2023-05-09-mondoo-8.9-is-out.md new file mode 100644 index 000000000..454b257b9 --- /dev/null +++ b/releases/2023-05-09-mondoo-8.9-is-out.md @@ -0,0 +1,69 @@ +--- +slug: mondoo-8.9-is-out/ +title: Mondoo 8.9 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.9 is out! This release includes expanded EOL/CVE data, expanded asset inventory capabilities, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Alpine 3.17 and Ubuntu 23.04 CVE data + +In addition to EOL information, Mondoo now reports CVEs in Alpine 3.17 and Ubuntu 23.04 packages. Container image and Kubernetes cluster scans now automatically expose CVEs in your images. + +### Asset inventory data out of the box + +When you create a new space, all Mondoo query packs are enabled by default so you can dive right into the asset resource explorer without needing to first enable query packs. This extends out-of-the-box asset inventory data to: + +- Windows +- macOS +- AWS +- Azure +- GCP + +### Dive into queries more easily + +Sometimes it was difficult to view or share information on queries in policies. To make diving into policies and sharing those findings easier, we've given queries their own pages. View everything you need to know on a single page and share those findings with a URL that goes right to the query. + +![Query Page](/img/releases/2023-05-09-mondoo-8.9-is-out/query_page.png) + +## 🧹 IMPROVEMENTS + +### Improved UI performance + +Everyone loves a snappy UI, so we've worked behind the scenes to make sure space and asset pages load as quickly as possible. In some cases pages will load 10x faster than last week. + +### Updated VMware Photon EOL data + +On May 2, VMware announced the Photon 5.0 release and at the same time clarified the EOL dates for Photon 3.0 and 4.0. Mondoo now includes this updated EOL data along with support for detecting Photon 5.0. + +### Updated query packs and compliance policies + +- All Kubernetes query packs have been merged into a single pack that's simpler to enable and applies automatically to all assets in your clusters. +- The VMware vCenter Incident Response Pack now fetches the state of all services on ESXi hosts, not just those that are running. +- The CIS Google Kubernetes Engine (GKE) Benchmark and CIS Google Cloud Platform Foundation Benchmark policies now fail with an impact score of 95 if a default service account is used on a GKE cluster. +- The Amazon Web Services (AWS) Best Practices for NIST 800 171 policy now includes impact scores, descriptions, and remediation steps for all queries. +- Update the CIS `Ensure loopback traffic is configured` query to also check that firewall packages are installed. +- Update the CIS `Ensure default deny firewall policy` and `Ensure password reuse is limited` queries for SLES hosts. +- Fix false positives in the CIS `Ensure default deny firewall policy` query when using nftables. + +## 🐛 BUG FIXES AND UPDATES + +- Fix a panic when running `cnspec bundle lint`. Thanks for reporting this, [@kmf](https://github.com/kmf)! +- Improve the wording of the prompt to send the scan reports to Mondoo's reporting service. +- Fix failures fetching more than 100 repositories in the GitHub provider. +- Fix failures scanning vSphere switches if there are no defined uplinks. +- Fix failures in the JSON output formatter if the asset could not be scanned. +- Update more error messages from the legacy `transport` wording to the correct `provider` wording. +- Fix failures querying data from the `aws.cloudtrail` resource. +- Optimize the AWS integration Lambda functions to consume fewer API calls. +- Fix queries on assets not showing as disabled or ignored. +- Update the checks count on the assets page to reflect the actual number of enabled checks, not just those available to run. diff --git a/releases/2023-05-16-mondoo-8.10-is-out.md b/releases/2023-05-16-mondoo-8.10-is-out.md new file mode 100644 index 000000000..f576a9c34 --- /dev/null +++ b/releases/2023-05-16-mondoo-8.10-is-out.md @@ -0,0 +1,216 @@ +--- +slug: mondoo-8.10-is-out/ +title: Mondoo 8.10 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.10 is out! This release includes new SaaS scanning integrations, Oracle Cloud Infrastructure (OCI) support, expanded OS CVE detection, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Scan Oracle Cloud Infrastructure (OCI) + +cnquery and cnspec now include support for scanning Oracle Cloud Infrastructure (OCI) using your local OCI CLI configuration file. Explore your infrastructure configuration using cnquery or enforce security and compliance with custom cnspec security policies. + +Connect to OCI using the cnquery shell: + +```bash +$ cnquery shell oci +``` + +Query the tenant information: + +```coffee +cnquery> oci.tenancy +oci.tenancy: oci.tenancy name="example" +``` + +Fetch all users: + +```coffee +cnquery> oci.identity.users +oci.identity.users: [ + 0: oci.identity.user name="alice@example.com" + 1: oci.identity.user name="bob@example.com" + 2: oci.identity.user name="john@example.com" +] +``` + +Fetch all groups: + +```coffee +cnquery> oci.identity.groups +oci.identity.groups: [ + 0: oci.identity.group name="All Domain Users" + 1: oci.identity.group name="Administrators" +] +``` + +Dive deeper with information from new [OCI resources](/mql/resources/oci-pack/): + +```coffee +# list identity policies +oci.identity.policies + +# list compute instances +oci.compute.instances + +# list compute images +oci.compute.images + +# list virtual cloud networks +oci.network.vcns + +# list virtual cloud networks security lists +oci.network.securityLists + +# list all buckets +oci.objectStorage.buckets +``` + +Stay tuned for additional OCI support, including Mondoo/CIS policies, and continuous scanning with Mondoo Platform. + +### Slack / GitHub / GitLab integrations + +Need continuous visibility into the security of the SaaS services you rely to do business? Now you can continuously scan GitHub repositories, GitLab groups, and Slack teams directly from the Mondoo console without installing anything into your infrastructure. + +Find these new integrations under SaaS in the Mondoo console: + +![SaaS Integrations](/img/releases/2023-05-16-mondoo-8.10-is-out/saas_integrations.png) + +### Query Terraform plan configurations + +Expand the security posture of your IaC code with a new `terraform.plan.configuration` resource for querying Terraform plan configurations. + +```coffee +terraform.plan.configuration: { + resources: [ + 0: { + address: "null_resource.this" + mode: "managed" + name: "this" + provider_config_key: "null" + provisioners: [ + 0: { + expressions: { + command: { + constant_value: "echo hello_world >> hello_world.txt" + } + } + type: "local-exec" + } + ] + schema_version: 0.000000 + type: "null_resource" + } + ] + providerConfig: [ + 0: { + full_name: "registry.terraform.io/hashicorp/null" + name: "null" + version_constraint: "3.2.1" + } + ] +} +``` + +### New query pages showing impacted assets + +New query pages make it easier to see which assets are affected by failing security checks. Security policy checks now have their own pages, with a tab of affected assets: + +![Impacted Assets](/img/releases/2023-05-16-mondoo-8.10-is-out/impacted_assets.png) + +### Expanded CVE and EOL platform detection + +Mondoo now detects the latest platform EOL and CVE data, so you can ensure your systems are in support and fully updated. + +- Alpine 3.18 EOL/CVE detection +- Fedora 38 EOL/CVE detection +- VMware vSphere/ESXi 8 EOL/CVE detection +- Debian 12 CVE detection +- Ubuntu 22.10/23.04 CVE detection + +### Create API token for spaces + +Generate API tokens to query Mondoo in the Space settings. + +![Space Settings](/img/releases/2023-05-16-mondoo-8.10-is-out/space_settings.png) + +## 🧹 IMPROVEMENTS + +### Support UID / GUID for files on running Docker containers + +cnspec now supports inspecting the UID/GUID of files within running containers: + +_before_ + +```coffee +cnquery> file("/tmp").user.name +Query encountered errors: +cannot cast resource to resource type: +file.user.name: no data available +``` + +_now_ + +```coffee +cnquery> file("/tmp").user.name +file.user.name: "root" +``` + +### Pause integrations + +Want to stop scanning in an integration temporarily without deleting it? Now you can pause integrations from the integrations settings pages. + +![Pause Integrations](/img/releases/2023-05-16-mondoo-8.10-is-out/pause_integrations.png) + +### Improved CIS Microsoft Azure Foundations Benchmark policy + +The CIS Microsoft Azure Foundations Benchmark policy now includes impact scores for each control and improved queries to return actionable results for all discovered findings. + +### Simplified variants policies + +In Mondoo version 8.0, we introduced the concept of policy variants so you can write a single security check that applies to assets in different parts of their lifecycle such as Terraform plans and the cloud assets they creates. With Mondoo 8.10, we've improved variants to remove repetitive coding from your policies. Variant queries now inherit fields from the parent query if they are no longer specified. This means you can set common fields like title, description, and properties once and have them propagate automatically to all variant queries. + +See the [Mondoo variants documentation](/cnspec/cnspec-policies/write/variants/) for more information on using policy variants to simplify your policy as code experience. + +### Expanded data in BigQuery exports + +Mondoo exports to Google BigQuery now provide more robust data to BigQuery for analysis: + +- Add policy mappings to see which check relates to which policy +- Add support for variants so that diff can work at the variants level +- Add export time to BigQuery tables +- Allow users to tag scans with snapshot names to make it easier for them to reference them in diff queries + +### Improved asset cleanup in spaces + +Done testing your Mondoo policy and integration settings, but need to remove all the temporary assets created during testing? Now you can delete all the assets in a space with a single selection while retaining custom policies and integration configurations. + +![Delete All Space Assets](/img/releases/2023-05-16-mondoo-8.10-is-out/delete_all_assets.png) + +## 🐛 BUG FIXES AND UPDATES + +- Fix a failure when scanning with a policy that is missing the defined variants. Thanks for reporting this, [@kmf](https://github.com/kmf)! +- Allow piping Kubernetes manifests to cnspec for scanning. Thanks for reporting this, [@michaelkrieg](https://github.com/michaelkrieg)! +- Fix CI scans showing up as standard assets on the fleet page. +- Reduce API usage in the `aws.dynamodb` resource by making the tags field optional. +- Rename `Protected` field to `isProtected` in the `github.branch`. +- Fix some impacted assets now showing on the CVEs page. +- Fix a failure loading data in the asset resource explorer under certain circumstances. +- Fix the fleet view summary for Google Workspace assets to show "Workspaces" not "Others". +- Fix some query results not properly displaying in the console scan results. +- Fix fetching of CVE data on VMware Photon 4.0. +- Fix scanning of GitHub repos that belong to a user not an organization. +- Fix a failure running the query `asset{ * }`. +- Fix missing queries in the printer formatted reports. +- Fix the URL to query packs in the registry to not mention policies. +- Fix the collapse button in the navigation bar disappearing if all items are expanded. +- Improve navigating policies with variants in the registry. diff --git a/releases/2023-05-23-mondoo-8.11-is-out.md b/releases/2023-05-23-mondoo-8.11-is-out.md new file mode 100644 index 000000000..3c32e9ded --- /dev/null +++ b/releases/2023-05-23-mondoo-8.11-is-out.md @@ -0,0 +1,204 @@ +--- +slug: mondoo-8.11-is-out/ +title: Mondoo 8.11 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.11 is out! This release includes security journey planning with Mondoo Risk Actions and IoT security improvements! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Plan your security journey with Risk Actions + +Security tools can often be overwhelming. When you turn on a few policies and add some assets, you may be faced with an overwhelming amount of red in the first scan results. This can be demotivating and may obscure important results once you become accustomed to seeing so many failed checks. + +To help users create more actionable plans from their assessments, we are introducing Risk Actions. This new section in the dashboard can guide you in creating a baseline for your environments and planning remediation steps. It can improve your overall security reporting significantly: + +![Risk actions overview](/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions.png) + +Risk Actions uses your current results across all assets to determine which areas are working well and which areas need improvements. The checks that are succeeding are turned into a baseline, reflecting where you are today and what is going well. If things deteriorate in this baseline, you will see these findings pop up. Everything else is turned into either goals or exceptions. Goals can be turned into future milestones to work towards. They are still evaluated, so you can see progress towards their completion. However, their score no longer impacts your asset score. All checks that are mostly failing today can be moved into goals, which stops them from showing up on dashboards and alerts every day. Everything else that you don't want to fix can be moved into an exception. It won't be evaluated, protecting the health of fragile systems, and it won't be reported anymore, giving you peace of mind. + +Risk Actions also introduces justifications for these goals and exceptions. They help to communicate why checks are disabled or ignored and explain the reasons to auditors, leadership, and other internal teams. + +We are in the process of heavily expanding on exceptions and the planning process with the upcoming release of the Compliance Hub in Mondoo. Stay tuned! + +![Risk planning](/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions2.png) + +### Examine OS images with filesystem mounts + +Are you building IoT firmware and struggling to secure your devices before deploying them to the field? Now you can use cnquery and cnspec to evaluate your firmware images locally during development or within CI pipelines. Mount your image filesystem locally and then use the new filesystem provider `fs` to live query the image or scan it with Mondoo policies. + +```shell +cnquery shell fs /mnt/firmware/ +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 + ___ _ __ __ _ _ _ ___ _ __ _ _ + / __| '_ \ / _` | | | |/ _ \ '__| | | | +| (__| | | | (_| | |_| | __/ | | |_| | + \___|_| |_|\__, |\__,_|\___|_| \__, | + mondoo™ |_| |___/ interactive shell + +cnquery> asset { name version platform } +asset: { + version: "v3.1.17" + platform: "poky-iot2000" + name: "iot2000" +} +``` + +### Automatically cleanup stale assets + +Do assets that haven't checked in for weeks spark joy? Maybe it's time to toss them, and now you can do it automatically. We've added a new space setting to automatically clean up assets that haven't checked in: + +![Automatic asset cleanup settings](/img/releases/2023-05-23-mondoo-8.11-is-out/asset_cleanup.png) + +## 🧹 IMPROVEMENTS + +### More frequent integration scans + +Integrations the run directly from Mondoo Platform now scan your infrastructure every 4 hours, so you have up-to-date asset security and inventory data available at all times. + +### Improved query output when using the `.all()` MQL helper + +Improved output in the MQL `.all()` helper makes it easier than ever to identify failures and resolve problems quickly. Previously any item that failed a query using the `.all()` helper would return just the ID of the failing object: + +```coffee + Result: + [failed] [].all() + actual: [ + 0: gcp.project.gkeService.cluster id = gcp.project.gkeService.cluster/7c50e440aa5c41cf8eff749a4f313953c4c974b985ab43d1b44871e7dbf3e9a7 + ] +``` + +Now you'll see the default fields for the failing resource, giving you better context on the actual failing object: + +```coffee + Result: + [failed] [].all() + actual: [ + 0: gcp.project.gkeService.cluster { + name: "test-cluster-2" + } + ] +``` + +This helper is used extensively in Mondoo policies, so you'll see better query results throughout the platform. Thanks [@multani](https://github.com/multani) for reporting this problem! + +### Support dicts with `containsOnly` in MQL + +The `containsOnly` helper now allows you to find dicts within data. Given JSON data with a dict: + +```json +{ + "string-array": ["a", "b", "c"] +} +``` + +You can now query for the exact values `"a", "b", "c"` with: + +```coffee +parse.json('my_json_data.json').params['string-array'].containsOnly(['a','c','b']) +``` + +### Improve default resource values for AWS and Azure + +Default resource values allow you to quickly navigate your infrastructure with cnquery and provide important failure context in your cnspec query results. We've updated many of our AWS and Azure resources to give you new and expanded default values, so you can better explore and secure your cloud environments. + +### platformDetails in the aws.ec2.instance resource + +The `aws.ec2.instance` resource now includes `platformDetails` data from the AWS API allows you to identify the platform of systems without needing an EBS volume scan or client installation. + +Use `platformDetails` to better understand MQL query results: + +```coffee +cnquery> aws.ec2. instances .where( state == "running" ) { state region platformDetails } aws.ec2. instances .where: +0: { + platformDetails: "Windows" + region: "us-east-1" + state: "running" +} +1: { + platformDetails: "Linux/UNIX" + region: "us-east-2" + state: "running" +} +2: { + platformDetails: "Linux/UNIX" + region: "us-east-2" + state: "running" +} +3: { + platformDetails: "Linux/UNIX" + region: "us-east-2" + state: "running" +} +``` + +### Improve opkg parsing for yocto-based Linux or openwrt + +cnquery and cnspec now include improved support for the opkg package format found in Yocto Linux based IoT and networking devices like openwrt routers. We've improved detection of the opkg system and all available packages. You can now also statically analyze opkg data on firmware images using the filesystem (`fs`) provider in cnquery and cnspec: + +```coffee +cnquery shell fs /mnt/firmware/ +cnquery> packages +packages.list: [ + 0: package name="shadow-securetty" version="4.6-r3" + 1: package name="os-release-dev" version="1.0-r0" + 2: package name="iptables-module-xt-cgroup" version="1.8.4-r0" + 3: package name="libwebsockets-dev" version="4.0.1-r0" +... +] +``` + +### Skip linting of policies before publishing + +You can now skip the linting of policies before publishing them to the registry with the `--no-lint` flag: + +```shell +cnspec publish --no-lint ~/my_cool_policy.mql.yml +``` + +### AWS Security and macOS Security policy updates + +The AWS Security and macOS Security policies by Mondoo now include: + +- Impact scores for all queries +- Improved failure output in queries +- More reliable queries + +## 🐛 BUG FIXES AND UPDATES + +- Fix a panic when analyzing Terraform HCL with parenthesis expressions. Thanks for reporting this [@crcsmnky](https://github.com/crcsmnky)! +- Fix failures linting policies. Thanks for reporting this [@kmf](https://github.com/kmf)! +- Gracefully handle missing keypairs on AWS instances. +- Fix recording to work with `cnquery scan`. +- Fix `-o yaml` to properly produce YAML output. +- Only fetch AWS SNS tags when needed to reduce API usage. +- Fix the GCP group in the fleet page to list projects, not organizations. +- Add last scanned column in the Azure integrations page. +- Fix recording to work with `cnspec scan`. +- Expose the full failure messages when a plugin fails to load. +- Fix policies in the Security -> Policy page not loading correctly. +- Fix false positives in the CIS macOS FileVault checks. +- Fix `/etc/profile` permission checks in the CIS `Ensure default user umask is configured` check. +- Fix CIS `Ensure shadow group is empty` failures on Google COS. +- Fix CIS `Ensure chrony is configured` failures on Google COS. +- Fix CIS `Ensure permissions on /etc/gshadow- are configured` failures on Google CIS. +- Update the CIS `Ensure system accounts are secured` check to support `/bin/false` as a valid shell. +- Fix SQL server queries in Microsoft Azure Security policy to work with the latest cnspec. +- Improve remediation steps in Linux Security policy. +- Update asset pages to not use the term "Annotations" instead of the legacy term "Tags". +- Don't run the first scan of an Azure integration until after the user has selected policies to enable. +- Improve the Windows install instructions on the Windows integration page. +- Add missing tooltips to CVEs in the organization dashboard to help with long CVE names. +- Rework the API Tokens tab interface in the space settings to make it simpler to setup new tokens. +- Fix the Danger Zone in space settings not always showing content. +- Fix the asset print view to print out policy data when using policy variants. +- Fix disabling policy checks when using Firefox diff --git a/releases/2023-05-30-mondoo-8.12-is-out.md b/releases/2023-05-30-mondoo-8.12-is-out.md new file mode 100644 index 000000000..3b0bf166a --- /dev/null +++ b/releases/2023-05-30-mondoo-8.12-is-out.md @@ -0,0 +1,159 @@ +--- +slug: mondoo-8.12-is-out/ +title: Mondoo 8.12 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.12 is out! This release includes new OPC UA scanning, improved MQL helpers, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Open Platform Communications Unified Architecture (OPC UA) support + +Mondoo now allows you to scan multiple PLC IoT devices simultaneously by connecting to an OPC UA server and scanning PLC remotely. A new `opcua` provider in cnspec and cnquery allows you to remotely connect to these servers with querying provided with a new `opcua` query pack. + +```coffeescript +# gather all available namespaces +opcua.namespaces { * } +opcua.namespaces: [ + 0: { + id: 0 + name: "http://opcfoundation.org/UA/" + } + 1: { + id: 1 + name: "urn:open62541.server.application" + } +] + +# gather root node +cnquery> opcua.root +opcua.root: opcua.node id="i=84" name="Root" + + +# gather all nodes +cnquery> opcua.nodes { name namespace.name } + +# gather node with a specific id +cnquery> opcua.nodes.where (id == "i=2253") +opcua.nodes.where: [ + 0: opcua.node id="i=2253" name="Server" +] + +# gather details about the server +cnquery> opcua.server { * } +opcua.server: { + buildInfo: { + BuildDate: "2023-05-21T21:03:43.817369Z" + BuildNumber: "May 20 2023 15:51:32" + ManufacturerName: "open62541" + ProductName: "open62541 OPC UA Server" + ProductURI: "http://open62541.org" + SoftwareVersion: "1.3.5-994-g5d73f0cc5" + } + node: opcua.node id="i=2253" name="Server" + currentTime: 2023-05-22 08:28:30.625932 +0000 UTC + state: "ServerStateRunning" + startTime: 2023-05-21 21:03:43.834304 +0000 UTC +} +``` + +## 🧹 IMPROVEMENTS + +### Improved `.first()` and `.last()` MQL helpers + +The `.first()` and `.last()` MQL helpers now support `dict` data structures such as JSON data and also include improved handling of null array/dicts. + +Finding first and last values in JSON data: + +```coffee +cnquery> parse.json("dummy.json").params["string-array"].first +parse.json.params[string-array].first: "a" +cnquery> parse.json("dummy.json").params["string-array"].last +parse.json.params[string-array].last: "c" +cnquery> parse.json("dummy.json").params["string-array"].where("non-exist").first +parse.json.params[string-array].where.first: null +cnquery> parse.json("dummy.json").params["string-array"].where("non-exist").last +parse.json.params[string-array].where.last: null + +cnquery> parse.json("dummy.json").params.first +parse.json.params.first: 1.000000 +cnquery> parse.json("dummy.json").params.last +parse.json.params.last: true +cnquery> parse.json("dummy.json").params.where("non-exist").first +parse.json.params.where.first: null +cnquery> parse.json("dummy.json").params.where("non-exist").last +parse.json.params.where.last: null +``` + +### Expanded date format support in `parse.date()` MQL helper + +It is now possible to parse many different date formats automatically with the `parse.date` MQL helper: + +```coffee +# RFC 3339 +parse.date("2006-01-02T15:04:05Z") + +# Simple Date + Time +parse.date("2006-01-02 15:04:05") + +# Date only +parse.date("2006-01-02") + +# Time only, parses as a duration +parse.date("15:04:05") + +# RFC 1123 +parse.date("Mon, 02 Jan 2006 15:04:05 MST") + +# ANSI C +parse.date("Mon Jan 2 15:04:05 2006") + +# RFC 822 +parse.date("02 Jan 06 15:04 MST") + +# RFC 850 +parse.date("Monday, 02-Jan-06 15:04:05 MST") + +# Kitchen time +parse.date("3:04PM") + +# Handy timestamp +parse.date("Jan 2 15:04:05") +``` + +You can also parse RFC1123 and RFC822 format dates with time zones: + +```coffee +# RFC 1123 with numeric time zone +parse.date('Mon, 02 Jan 2006 15:04:05 -0700') + +# RFC 822 with numeric time zone +parse.date('02 Jan 06 15:04 -0700') +``` + +### Expanded status information for integrations + +Integrations now show a history of all integration jobs so you can see when jobs started, completed, and any errors that occurred. + +![Integration Status](/img/releases/2023-05-30-mondoo-8.12-is-out/status.png) + +## 🐛 BUG FIXES AND UPDATES + +- Improve the reliability of the `dns` resource with large numbers of `TXT` records. Thanks for this fix [@mariuskimmina](https://github.com/mariuskimmina)! +- Fix a panic when calling `domainName` if no name can be found. Thanks for this fix [@mariuskimmina](https://github.com/mariuskimmina)! +- Fallback to `os.hostname` if `os.name` cannot be discovered. Thanks for this fix [@mariuskimmina](https://github.com/mariuskimmina)! +- Reduce load time and cluster load when scanning Kubernetes clusters. +- Fix failures reading Kubernetes manifests from stdin when resources lack a UID. +- Add missing checks for `/etc/password`, `/etc/group`, and `/etc/shadow` to CIS Google Container-Optimized OS Benchmark policy. +- Fix the Privacy Policy and Terms & Conditions acceptance buttons in the Organization Settings page not loading correctly. +- Add the upcoming FreeBSD 14 release date. +- Update SELinux checks in BSI Linux policy to support Amazon Linux, SLES, and openSUSE platforms. +- Update several console pages to use the `checks` term instead of the legacy `controls` term. diff --git a/releases/2023-06-06-mondoo-8.13-is-out.md b/releases/2023-06-06-mondoo-8.13-is-out.md new file mode 100644 index 000000000..e9211914b --- /dev/null +++ b/releases/2023-06-06-mondoo-8.13-is-out.md @@ -0,0 +1,88 @@ +--- +slug: mondoo-8.13-is-out/ +title: Mondoo 8.13 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.13 is out! This release includes GCS/PostgreSQL Exports and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Export data to PostgreSQL and Google Cloud Storage + +What good is your security data if it's locked up in your security tooling? Now you have even more options for continuously exporting Mondoo security and asset inventory data to PostgreSQL databases or Google Cloud Storage buckets. + +Space data exported to Google Cloud Storage bucket: + +![Google Cloud Storage Bucket](/img/releases/2023-06-06-mondoo-8.13-is-out/gcs_export.png) + +Asset information in PostgreSQL + +![PostgreSQL table](/img/releases/2023-06-06-mondoo-8.13-is-out/postgresql_export.png) + +## 🧹 IMPROVEMENTS + +### Improved query result output + +Query results now give you the context to dive in and fix issues: + +Before: + +```coffee +cnquery run gcp project lunalectric -c 'gcp.project.gke.clusters.all(databaseEncryption["state"] == "NOT_ENCRYPTED")' +... + [failed] [].all() + actual: [ + 0: gcp.project.gkeService.cluster id = gcp.project.gkeService.cluster/7c50e440aa5c41cf8eff749a4f313953c4c974b985ab43d1b44871e7dbf3e9a7 + 1: gcp.project.gkeService.cluster id = gcp.project.gkeService.cluster/db3328e173c84de49d92229c02378c9f59b69e0a568a4448b52b3d7ff2f201f6 + ] +``` + +Now: + +```coffee +cnquery run gcp project lunalectric -c 'gcp.project.gke.clusters.all(databaseEncryption["state"] == "NOT_ENCRYPTED")' +... +[failed] [].all() + actual: [ + 0: gcp.project.gkeService.cluster { + databaseEncryption[state]: "ENCRYPTED" + name: "mondoo-gke-cluster-2" + } + ] +... +``` + +### Align cnquery with cnspec bundle commands + +To make it easier to remember which command to use, we've updated cnquery to use the same command syntax as cnspec when managing policy bundles. + +- `cnquery bundle validate` is now `cnquery bundle lint` +- `cnquery bundle upload` is now `cnquery bundle publish` + +## 🐛 BUG FIXES AND UPDATES + +- Fix a failure when scanning Terraform configs with a dynamic value in the map key name. Thanks for reporting this issue, [@crcsmnky](https://github.com/crcsmnky)! +- Remove the unused `--pager` and `--no-pager` flags from cnquery and cnspec. Thanks for this fix, [@mariuskimmina](https://github.com/mariuskimmina)! +- Fix the `--context` flag not being honored when scanning Kubernetes clusters. Thanks for this fix, [@mariuskimmina](https://github.com/mariuskimmina)! +- Reduce the memory usage of container scanning in the Mondoo Kubernetes Operator. +- Fix incorrect Mondoo installation steps in the AWS guide. +- Fix vulnerability advisory pages not listing impacted packages. +- Don't display recommended policies to enable for the AWS integration if all are already enabled. +- Change the "Pause scanning" menu item in export integrations to "Pause exports." +- Fix the breadcrumbs and URLs for some policy checks not matching expected values. +- Fix uploading query packs in the registry. +- Allow renaming integrations. +- Update several console pages to use the `checks` term instead of the legacy `queries` term. +- Allow immediate rescheduling of failed exports. +- Don't print more than 1024 lines of output in `cnquery shell`. +- Fix output format when using the `--output report` flag. +- Add defaults to the `registrykey` resource to improve output. +- Improve error messages in `registrykey` resource. diff --git a/releases/2023-06-13-mondoo-8.14-is-out.md b/releases/2023-06-13-mondoo-8.14-is-out.md new file mode 100644 index 000000000..a76b6acab --- /dev/null +++ b/releases/2023-06-13-mondoo-8.14-is-out.md @@ -0,0 +1,94 @@ +--- +slug: mondoo-8.14-is-out/ +title: Mondoo 8.14 is out! +author: Charles Johnson +author_title: Mondoo Core Team +author_url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.14 is out! This release includes support for the Okta Terraform provider, CIS 2.0 Benchmarks for Windows, Debian 12 support, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Okta security policy in Terraform + +In addition to our existing support for scanning Okta organizations, Mondoo now provides Okta security guidance for users of the Okta Terraform provider from the HashiCorp Terraform Registry. + +Mondoo now provides [Okta HealthInsight](https://help.okta.com/en-us/Content/Topics/Security/healthinsight/healthinsight.htm) recommendations at all stages of the Terraform lifecycle: + +- Terraform HCL +- Terraform Plan +- Terraform State +- Okta API / Runtime + +Get started with the latest version of the [Mondoo Okta Organization Security policy](https://mondoo.com/registry/namespace/mondoohq/policies/mondoo-okta-security). + +## 🧹 IMPROVEMENTS + +### Debian 12 support + +In line with the June 10th release of Debian 12 "Bookworm," Mondoo now fully supports Debian 12 operating systems. Mondoo automatically tracks and reports on security advisories for Debian 12 and all official packages, and will report on EOL dates for this release. + +### Windows CIS Benchmark Policies updated to version 2.0 + +Mondoo now supports version 2.0 of the CIS Benchmark for Windows. The CIS benchmarks are prescriptive configuration recommendations for IT systems from the Center for Internet Security (CIS). They are developed through a consensus-based process involving global cybersecurity experts, and evolve over time to meet new threats. + +The latest Windows CIS Benchmark policies include new security checks as well as improved audit & remediation documentation. + +#### Windows 10 + +- [CIS Microsoft Windows 10 Enterprise Benchmark - Level 1 (L1) - Corporate/Enterprise Environment (general use)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-10-l1) +- [CIS Microsoft Windows 10 Enterprise Benchmark - Level 1 (L1) + BitLocker (BL)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-10-l1-bitlocker) +- [CIS Microsoft Windows 10 Enterprise Benchmark - Next Generation Windows Security (NG) - optional add-on for use in the newest hardware and configuration environments](https://mondoo.com/registry/namespace/mondoohq/policies/windows-10-ng) +- [CIS Microsoft Windows 10 Enterprise Benchmark - Level 2 (L2) + BitLocker (BL)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-10-l2-bitlocker) +- [CIS Microsoft Windows 10 Enterprise Benchmark - Level 2 (L2) - High Security/Sensitive Data Environment (limited functionality)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-10-l2) + +#### Windows 11 + +- [CIS Microsoft Windows 11 Enterprise Benchmark - Level 1 (L1) - Corporate/Enterprise Environment (general use)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-11-l1) +- [CIS Microsoft Windows 11 Enterprise Benchmark - Level 1 (L1) + BitLocker (BL)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-11-l1-bitlocker) +- [CIS Microsoft Windows 11 Enterprise Benchmark - Level 2 (L2) + BitLocker (BL)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-11-l2-bitlocker) +- [CIS Microsoft Windows 11 Enterprise Benchmark - Level 2 (L2) - High Security/Sensitive Data Environment (limited functionality)](https://mondoo.com/registry/namespace/mondoohq/policies/windows-11-l2) +- [CIS Microsoft Windows 11 Enterprise Benchmark - Next Generation Windows Security (NG) - optional add-on for use in the newest hardware and configuration environments](https://mondoo.com/registry/namespace/mondoohq/policies/windows-11-ng) + +#### Windows 2016 + +- [CIS Microsoft Windows Server 2016 Benchmark - Level 1 - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2016-l1-ms) +- [CIS Microsoft Windows Server 2016 Benchmark - Level 2 - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2016-l2-ms) +- [CIS Microsoft Windows Server 2016 Benchmark - Next Generation Windows Security - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2016-ng-ms) +- [CIS Microsoft Windows Server 2016 Benchmark - Level 1 - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2016-l1-dc) +- [CIS Microsoft Windows Server 2016 Benchmark - Level 2 - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2016-l2-dc) +- [CIS Microsoft Windows Server 2016 Benchmark - Next Generation Windows Security - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2016-ng-dc) + +#### Windows 2019 + +- [CIS Microsoft Windows Server 2019 Benchmark - Level 1 - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2019-l1-ms) +- [CIS Microsoft Windows Server 2019 Benchmark - Level 2 - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2019-l2-ms) +- [CIS Microsoft Windows Server 2019 Benchmark - Next Generation Windows Security - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2019-ng-ms) +- [CIS Microsoft Windows Server 2019 Benchmark - Level 1 - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2019-l1-dc) +- [CIS Microsoft Windows Server 2019 Benchmark - Level 2 - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2019-l2-dc) +- [CIS Microsoft Windows Server 2019 Benchmark - Next Generation Windows Security - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2019-ng-dc) + +#### Windows 2022 + +- [CIS Microsoft Windows Server 2022 Benchmark - Level 1 - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2022-l1-ms) +- [CIS Microsoft Windows Server 2022 Benchmark - Level 2 - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2022-l2-ms) +- [CIS Microsoft Windows Server 2022 Benchmark - Next Generation Windows Security - Member Server](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2022-ng-ms) +- [CIS Microsoft Windows Server 2022 Benchmark - Level 1 - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2022-l1-dc) +- [CIS Microsoft Windows Server 2022 Benchmark - Level 2 - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2022-l2-dc) +- [CIS Microsoft Windows Server 2022 Benchmark - Next Generation Windows Security - Domain Controller](https://mondoo.com/registry/namespace/mondoohq/policies/windows-server-2022-ng-dc) + +## 🐛 BUG FIXES AND UPDATES + +- Don't show unnecessary output columns when running `cnspec bundle lint`. +- Update the Linux Security policy by Mondoo to suggest masking some services to prevent starts. +- Fix error messages when running `.none()` MQL queries. +- Fix duplicate labels in the Kubernetes operator Helm chart that prevented installation. +- Fix the `.where()` and `.contains()` MQL helpers to properly handle comparisons of variables. +- Add missing KMS controls to the Google GKE CIS Benchmarks. +- Improve checks in the Terraform HCL Security Static Analysis for AWS/GCP policies to work with multiple providers with the same name. diff --git a/releases/2023-06-20-mondoo-8.15-is-out.md b/releases/2023-06-20-mondoo-8.15-is-out.md new file mode 100644 index 000000000..f5b8e4c74 --- /dev/null +++ b/releases/2023-06-20-mondoo-8.15-is-out.md @@ -0,0 +1,63 @@ +--- +slug: mondoo-8.15-is-out/ +title: Mondoo 8.15 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.15 is out! This release includes new MQL helpers, updated platform end of life data, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New MQL helpers + +Everyone needs a little help sometimes, so we've added new helpers to MQL to make it easier to write checks against complex infrastructure. + +#### Check strings using regexes + +The `.contains()` helper can now search a string using a regex. You can use this to write powerful queries against resource data: + +```coffee +cnquery> packages.where( name.contains(/libnginx-mod-.*-filter/) ) +packages.where.list: [ + 0: package name="libnginx-mod-http-image-filter" version="1.18.0-6.1+deb11u3" + 1: package name="libnginx-mod-http-xslt-filter" version="1.18.0-6.1+deb11u3" +] +``` + +#### Flatten nested arrays + +Use the new `flat()` helper to flatten arrays that include nested arrays, so you can more easily check the contained values: + +```coffee +> [[0],[[1, 2]], 3].flat +[0,1,2,3] +``` + +## 🧹 IMPROVEMENTS + +### Updated Linux distribution EOL data + +It seems like every week a new Linux distribution comes out and that means existing distributions are reaching their end of life dates. We've added support for the latest new distributions and newly announced distribution end of life dates: + +- Google COS 105 release and EOL dates +- openSUSE 15.5 release and EOL dates +- SLES 15.4 EOL date +- SLES 15.5 release date +- Ubuntu 23.10 release date + +## 🐛 BUG FIXES AND UPDATES + +- Fix older registration tokens that were no longer able to register clients. +- Fix incorrect CVE scores on the Vulnerabilities console page. +- Improve default value output from `terraform.blocks` resource. +- Scan large container images on disk instead of in memory to prevent out-of-memory conditions with large images. +- Fix scanning of Kubernetes manifests that are piped to cnspec. +- Fix some policies not properly executing against container images. +- Fix the `Ensure IPv6 firewall rules exist for all open ports` and `Ensure firewall rules exist for all open ports` controls in the `CIS Distribution Independent Linux benchmark` policy to support loopback addresses other than 127.0.0.1. diff --git a/releases/2023-06-27-mondoo-8.16-is-out.md b/releases/2023-06-27-mondoo-8.16-is-out.md new file mode 100644 index 000000000..c15b56adc --- /dev/null +++ b/releases/2023-06-27-mondoo-8.16-is-out.md @@ -0,0 +1,85 @@ +--- +slug: mondoo-8.16-is-out/ +title: Mondoo 8.16 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.16 is out! This release includes new GCP VM instance snapshot scanning, new OCI auth options, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Scan GCP virtual machine instances + +You need to scan your GCP VM instances for security misconfigurations and vulnerabilities, but you can't impact running production workloads with an agent installation. Now you can scan GCP VM instances using snapshots to quickly inspect systems without impacting running resources: + +```bash +cnquery shell gcp instance instance-name --project-id your-project-123 --zone us-central1-a +→ no Mondoo configuration file provided. using defaults +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 +→ found target volume device name=/dev/sdc1 + ___ _ __ __ _ _ _ ___ _ __ _ _ + / __| '_ \ / _` | | | |/ _ \ '__| | | | +| (__| | | | (_| | |_| | __/ | | |_| | + \___|_| |_|\__, |\__,_|\___|_| \__, | + mondoo™ |_| |___/ interactive shell + +cnquery> platform.name +platform.name: "debian" +cnquery> packages +packages.list: [ + 0: package name="adduser" version="3.118" + 1: package name="apparmor" version="2.13.6-10" + 2: package name="apt" version="2.2.4" + 3: package name="apt-transport-https" version="2.2.4" + 4: package name="apt-utils" version="2.2.4" + 5: package name="base-files" version="11.1+deb11u7" + 6: package name="base-passwd" version="3.5.51" + ... +``` + +## 🧹 IMPROVEMENTS + +### Quicker integration setup with default names + +Naming things is hard, but with Mondoo integrations, you don't have to worry about it. Our integrations will automatically generate names for you, so you can start scanning sooner. If you change your mind later, you can always change the name when inspiration strikes. + +![Name default](/img/releases/2023-06-27-mondoo-8.16-is-out/default_integration_name.png) + +### Set OCI credential on the CLI + +In Mondoo 8.10, we introduced support for scanning Oracle Cloud Infrastructure (OCI) in cnquery and cnspec. This week, we have extended that support to provide additional authentication options for your OCI account. You can now authenticate automatically using the OCI configuration on disk, or you can pass the authentication values on the CLI if your workstation is not set up to communicate with OCI. + +```bash +cnquery shell oci --tenancy TENANCY_VALUE --user USER_VALUE --region REGION_VALUE --fingerprint FINGERPRINT_VALUE --key-path PATH_TO_KEY +``` + +## 🐛 BUG FIXES AND UPDATES + +- Add missing SUSE security advisory data to CVEs. +- Add randomization to the cnspec scan time when running as a service to prevent spikes in network traffic and/or hypervisor load. +- Add support for dict types in the `.flat()` helper. +- Allow closing the resource details page in the asset resource explorer to make navigation easier. +- Allow sorting by all columns in web shared reports. +- Fix a blank page displaying while setting up S3 compatible integrations. +- Fix an extra scrollbar that was displayed in the asset resource explorer. +- Fix incorrect focus for the platform tiles in the fleet view. +- Fix incorrect types being returned by the MQL `.flat()` helper in some scenarios. +- Fix potential failures in the macOS security policy checking user plist files. +- Fix repetitive wording in the AWS Integration breadcrumbs. +- Fix some CVE data not displaying for assets in the EU region. +- Fix the shared reports summary email to include the proper number of failed checks. +- Fix uploading of query packs to the registry. +- Fix vulnerability report for Windows client releases. +- Improve the performance of selections in the Risk Actions page. +- Improve the target score setup in Risk Actions to make it more clear what the recommended score is. +- Multiple fixes to the CIS Distribution Independent Linux Benchmark policy to better work with Photon Linux. +- Only show integration error messages when the integration has an error and is failing to scan. +- Remove a copy link icon in the asset resource explorer that didn't produce a working link. diff --git a/releases/2023-07-04-mondoo-8.17-is-out.md b/releases/2023-07-04-mondoo-8.17-is-out.md new file mode 100644 index 000000000..365342ab6 --- /dev/null +++ b/releases/2023-07-04-mondoo-8.17-is-out.md @@ -0,0 +1,129 @@ +--- +slug: mondoo-8.17-is-out/ +title: Mondoo 8.17 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.17 is out! This release includes new Jira ticketing integration, GCP snapshot scanning, continuous Azure VM scanning, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Atlassian Jira ticketing integration + +Exposing critical issues is only half the journey toward a secure and compliant infrastructure. The next step is effectively communicating these findings to the appropriate teams and tracking remediation progress. Take the work out of communicating your findings with Mondoo's new Atlassian Jira integration. + +![Create Jira ticket](/img/releases/2023-07-04-mondoo-8.17-is-out/create_jira_ticket.png) + +Automatically create issues directly in Atlassian Jira so teams can schedule remediation work within their existing project workflows. Without ever leaving the Mondoo console, you can create Jira tickets that include all the details necessary for infrastructure owners to remediate findings, even if they don't have access to Mondoo. + +![Jira project](/img/releases/2023-07-04-mondoo-8.17-is-out/jira_project.png) + +### GCP snapshot scanning + +In Mondoo 8.16, we introduced GCP VM instance scanning using snapshots, allowing you to scan running instances without agents or impact on production workloads. This week we're extending our GCP scanning options with support for scanning snapshots by name. With snapshot scanning, you scan different point-in-time snapshots of VMs, giving you deep insights into systems at a particular point in time as well as security over time. + +```shell +cnquery shell gcp snapshot suse12 --project-id my-project-id +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 +→ found target volume device name=/dev/sdb3 + ___ _ __ ___ _ __ ___ ___ + / __| '_ \/ __| '_ \ / _ \/ __| +| (__| | | \__ \ |_) | __/ (__ + \___|_| |_|___/ .__/ \___|\___| + mondoo™ |_| +cnspec> asset.platform +asset.platform: "sles" +cnspec> asset.version +asset.version: "12.5" +cnspec> packages +packages.list: [ + 0: package name="release-notes-sles" version="12.5.20200504-3.11.1" + 1: package name="libqrencode3" version="3.4.3-1.31" + 2: package name="lifecycle-data-sle-module-toolchain" version="1-3.15.1" + 3: package name="yast2-firewall" version="3.4.0-6.3.2" + 4: package name="recode" version="3.6-663.62" + 5: package name="sle-module-legacy-release-POOL" version="12-10.10.1" + 6: package name="SuSEfirewall2" version="3.6.312.333-3.13.1" + 7: package name="gamin-server" version="0.1.10-11.19" +... +``` + +### Continuous Azure VM scanning + +Scanning Azure VMs is easier than ever with our Azure integration's new continuous VM scanning feature. Automatically scan all VMs in your subscription without needing to deploy agents or change your provisioning process. + +To enable VM scanning, select the **Scan VMs** option during the Azure integration setup. + +![Scan VMs Option](/img/releases/2023-07-04-mondoo-8.17-is-out/scan_vms.png) + +Mondoo discovers all Linux and Windows VMs in your subscription automatically and scans these VMs using Azure's built-in Run Commands functionality. + +![Scanned VMs](/img/releases/2023-07-04-mondoo-8.17-is-out/azure_vms.png) + +## 🧹 IMPROVEMENTS + +### Use the latest existing snapshot for GCP VM instance scanning + +Want to scan GCP VM instances by snapshot, but don't want to wait for a new snapshot to be created? Now you can scan GCP instances using existing VM snapshots with the new `--use-latest-snapshot` flag. + +```shell +cnspec scan gcp instance sles12 --project-id my-project-id --zone us-central1-a --use-latest-snapshot +→ no Mondoo configuration file provided. using defaults +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=1 + + sles12 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% score: C + + +Asset: sles12 +------------- + +Checks: +✕ Fail: D 20 Ensure auditing for processes that start prior to auditd is enabled +✕ Fail: D 20 Ensure successful file system mounts are collected +✕ Fail: C 40 Ensure Advanced Intrusion Detection Environment (AIDE) is installed +✓ Pass: A 100 Ensure rsh server is stopped and not enabled +✕ Fail: F 0 Ensure secure permissions on /etc/group- are set +✓ Pass: A 100 Ensure Avahi server is stopped and not enabled +✕ Fail: D 20 Ensure system accounts are non-login +✓ Pass: A 100 Ensure secure permissions on /etc/group are set +! Error: Ensure rsyslog default file permissions configured +✓ Pass: A 100 Ensure prelink is disabled +✓ Pass: A 100 Ensure auditd is installed +✓ Pass: A 100 Ensure X Window System is not installed +! Error: Ensure access to the su command is restricted +✕ Fail: D 20 Ensure session initiation information is collected +✕ Fail: F 0 Ensure broadcast ICMP requests are ignored +✕ Fail: D 20 Ensure login and logout events are collected +... +``` + +### More asset inventory data on Windows + +The cnquery Windows Asset Inventory Pack now includes additional inventory data collection: + +- Installed hotfixes +- Installed features +- Windows Computer/System information +- Expanded network interface information + +## 🐛 BUG FIXES AND UPDATES + +- Add a remediation hint for UFW users to the Linux Security policy. Thanks for this update, [@danielwillshare](https://github.com/danielwillshare)! +- Add custom metrics to the Mondoo Kubernetes Operator. Thanks for this update, [@mariuskimmina](https://github.com/mariuskimmina)! +- Improve help output in cnspec and cnquery. +- Fix ignored checks on assets not displaying as ignored. +- Fixed incorrect "Private" status for policies on the Security Policies page. +- Improve Security Policy tooltips and column names. +- Remove outdated (ONLINE) status from assets on the Security Policies page. +- Use the term "checks" instead of "queries" on the Security Policies page. +- Fix the display of nested queries in the asset resources tab. +- Fix an incorrect remediation step in the CIS Distribution Independent Linux Benchmark policy. diff --git a/releases/2023-07-11-mondoo-8.18-is-out.md b/releases/2023-07-11-mondoo-8.18-is-out.md new file mode 100644 index 000000000..2334d4c4d --- /dev/null +++ b/releases/2023-07-11-mondoo-8.18-is-out.md @@ -0,0 +1,70 @@ +--- +slug: mondoo-8.18-is-out/ +title: Mondoo 8.18 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.18 is out! This release includes new organization wide API keys, updated CIS benchmark policies, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Organization-wide API keys + +Take your API game from spaces all the way to your organization with new organization-wide API token generation. These tokens have access to the organization and each space within your organization. Automate away! + +![API Token Generation](/img/releases/2023-07-11-mondoo-8.18-is-out/api_tokens.png) + +## 🧹 IMPROVEMENTS + +### Updated CIS benchmark policies + +There's nothing better than the most up-to-date security recommendations and this week we're shipping the latest and greatest for MS 365, GKE, and Kubernetes. + +#### Microsoft 365 Foundations Benchmark 2.0 + +This truly massive update includes 14 new controls and 36 updated controls with improved descriptions and remediation steps. We especially like the new MFA checks that are a must-have for any Microsoft 365 admin. + +New controls: + +- Access reviews for high privileged Azure AD roles +- Ensure two Emergency Access accounts have been defined +- SharePoint and OneDrive integration with Azure AD B2B +- Access reviews for Guests E5 +- Microsoft 365 on the web restrictions +- Restrict non-admin users from creating tenants +- Ensure custom banned passwords lists are used +- Idle session timeout +- Ensure 'Phishing-resistant MFA strength' is required for Administrators +- Microsoft Authenticator is configured to protect against MFA fatigue +- Microsoft Azure Management restrictions +- Restrict access to the Azure AD administration portal' is set to 'Yes' +- Strict protection preset for Priority accounts +- New recommendation for users tagged as priority accounts + +#### Google Kubernetes Engine Benchmark 1.4.0 + +The new CIS GKE Benchmark is updated for Kubernetes 1.25 and the latest features in GKE. Say goodbye to legacy Pod Security Policies checks and say hello to a whole new set of controls for Pod Security Standards. + +#### New and updated vanilla Kubernetes CIS Benchmarks + +CIS released several Kubernetes benchmarks for vanilla Kubernetes installations, including multiple benchmarks for specific Kubernetes releases and an unversioned benchmark targeting the latest Kubernetes release. Mondoo now includes an updated `CIS Kubernetes Benchmark` targeting Kubernetes 1.25. If you're running Kubernetes 1.24 and want a version-specific benchmark, apply the new `CIS Kubernetes V1.24 Benchmark`. + +- [CIS Kubernetes V1.24 Benchmark - Level 1 - Worker Node](https://mondoo.com/registry/namespace/mondoohq/policies/cis-kubernetes-v1-24-level-1) +- [CIS Kubernetes V1.24 Benchmark - Level 2 - Worker Node](https://mondoo.com/registry/namespace/mondoohq/policies/cis-kubernetes-v1-24-level-2) +- [CIS Kubernetes V1.24 Benchmark - Level 1 - Master Node](https://mondoo.com/registry/namespace/mondoohq/policies/cis-kubernetes-master-level-1) +- [CIS Kubernetes V1.24 Benchmark - Level 2 - Master Node](https://mondoo.com/registry/namespace/mondoohq/policies/cis-kubernetes-master-level-2) + +## 🐛 BUG FIXES AND UPDATES + +- Fix detection of services on Raspbian Linux. +- Fix failures running the Windows CIS policies. +- Rework all Kubernetes queries in policies for improved reliability. +- Properly render properties in the Open Registry. +- Fix policies in the Open Security Registry showing invalid properties. diff --git a/releases/2023-07-18-mondoo-8.19-is-out.md b/releases/2023-07-18-mondoo-8.19-is-out.md new file mode 100644 index 000000000..494d0f5ba --- /dev/null +++ b/releases/2023-07-18-mondoo-8.19-is-out.md @@ -0,0 +1,138 @@ +--- +slug: mondoo-8.19-is-out/ +title: Mondoo 8.19 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.19 is out! This release includes continuous OCI scanning, organization-wide service accounts, massive Windows performance improvements, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Continuous OCI scanning + +Continuously scan your Oracle Cloud Infrastructure (OCI) services, all without an agent installation. Set up continuous scanning using your existing local OCI configuration file, and we'll do the rest with full infrastructure scans every 4 hours. + +![OCI Integration List](/img/releases/2023-07-18-mondoo-8.19-is-out/oci_list.png) + +### Organization-wide service accounts + +Need a service account for all your spaces? Now you can create one with organization-wide service accounts, available on the organization settings page. Create new accounts or manage existing accounts with an improved UI to help with cross-team collaboration. + +![Org Wide Service Account Creation](/img/releases/2023-07-18-mondoo-8.19-is-out/service_account.png) + +### Scan AWS using assumed roles + +Now you can scan your AWS infrastructure by assuming an AWS role: + +```shell +cnspec scan aws --option role-arn=ROLEARN +cnspec scan aws --option role-arn=ROLEARN --option external-id=EXTERNALID +``` + +### CIS GitHub Benchmark policy + +Secure your GitHub organizations and repos with Mondoo and the new CIS GitHub Benchmark 1.0 policy. + +![GitHub Benchmark](/img/releases/2023-07-18-mondoo-8.19-is-out/github_benchmark.png) + +## 🧹 IMPROVEMENTS + +### 4.5x Windows speedup with registry improvements + +What's better than improvements to the Windows `registrykey` resource? How about improvements that also make CIS benchmark scans on Windows nearly 4.5 times faster, all while using 25% less memory? It seems like a tall order, but we've entirely reworked `registrykey` under the hood to give you some huge new benefits Mondoo-wide. + +First off, there's a whole new way to interact with registry data. The `registrykey` resource includes a new `items` property that greatly improves how data is returned (versus the now deprecated `properties` field). This new format allows us to return more than just string values, including new binary and multi-line registry value support. + +The existing `registrykey.properties` data that returned just key/value data: + +```coffee +cnspec> registrykey(path: 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters').properties +registrykey.properties: { + EnableAuthenticateUserSharing: "0" + Guid: "" + NullSessionPipes: "" + ServiceDll: "%SystemRoot%\\system32\\srvsvc.dll" + ServiceDllUnloadOnStop: "1" + autodisconnect: "15" + enableforcedlogoff: "1" + enablesecuritysignature: "0" + requiresecuritysignature: "0" + restrictnullsessaccess: "1" +} +``` + +With `registrykey.items` you'll get back a wealth of data on each registry key that looks more familiar to regedit users: + +```coffee +cnspec> registrykey(path: 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters').items { * } +registrykey.items: [ + 0: { + value: "0" + type: "dword" + name: "EnableAuthenticateUserSharing" + path: "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters" + data: 0 + exists: true + } + 1: { + value: "" + type: "multistring" + name: "NullSessionPipes" + path: "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters" + data: [ + 0: "" + ] + exists: true + } + 2: { + value: "%SystemRoot%\\system32\\srvsvc.dll" + type: "expandstring" + name: "ServiceDll" + path: "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters" + data: "%SystemRoot%\\system32\\srvsvc.dll" + exists: true + } + 3: { + value: "1" + type: "dword" + name: "ServiceDllUnloadOnStop" + path: "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanManServer\\Parameters" + data: 1 + exists: true + } +... +``` + +What about those under-the-hood improvements? `registrykey` is entirely rewritten to natively query the Windows registry directly instead of going through PowerShell. This increases performance, reduces memory usage, and works better with antivirus systems that could block Mondoo's use of PowerShell. + +Execution of the CIS Windows 2022 Level 1 Member Benchmarks policy running on an AWS t2.large instance: + +| Mondoo Release | Execution Time | Memory Usage | +| -------------- | ------------------- | ------------ | +| 8.18 | 1 minute 56 seconds | 140.19 MB | +| 8.19 | 21 seconds | 104 MB | + +### Updated CIS AKS Benchmark policy + +Both the CIS AKS Benchmark policies are updated from 1.2.0 to 1.3.0. These new versions improve audit/remediation steps and remove checks for the deprecated `--protect-kernel-defaults` kubelet flag. + +## 🐛 BUG FIXES AND UPDATES + +- Add missing impact scores to CIS GKE policy. +- Support policy variants in query packs. +- Improve check titles in Mondoo inventory packs. +- Improve search results in the security registry. +- Resolve errors loading CI scan results. +- Fix errors executing local policies containing variants. +- Display the create time for export integrations. +- Fix incorrect EOL date for Windows 2016. +- Fix failures when setting plans in Risk Actions. +- Resolve occasional failures logging in using Safari. +- Fix a failure in certain uses of `files.find` in policies. diff --git a/releases/2023-07-25-mondoo-8.20-is-out.md b/releases/2023-07-25-mondoo-8.20-is-out.md new file mode 100644 index 000000000..32374bfed --- /dev/null +++ b/releases/2023-07-25-mondoo-8.20-is-out.md @@ -0,0 +1,85 @@ +--- +slug: mondoo-8.20-is-out/ +title: Mondoo 8.20 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.20 is out! This release includes Azure Blob Storage exports, updated asset inventory data, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Azure Blob Storage exports + +Continuously export your Mondoo security scan data to Azure storage blobs where external systems like Splunk can consume it. + +![Azure Blog Storage Exports](/img/releases/2023-07-25-mondoo-8.20-is-out/azure.png) + +## 🧹 IMPROVEMENTS + +### Expanded Linux / macOS inventory packs + +The [macOS Inventory Pack](https://mondoo.com/registry/namespace/mondoohq/querypacks/mondoo-macos-inventory) and [Linux Inventory Pack](https://mondoo.com/registry/namespace/mondoohq/querypacks/mondoo-linux-inventory) now include additional information to better identify systems in your infrastructure with CPU, memory, storage, and hardware model data collection. + +Example output on macOS: + +```text +Retrieve the amount of physical memory: +parse.json.params[SPHardwareDataType].first[physical_memory]: "16 GB" + +Retrieve the hostname: +os.hostname: "Tim-Smith.local" + +Retrieve the machine model identifier: +parse.json.params[SPHardwareDataType].first[machine_model]: "MacBookPro18,3" + +Retrieve the machine model name: +parse.json.params[SPHardwareDataType].first[machine_name]: "MacBook Pro" + +Retrieve the model part number: +parse.json.params[SPHardwareDataType].first[model_number]: "MKGQ3LL/A" + +Retrieve the system serial number: +parse.json.params[SPHardwareDataType].first[serial_number]: "GGJXG21234" + +Retrieve the type of CPU: +parse.json.params[SPHardwareDataType].first[chip_type]: "Apple M1 Pro" +``` + +Example output on Linux: + +```text +Retrieve the size and filesystem type of the root volume: +command.stdout.trim: "56G ext4" + +Retrieve the system manufacturer: +machine.baseboard.manufacturer: "ASUSTeK COMPUTER INC." + +Retrieve the system product name: +machine.baseboard.product: "H87I-PLUS" + +Retrieve the type of CPU: +command.stdout.trim: "Intel(R) Core(TM) i7-4785T CPU @ 2.20GHz" + +Retrieve the amount of physical memory: +command.stdout.trim.+: "16636M" +``` + +## 🐛 BUG FIXES AND UPDATES + +- Discover private repos when scanning GitHub organizations. +- Add `--discover organization` to the GitHub provider to scan just the organization itself, not repos within the organization. +- Remove unnecessary AWS tag collection from the AWS global DynamoDB table discovery. +- Don't collect the root user in "Collect regular user" query pack queries. +- Add missing impact to CIS GKE Benchmark Level 1. +- Don't show the unnecessary Mondoo Job Environment platform overview information for Kubernetes assets. +- Fix the Mondoo Kubernetes Operator to properly report container scanning status. +- Don't fail a data export if CVE data cannot be found. +- Ensure that all JSON data in exports can be properly parsed by Splunk. +- Ensure Azure question packs in the registry show the correct icons. diff --git a/releases/2023-08-01-mondoo-8.21-is-out.md b/releases/2023-08-01-mondoo-8.21-is-out.md new file mode 100644 index 000000000..db2f2fcce --- /dev/null +++ b/releases/2023-08-01-mondoo-8.21-is-out.md @@ -0,0 +1,74 @@ +--- +slug: mondoo-8.21-is-out/ +title: Mondoo 8.21 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.21 is out! This release includes loads of new CIS policies, performance improvements, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New CIS policies for OCI, OpenShift, and Amazon 2023 + +We've been busy pulling in the latest CIS policies for your growing infrastructure, with five new policies this week to help you secure the latest platforms: + +- CIS Red Hat OpenShift Container Platform v4 Benchmark - Level 1 +- CIS Red Hat OpenShift Container Platform v4 Benchmark - Level 2 +- CIS Amazon 2023 Benchmark - Level 1 +- CIS Amazon 2023 Benchmark - Level 2 +- CIS Oracle Cloud Infrastructure Foundation Benchmark - Level 1 + +## 🧹 IMPROVEMENTS + +### Improved policy formatting + +The `cnspec bundle lint` command has seen improvements to better handle multi-line queries. These queries will now automatically format on individual lines so you can more easily read your policies. + +Before: + +```coffee +mql: "users.where(\n shell.contains(\"nologin\") == false && shell.contains(\"false\") == false\n && name != \"sync\" && name != \"shutdown\" && name != \"halt\" \n).list {\n file(home) {exists}\n}\n" +``` + +After: + +```coffee +mql: | + users.where( + shell.contains("nologin") == false && shell.contains("false") == false + && name != "sync" && name != "shutdown" && name != "halt" + ).list { + file(home) {exists} + } +``` + +### Improved performance + +Who doesn't like getting the same thing, only faster? We optimized how we deliver policy data from Mondoo Platform to our clients to make your scans even quicker. Expect to save around 1.5 seconds on each scan. We hope you make the best of this time windfall. + +## 🐛 BUG FIXES AND UPDATES + +- Accept Jira project IDs in any case. +- Suggest CIS GitHub Benchmark policy after setting up a GitHub integration. +- Show Debian 11/12 security update repository packages in CVE scan results. +- Fix assets failing to load in the console under some circumstances. +- Fix CIS Amazon Linux 2 benchmark policies incorrectly applying to Amazon Linux 2023 hosts. +- Fix failures when EBS volume scanning Amazon 2023 instances. +- Fix Oracle Linux 8/9 vulnerability scans showing already installed updates for some packages. +- Fix typos in the Okta Organization Security policy’s query UIDs. Thanks [@moeterich](https://github.com/moeterich/). +- Improve reliability of data exports when data is malformed. +- Improve reliability of queries in CIS Windows Benchmark policies. +- Improve reliability of the chrony and timesyncd checks in the Operational Best Practices for Time Synchronization policy. +- Improve Jira host validation during the integration setup. +- Improve policy search results in the registry. +- Improve consistency of CIS benchmark names and query UIDs. +- Improve queries in CIS Kubernetes Benchmark policies. +- Rework CIS policies to include groups for better display in the registry. +- Show an error if a policy cannot be removed from the registry. diff --git a/releases/2023-08-07-mondoo-8.22-is-out.md b/releases/2023-08-07-mondoo-8.22-is-out.md new file mode 100644 index 000000000..27446dc53 --- /dev/null +++ b/releases/2023-08-07-mondoo-8.22-is-out.md @@ -0,0 +1,72 @@ +--- +slug: mondoo-8.22-is-out/ +title: Mondoo 8.22 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.22 is out! This release includes new asset configuration data, updated CIS policies, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New asset configuration insights + +Have you ever struggled to respond to a security alert because you couldn't locate the asset in your infrastructure? Now with Mondoo, you can quickly track down assets in your environment, thanks to new asset configuration information available in the Mondoo console. This new configuration data includes important asset metadata such as accounts and regions for cloud assets or make, model, and serial number for physical assets. Mondoo automatically collects this data so you don't have to worry about enabling additional policies or query packs. + +Example cloud asset: + +![Cloud asset configuration information](/img/releases/2023-08-07-mondoo-8.22-is-out/cloud_asset.png) + +Example physical asset: + +![Employee laptop configuration information](/img/releases/2023-08-07-mondoo-8.22-is-out/laptop_asset.png) + +## 🧹 IMPROVEMENTS + +### See who set up integrations + +Want to know whom to thank for setting up infrastructure integrations in Mondoo? Each integration in Mondoo now shows the creator so you can quickly see who's been busy securing infrastructure in your organization. + +![Integration with username](/img/releases/2023-08-07-mondoo-8.22-is-out/integration.png) + +### CIS AWS Foundations Benchmark 2.0 + +Mondoo now includes the CIS AWS Foundations Benchmark policy version 2.0. This updated release includes two new controls to ensure AWS CloudShell access is restricted and to ensure that instances only allow metadata access via IMDSv2. The policy also includes 22 updated controls with improved audit and remediation steps. + +### CIS Amazon EKS Benchmark 1.3.0 + +Mondoo now includes the CIS AWS EKS Benchmark policy 1.3.0. This updated release replaces checks for the deprecated Pod Security Policy system with Pod Security Standards instead. It also includes six updated controls with improved audit and remediation steps. + +### aws.rds.dbinstance Automatic Upgrade field + +The `aws.rds.dbinstance` MQL resource now includes a new `autoMinorVersionUpgrade` field that identifies if automatic minor version upgrades are enabled for the RDS instance. + +## 🐛 BUG FIXES AND UPDATES + +- Don't hang waiting on Zypper CLI input when scanning SUSE hosts. +- Detect SUSE 11 and earlier platforms where /etc/os-release is absent. +- Fix failures scanning containers on the latest Docker releases. +- Prevent cnspec service checks from potentially rebooting sys-v init based SUSE 11 and earlier. +- Fix failures scanning new AWS instances created from the AWS Lambda integration. +- Fix failing ECR image scans from the AWS Lambda integration. +- Don't display the `Show all policies` button on assets when all policies are already showing. +- Improve the display of current AWS resources from within the AWS Integration page. +- Stop the packages list in the asset Platform Vulnerabilities tab from reloading twice. +- Fix a double refresh when selecting asset CVEs. +- Improve alignment of data on the Platform Vulnerabilities page. +- Fix Load More pagination on the CVEs page. +- Fix query results that returned `cannot convert primitive with NO type information`. +- Remove empty `Impact` sections from CIS benchmark policies. +- Improve MQL query formatting in policies to improve readability. +- Add a friendly message when an asset has no annotations so it's more clear how to create an annotation. +- Warn before leaving Risk Actions midway through creating a plan. +- Fix panics loading some asset data. +- Improve the display of organization dashboard graphs on tablets. +- Improve several AWS platform titles. +- Fix failures using `hashi-vault` with local inventory files. diff --git a/releases/2023-08-14-mondoo-8.23-is-out.md b/releases/2023-08-14-mondoo-8.23-is-out.md new file mode 100644 index 000000000..a9c1405ce --- /dev/null +++ b/releases/2023-08-14-mondoo-8.23-is-out.md @@ -0,0 +1,49 @@ +--- +slug: mondoo-8.23-is-out/ +title: Mondoo 8.23 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.23 is out! This release includes Mondoo Compliance Hub, improved asset configuration data, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Compliance Hub + +Are you struggling to achieve compliance with frameworks such as SOC 2, HIPAA, BSI, or PCI? Let the new Mondoo Compliance Hub do the heavy lifting for you. It automatically maps all of your existing security scans into the top compliance frameworks, allowing you to quickly view your progress towards compliance. And best of all, you'll never have to take a screenshot for manual evidence gathering again. + +Learn more in our [Simplifying Compliance: Introducing the Mondoo Compliance Hub](https://blog.mondoo.com/simplifying-compliance-introducing-the-mondoo-compliance-hub) blog post. + +## 🧹 IMPROVEMENTS + +### Improved asset configuration data + +Last week we added new asset configuration data to the console, so you can quickly understand what Mondoo is scanning and where to find it in your infrastructure. This week we've improved that experience with an updated layout on the asset pages, improved DB type names for AWS RDS instances, and new data collection on Slack and Okta assets. + +### VMware policy improvements + +- Update CIS VMware ESXi 6.7 Benchmark from 1.2 to 1.3 with improved audit and remediation steps. +- Rework queries in CIS ESXi 6.7 and 7.0 benchmarks for improved reliability. + +## 🐛 BUG FIXES AND UPDATES + +- Fix failures loading AWS assets in the console. +- Fix failure applying MS365 policies. +- Update the VMware appliance to Debian 12. +- Improve Linux OpenSSH checks to only run when OpenSSH is installed. +- Improve `Ensure SSH Protocol is set to 2` Linux query to only run on the appropriate OpenSSH releases. +- Improve `Ensure access to the su command is restricted` Linux query to account for `admin` or `mondoo` users. +- Improve Postfix queries to also ensure that Postfix is running. +- Update Linux policies to use the `port` resource instead of the deprecated `socketstats` resource. +- Use bool value and not pointer in `aws.ec2.networkacl.entry.egress` resource. +- Fix an issue that made MQL query compilation non-deterministic. +- Improve support for services on SUSE systems. +- Fix some package queries hanging on SUSE systems. +- Don't include ignored checks in the asset "Top Recommended Actions" tile. diff --git a/releases/2023-08-22-mondoo-8.24-is-out.md b/releases/2023-08-22-mondoo-8.24-is-out.md new file mode 100644 index 000000000..b2f5fdfbf --- /dev/null +++ b/releases/2023-08-22-mondoo-8.24-is-out.md @@ -0,0 +1,58 @@ +--- +slug: mondoo-8.24-is-out/ +title: Mondoo 8.24 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.24 is out! This release includes NIST SP 800-171 compliance, CIS AWS Foundations Benchmark 2.0, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### NIST SP 800-171 Framework + +Mondoo Compliance Hub now includes the NIST SP 800-171 framework, raising the total number of out-of-the-box compliance frameworks to ten. Each of the 110 controls in this framework automatically map to the checks in your infrastructure, so with a flip of a switch you can start your NIST SP 800-171 and see where you stand. + +![Compliance Hub - NIST SP 800-171](/img/releases/2023-08-22-mondoo-8.24-is-out/nist800-171.png) + +## 🧹 IMPROVEMENTS + +### Improved asset configuration data for GCP projects + +GCP project assets in the fleet now include additional asset configuration data, so you can always understand what's being scanned at a quick glance. + +![GCP Project Configuration Data](/img/releases/2023-08-22-mondoo-8.24-is-out/gcp-project-configuration.png) + +### CIS Amazon Web Services (AWS) Foundations Benchmark 2.0 + +The CIS Amazon Web Services (AWS) Foundations Benchmark is updated to the latest 2.0 release. This updated benchmark includes a number of important updates to make securing your AWS environment easier: + +- Adds a new check to ensure that EC2 metadata service requires IMDSv2 +- Adds a new check to restrict the usage of AWS CloudShell +- Removes the check that ensures all S3 buckets have encryption at rest enabled because this feature is now enabled automatically +- 22 updated checks with improved audit and remediation steps + +## 🐛 BUG FIXES AND UPDATES + +- Fix errors determining cloud configuration for containers. +- Improve slow scan times while waiting on policy data. +- Resolve a panic loading some queries in the resource explorer. +- Fix organization overview dashboard to ignore data below 0. +- Improve reliability of queries in the CIS Distribution Independent Linux Benchmark policy. +- Update CIS Windows policy scoring to match that of non-Windows CIS benchmarks. +- Improve the reliability of the GitHub Organization Security and GitHub Repository Security policy SECURITY.md checks. +- Fix incorrect text on the org and space level service account pages. +- Improve padding in the asset page configuration tiles. +- Improve the display of various compliance pages when there is not data. +- Fix an error in the asset overview data when the cloud could not be properly detected. +- Fix failures scanning OCI via the integration. +- Adjust impact scores in the Mondoo Linux Security and CIS Distribution Independent Linux Benchmark policies. +- Don't show buttons to create new spaces when users only have Viewer privileges. +- Fix the Kubernetes operator to properly garbage collect old node scans when only node scanning is enabled. +- Display CVSS 3.1 CVE scores when available. diff --git a/releases/2023-08-28-mondoo-8.25-is-out.md b/releases/2023-08-28-mondoo-8.25-is-out.md new file mode 100644 index 000000000..9dc171cc2 --- /dev/null +++ b/releases/2023-08-28-mondoo-8.25-is-out.md @@ -0,0 +1,48 @@ +--- +slug: mondoo-8.25-is-out/ +title: Mondoo 8.25 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.25 is out! This release includes improvements to Compliance Hub, updated CIS Debian Linux 2.0 Benchmark, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🧹 IMPROVEMENTS + +### Improved Compliance Hub experience + +We've been busy this week rolling out fixes and improvements to make Compliance Hub an even better experience. + +- The first exception on the compliance exceptions tab now automatically expands for easier viewing. +- Compliance control pages now include tooltips for the completion column. +- Controls listed in exceptions now link to the individual control pages. +- The completion column in control pages now supports ascending and descending sorting. +- The completion percentage shown for frameworks now better reflects progress. +- There are improved recommendations when there are no checks or assets in a control. +- Compliance completion bars in Firefox now size properly at all window dimensions. + +### CIS Debian Linux 10 Benchmark 2.0 + +CIS Debian Linux 10 Benchmark is updated from 1.0 to 2.0. This is a massive update to the CIS benchmarks for Debian that includes the following changes: + +- 38 controls now have improved descriptions, audit instructions, and remediation steps. +- 34 new controls now follow the "Ensure service X is not installed" method instead of "Ensure service X is disabled". +- 58 legacy controls have been removed, including the existing "Ensure service X is disabled" controls mentioned above. + +## 🐛 BUG FIXES AND UPDATES + +- Don't show duplicate checks in the registry when a policy uses variants. +- Remove a black box displayed in the registry when a policy uses policy variants. +- Add three additional controls to the CIS Amazon Linux 2023 policies. +- Improved descriptions and remediation steps in the CIS Distribution Independent Linux Benchmark policies. +- Log errors for missing API support when scanning GCP organization and projects instead of failing. +- Give a unique name to `gcp-subnetwork` assets that includes the region in the name. +- Fix the grouping of GCP organizations and projects in the fleet view. +- Don't attempt to discover GCP projects that are marked for deletion. +- Don't detect GCP VM instances as VM images. diff --git a/releases/2023-09-06-mondoo-8.26-is-out.md b/releases/2023-09-06-mondoo-8.26-is-out.md new file mode 100644 index 000000000..2ad8eb956 --- /dev/null +++ b/releases/2023-09-06-mondoo-8.26-is-out.md @@ -0,0 +1,68 @@ +--- +slug: mondoo-8.26-is-out/ +title: Mondoo 8.26 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.26 is out! This release includes OCI asset configuration data, improved Compliance Hub results, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### OCI asset configuration overview data + +Mondoo now shows configuration data for Oracle Cloud Infrastructure (OCI) Tenancies. + +![OCI Asset Configuration Data](/img/releases/2023-09-06-mondoo-8.26-is-out/oci.png) + +### Filter compliance results by asset type + +Compliance Hub now has buttons that let you quickly filter compliance assets by platform type. Because these group buttons in the fleet view were so helpful to users, we added them to compliance as well. + +![Compliance Hub Asset Groups](/img/releases/2023-09-06-mondoo-8.26-is-out/asset_groups.png) + +## 🧹 IMPROVEMENTS + +### Improved Compliance Hub framework completion calculations + +When we set out to build Compliance Hub, we wanted to enable teams to quickly asses their compliance posture and track progress as they worked to secure systems and services. After launching Compliance Hub, we received insightful feedback from our users. Based on that feedback, this week we've improved how we report progress towards compliance completion. + +Previously we calculated a space's compliance completion by the percentage of all assets that were 100% compliant. In some circumstances, the completion status could remain 0% until the team deployed one last magical fix that made all assets compliant. + +Compliance Hub now calculates a space's completion as the average of all control completion percentages. Teams can now see incremental progress with each security improvement they deploy. We think this better reflects the true state of compliance and gives users the small wins they deserve as they work to secure their environments. + +![Improved Compliance Completion Tracking](/img/releases/2023-09-06-mondoo-8.26-is-out/compliance.png) + +### Improved CIS policy results + +We've reworked many of our bundled CIS benchmark policies to make them more resilient and improve the rendering of scan results: + +- Rework queries in CIS AWS Foundations to improve rendering of results. +- Improve reliability of Auditd, SELinux, and AppArmor checks in Linux policies. +- Improve the reliability of the `Ensure audit_backlog_limit is sufficient` check. +- Prevent failures in the `Ensure permissions on /etc/gshadow are configured` check when the file does not exist. +- Prevent failures in the `Ensure cron is restricted to authorized users` check when `/etc/cron.allow` does not exist. +- Expand the `Ensure HTTP server is not installed` check for Nginx and lighttpd in addition to Apache2. +- Add two additional controls to the CIS AWS Foundations benchmark policy. +- Improve reliability and result output of queries in the CIS GCP and GKE policies. +- Improve the query output of failing Kubernetes namespaces in the `Ensure that all Namespaces have Network Policies defined` check. +- Add missing audit blocks to checks in Kubernetes policies. + +## 🐛 BUG FIXES AND UPDATES + +- Improve rendering of GCP tiles in the fleet view when organizations, projects, and cloud assets have scanned. +- Fix sorting of assets by count in Security > Policies table when there are checks with 0 assets. +- Don't show empty Manufacturer or Product configuration data on cloud assets. +- Add the July 31, 2023 EOL date for FreeBSD 13.1. +- Remove the unused user settings option "Send me space alerts." +- Improve performance of reporting first time asset scans. +- Improve error messages when scanning GCP VM instances/snapshots outside of a GCP environment. +- Rename Oracle Cloud Infrastructure assets to Oracle Cloud Infrastructure Tenancy to better reflect that these are the OCI tenancies. +- Show policy descriptions in the registry. +- Show audit content in asset check pages. diff --git a/releases/2023-09-12-mondoo-8.27-is-out.md b/releases/2023-09-12-mondoo-8.27-is-out.md new file mode 100644 index 000000000..9bbfbbea3 --- /dev/null +++ b/releases/2023-09-12-mondoo-8.27-is-out.md @@ -0,0 +1,59 @@ +--- +slug: mondoo-8.27-is-out/ +title: Mondoo 8.27 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.27 is out! This release includes asset search, improved CIS policies, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Product-wide asset search + +Want to quickly find all your Debian systems or maybe the Mac laptop with a particular IT asset tag? Now you can with simple, yet powerful, search. + +![Search Results](/img/releases/2023-09-12-mondoo-8.27-is-out/search.png) + +Search your whole organization or limit results to a single Mondoo space. + +![Org or Space Search](/img/releases/2023-09-12-mondoo-8.27-is-out/org_vs_space.png) + +Need to craft a more advanced query? Use GitHub-style search syntax to write powerful search queries with ease. + +![Advanced Search Syntax](/img/releases/2023-09-12-mondoo-8.27-is-out/advanced_search.png) + +Learn more in the [Mondoo search docs](/platform/intel/search/). + +## 🧹 IMPROVEMENTS + +### Improved CIS policy results + +This week we further improved the reliability of our CIS benchmark policies, so you'll always have the best security compliance data for your infrastructure. + +- Fix failures in the `Ensure permissions on bootloader config are configured` on some Linux distributions. +- Fix failures in the `Ensure permissions on /etc/shadow- are configured` when the `/etc/shadow-` file doesn't exist. +- Update the `Ensure local login warning banner is configured properly` and `Ensure remote login warning banner is configured properly` checks to also ensure the `/etc/issue` file exists. +- Fix failures in the `Ensure permissions on /etc/issue are configured` check when the `/etc/issue` file does not exist. +- Fix failures in the `Ensure permissions on /etc/issue.net are configured` check when the `/etc/issue.net` file does not exist. +- Fix failures in the `Ensure permissions on /etc/gshadow- are configured` and `Ensure permissions on /etc/gshadow are configured` checks on Debian-based systems. +- Fix failures in the `Ensure audit log storage size is configured`, `Ensure audit logs are not automatically deleted`, and `Ensure system is disabled when audit logs are full` checks when the `/etc/audit/audit.conf` file does not exist. +- Fix failures in the `Ensure at/cron is restricted to authorized users` if the `/etc/cron.allow` or `/etc/at.allow` config files don't exist. +- Add PowerShell remediation snippets to all Windows policies. + +## 🐛 BUG FIXES AND UPDATES + +- Pages in compliance that show check details now include breadcrumbs that take you back to the main compliance page. +- Allow users to update the private key in OCI integrations. +- Remove GCP BigQuery table count from the asset configuration overview to prevent long scan times in complex environments. +- Show an improved empty state page on security and compliance check pages that have no assets. +- Update the AWS integrations list page design to match other integration pages. +- Improve the rendering of the integration list page when the last integration has been removed. +- Fix missing check summary counts on asset pages. +- Fix some CVE scores showing up as "None" when they should be "Critical". diff --git a/releases/2023-09-19-mondoo-8.28-is-out.md b/releases/2023-09-19-mondoo-8.28-is-out.md new file mode 100644 index 000000000..61b682660 --- /dev/null +++ b/releases/2023-09-19-mondoo-8.28-is-out.md @@ -0,0 +1,51 @@ +--- +slug: mondoo-8.28-is-out/ +title: Mondoo 8.28 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.28 is out! This release includes fine-grained GitLab scanning and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Fine grained scanning of GitLab assets + +Mondoo now offers more detailed scanning capabilities for GitLab assets. Instead of the previous single `gitlab` asset, Mondoo now provides separate `gitlab-group` and `gitlab-project` assets. When scanning your GitLab group, both cnspec and cnquery now automatically detect each project within your group. This enhanced granularity in asset scans improves the accuracy of scan results and allows for setting exceptions for specific projects. + +```text + cnspec scan gitlab --group lunalectric +→ loaded configuration from /Users/luna/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) +→ resolved assets resolved-assets=37 +→ synchronize assets + lunalectric / rockets_101 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + lunalectric / oxygen_generator ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + lunalectric / space_cats ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + lunalectric / rover_design ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + lunalectric / human_habitats ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + ... +``` + +## 🧹 IMPROVEMENTS + +### Runtime data in AWS Lambda function resource + +The `aws.lambda.function` MQL resource now includes a new `runtime` field that displays the runtime environment of the function. Thanks for this addition [@mbainter](https://github.com/mbainter)! + +## 🐛 BUG FIXES AND UPDATES + +- Fix a panic viewing some asset data in the asset resources tab. +- Add more user-friendly control titles to the SOC2 compliance framework. +- Show 0% check completion instead of “Unknown” when appropriate in compliance controls. +- Automatically close the search box when results display. +- Fix hardware systems incorrectly identifying as Azure VMs in asset configuration data. +- Improve reliability of the CIS `Ensure GDM login banner is configured` check on RHEL based systems. +- Prevent errors in the CIS `Ensure filesystem integrity is regularly checked` check when the `aide` package is not installed. diff --git a/releases/2023-09-26-mondoo-8.29-is-out.md b/releases/2023-09-26-mondoo-8.29-is-out.md new file mode 100644 index 000000000..50c0f9655 --- /dev/null +++ b/releases/2023-09-26-mondoo-8.29-is-out.md @@ -0,0 +1,59 @@ +--- +slug: mondoo-8.29-is-out/ +title: Mondoo 8.29 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 8.29 is out! This release includes improved table views, a new Inventory navbar item, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🧹 IMPROVEMENTS + +### Improved UI tables + +At Mondoo we take pride in not just collecting security information, but also displaying it in a meaningful way. If you've been using the product long enough you may have noticed we've gone through many iterations of our table view. It never felt quite right, until we introduced the new table in Compliance Hub that lets you easily view, sort, and multi-select data without pull down menus or multiple clicks. This week the team revamped all of our existing views to update them with this improved UX. Give it a try and keep an eye out for pagination improvements coming soon! + +![Improved multi-select](/img/releases/2023-09-26-mondoo-8.29-is-out/table.png) + +### Fleet is now Inventory + +When we first built Mondoo, the Fleet view was where you found all of your servers or workstations. As we expanded Mondoo to include Kubernetes workloads, cloud accounts, and even SaaS servers, this name made less sense. This week we renamed Fleet to Inventory to better represent Mondoo's cross-platform asset inventory capabilities. It's just a rename, but we think this will make it easier to jump right in and begin exploring all your inventory. + +![Fleet in the nav bar](/img/releases/2023-09-26-mondoo-8.29-is-out/nav.png) + +### Fedora 39 vulnerability scanning + +Fedora 39 is right around the corner, with the first beta released this week. Not to be left behind we've added Fedora 39 vulnerability scanning to Mondoo, so fire up cnspec and keep that beta install secure. + +### Improved compliance control descriptions + +We've expanded the data that can be displayed in Compliance Control pages, so you'll always have all the details to keep your infrastructure secure. This new view includes improved description rendering and the ability to expand extra long descriptions. + +![Compliance control descriptions](/img/releases/2023-09-26-mondoo-8.29-is-out/controls.png) + +## 🐛 BUG FIXES AND UPDATES + +- Reduce API usage for GitLab scans to avoid API rate-limiting. +- Avoid some authentication failures when scanning GitLab projects. +- Fix incorrect GitLab asset runtime values. +- Improve the usage instructions in the GitLab policy with project scanning instructions. +- Fix errors in the CIS `Ensure GDM login banner is configured` check when GDM files don't exist. +- Improve output of the CIS `Ensure journald is not configured to receive logs from a remote client` check. +- Add GitLab Group ID and Project ID to the asset configuration overview data. +- Fix failures loading certain assets in the console. +- Change the "Rational" sections in policies to "Rationale." +- Only run the `Linux Workstation Security` policy when `xorg-xserver` is installed to prevent it from evaluating servers. +- Update the registry to consistently refer to "query packs" as two words. +- Improve query descriptions in the `Azure Asset Inventory Pack` query pack. +- Remove a duplicate query from the `Azure Asset Inventory Pack` query pack. +- Fix some query pack and policy bundle categories/authors to make filtering in the registry more consistent. +- Support Rsyslog 7+ syntax in the CIS `Ensure rsyslog is configured to send logs to a remote log host` check. +- Don't display the `Assets` button in Kubernetes integration pages when no assets have been scanned. +- Allow updating the token in GitLab integrations. +- Don't display compliance control checkboxes when a user only has view permissions in a space. diff --git a/releases/2023-10-05-mondoo-9.0-is-out.md b/releases/2023-10-05-mondoo-9.0-is-out.md new file mode 100644 index 000000000..2f24a3c9d --- /dev/null +++ b/releases/2023-10-05-mondoo-9.0-is-out.md @@ -0,0 +1,321 @@ +--- +slug: mondoo-9.0-is-out/ +title: Mondoo 9.0 is out! +authors: + - name: Tim Smith + title: Mondoo Core Team + url: https://github.com/tas50 + - name: Dominik Richter + title: Mondoo Core Team + url: https://github.com/arlimus +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.0 is out! + +This is a major new release with exciting improvements to cnquery and cnspec's extensibility. + +This release includes a whole new cnquery and cnspec client, enhanced GitLab scanning, piles of new resource updates, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### All new cnspec and cnquery clients! + +Up to this point, both cnquery and cnspec had all connectors and providers built into one binary file each. This was great when we only had a few connectors and things were small. Recently, however, the binaries have exploded in size with every new technology that we added. Since both projects are designed to also run on small devices and embedded controllers, we wanted to change this approach for some time now. + +**This release includes entirely new binaries for cnquery and cnspec. Both are 90% smaller, re-usable, and extensible now!** + +1. **Provider plugins** + + When you connect to any technology (like AWS, Azure, K8s, etc) we now install a dedicated provider for that technology. This happens automatically for all core technologies we support: + + ```bash + > cnquery run aws -c asset.name + → installing provider 'aws' version=9.0.8 + → successfully installed aws provider path=/home/zero/.config/mondoo/providers/aws version=9.0.8 + → loaded configuration from /home/zero/.config/mondoo/mondoo.yml using source default + asset.name: "AWS Account lunalectric-management (177043759486)" + ``` + + These provider plugins are shared between cnquery and cnspec. If you install any provider for cnquery, it is available to cnspec and vice versa. + +2. **Automatic updates** + + Providers are automatically updated to the latest version of the current major release: + + ```bash + ~ $> cnspec shell aws + → found a new version for 'aws' provider installed=9.0.5 latest=9.0.8 + → successfully installed aws provider path=/home/zero/.config/mondoo/providers/aws version=9.0.8 + ... + ``` + + We avoid breaking changes during all major versions and will notify users of deprecations with a full major version of grace period, during which you can use deprecated features. + + For containers and restricted environments, you can turn off updates via `--auto-update=false` or `auto_update: false` in the config file. This will prevent existing providers from getting updated and prevent new providers from being installed. + + For example: If you install cnquery or cnspec on a container, you can pre-install all providers you aim to use with it. At the end of the build process you then deactivate the auto-update in the config file. + +3. **Custom providers** + + You can view all providers via the `providers` subcommand: + + ```bash + > cnquery providers + + → builtin (found 2 providers) + + core 9.0.1 + mock 9.0.0 with connectors: mock + + → /home/zero/.config/mondoo/providers (found 4 providers) + + aws 9.0.8 with connectors: aws + azure 9.0.4 with connectors: azure + gitlab 9.0.4 with connectors: gitlab + os 9.0.8 with connectors: local, ssh, winrm, vagrant, container, docker, filesystem + + → /opt/mondoo/providers has no providers + ``` + + This command not only prints the current providers and versions, but it also shows the locations in which providers are installed. + + In the coming days we will share written and video guides on how to create your very own provider. In the meantime, feel free to check out cnquery's "[providers](https://github.com/mondoohq/cnquery/tree/main/providers)" folder with lots of examples! All providers are distributed as binaries with a proto interface, so you can write them in Go or any other language with GRPC support. + + You can now create custom providers and install them everywhere you want to run them! This also includes restricted code that may use your company's internal APIs and which you don't want to publish. Mondoo will support the schema-upload shortly so you can see results in our UI without exposing any code. + +### Hassle-free asset discovery in GitLab scans + +We've removed the pain of manually discovering assets throughout your GitLab environment with new hassle-free asset discovery. The GitLab Mondoo Platform integration and the `cnspec` CLI now include options to automatically discover all GitLab projects, groups, and even Terraform files within your GitLab projects. Set it once and continuously scan your entire environment to secure your software supply chain and the Terraform files that define your infrastructure. + +![GitLab Setup](/img/releases/2023-10-05-mondoo-9.0-is-out/gitlab.png) + +New cnspec GitLab discovery options: + +```bash +cnspec scan gitlab --token TOKEN <- returns all groups the user has access to +cnspec scan gitlab --token TOKEN --discover groups <- returns the defined group and all subgroups of that group +cnspec scan gitlab --token TOKEN --discover projects <- returns all the projects discovered in all the groups the user has access to +cnspec scan gitlab --token TOKEN --discover terraform <- returns all the Terraform files in all the projects discovered in all the groups the user has access to +``` + +### Set asset annotations during client login + +Asset annotations let you add additional information on assets that can't necessarily be detected using Mondoo resources. Traditionally, these annotations have been set in the console on each asset page, but now you can automate setting annotations during the client registration process. This allows you to pass in data like employee workstation asset tags from an MDM solution. + +Setting annotations during the client login: + +```shell +cnspec login --token --annotation assetid=MONDOO1234 --annotation location=PDX +``` + +![Asset notations](/img/releases/2023-10-05-mondoo-9.0-is-out/annotations.png) + +## 🧹 IMPROVEMENTS + +### New resources and resource fields + +What fun is a Mondoo release without new resources and fields to secure your infrastructure? For version 9.0, we went big with 46 new fields and resources. Stay tuned for updated policies and new asset inventory capabilities using some of these new additions. + +#### `aws.ec2.instance` + +- New `httpEndpoint` property: Status of the IMDS endpoint enabled on the instance +- New `stateTransitionTime` property: Time when the last state transition occurred + +#### `aws.elb` + +- New `createdTime` property: Date the load balancer was created +- New `vpcID` property: The ID of the VPC where the load balancer is located + +#### `aws.rds.dbInstances` + +- Improve default values for use in `cnquery shell` +- New `storageAllocated` property: The amount of storage, in GiB, provisioned on the instance +- New `storageIops` property: The storage IOPS provisioned on the instance +- New `storageType` property: The type of storage provisioned on the instance +- New `availabilityZone` property: Availability zone where the instance exists +- New `engineVersion` property: The version of the database engine for this DB instance +- New `createdTime` property: The creation date of the RDS instance + +#### `aws.s3.bucket` + +- New `createdTime` property: Date the bucket was created + +#### `aws.vpc` + +- Fix `routeTables` to return the correct values for the VPC +- New `cidrBlock` property: IPv4 CIDR block of the VPC +- New `instanceTenancy` property: How instance hardware tenancy settings are enforced on instances launched in this VPC +- New `endpoints` subresource with additional fields: + - `id`: Unique ID of the endpoint + - `type`: Type of the endpoint + - `vpc`: VPC the endpoint exists in + - `region`: Region the VPC exists in + - `serviceName`: The name of the endpoint service + - `policyDocument`: The policy document associated with the endpoint, if applicable + - `subnets`: The subnets for the (interface) endpoint +- New `subnets` subresource with additional fields: + - `arn`: ARN of the subnet + - `id`: Unique ID of the subnet + - `cidrs`: A list of CIDR descriptions + - `mapPublicIpOnLaunch`: Whether instances launched in this subnet receive a public IPv4 address + +#### `azure.subscription.monitorService.activityLog` + +- New `subscriptionId` property: The subscription identifier + +#### `azure.subscription.monitorService.diagnosticsetting` + +- New `storageAccountId` property: ID of the diagnostic setting storage account + +#### `azure.subscription.monitorService.logprofile` + +- New `storageAccountId` property: ID of the log profile storage account + +#### `github.organization` + +- New `membersCanForkPrivateRepos` property: Whether members can fork private repositories to their own GitHub account + +#### `github.repository` + +- New `hasDiscussions` property: Whether the repository has discussions +- New `isTemplate` property: Whether the repository is an organization repository template + +#### `gitlab.project` + +- New `allowMergeOnSkippedPipeline` property: Allow merging merge requests when a pipeline is skipped +- New `archived` property: Is the project archived? +- New `autoDevopsEnabled` property: Is the Auto DevOps feature enabled? +- New `containerRegistryEnabled` property: Is the container registry feature enabled? +- New `createdAt` property: Create date of the project +- New `defaultBranch` property: Default git branch +- New `emailsDisabled` property: Disable project email notifications +- New `fullName` property: The full name of the project, including the namespace +- New `issuesEnabled` property: Is the issues feature enabled? +- New `mergeRequestsEnabled` property: Is the merge request feature enabled? +- New `mirror` property: Is the project a mirror? +- New `onlyAllowMergeIfAllDiscussionsAreResolved` property: Only allow merging merge requests if all discussions are resolved +- New `onlyAllowMergeIfPipelineSucceeds` property: Only allow merging merge requests if the pipelines succeed +- New `packagesEnabled` property: Is the packages feature enabled? +- New `requirementsEnabled` property: Is the requirements feature enabled? +- New `serviceDeskEnabled` property: Is the Service Desk feature enabled? +- New `snippetsEnabled` property: Is the snippets feature enabled? +- New `webURL` property: URL of the project +- New `wikiEnabled` property: Is the wiki feature enabled? + +#### `gitlab.group` + +- New `emailsDisabled` property: Disable group email notifications +- New `preventForkingOutsideGroup` property: Don't allow forking projects outside this group +- New `mentionsDisabled` property: Disable group mentions within issues and merge requests +- New `webURL` property: URL of the group + +#### `k8s.namespace` + +- New `kind` property: Kubernetes object type + +#### `rsyslog.conf` + +- New `path` property: Path for the main rsyslog file and search + +#### `terraform.settings` + +- New `backend` property: Backend configuration information + +### Improved query packs + +- The Azure Asset Inventory Pack now includes a list of all public IP addresses in Azure subscriptions. +- The Mondoo Asset Count query pack now includes asset counts for all GCP and GitLab assets, including all new GCP assets discovered when scanning with the `--discover all` flag. + +### MQL improvements + +Mondoo 9.0 further improves MQL so you can more easily query assets in your environment and write custom security policies. + +#### Simple accessors for unstructured data + +Accessing structures in JSON, Terraform, and Kubernetes has often been painful: + +```coffee +dict["one"]["more"]["field"] +``` + +To make it easier to access these nested fields, we've introduced a new optional syntax. This is well-known from other scripting languages (like JS and TS): + +```coffee +dict.one.more.field +``` + +This mode continues to support our GraphQL foundation: + +```coffee +dict { + one { more.field } + two + ... +} +``` + +It has helped simplify many use-cases for Terraform and Kubernetes: + +```coffee +# OLD: +tfblock { + _["attributes"]["account_id"]["value"] +} + +# NEW: +tfblock { + attributes.account_id.value +} +``` + +#### Empty type + +With the new `empty` type, there's no need for complex logic to check for different kinds of empty values. Each of these common situations evaluate as `empty`: + +```coffee +[] == empty +null == empty +'' == empty +{} == empty +``` + +A single query can now check for an empty value in any type of data: + +```coffee +users.list == empty +``` + +### Expanded platform EOL data + +- Add Fedora 39: November 12, 2024 +- Add Google COS 109: September 1, 2025 + +## 🐛 BUG FIXES AND UPDATES + +- Significantly improve querying time of ports on Linux systems. If you query ports without accessing its related process, it will now return in a fraction of the time. We are working to further speed this up for use-cases with related processes. +- Remove errors for `files.find` when no results were returned. Do not return an empty file object. +- Improve output of GCP resources in the cnquery shell. +- Resolve errors running the CIS `Ensure default user shell timeout is 900 seconds or less` check. +- Resolve errors running the CIS `Ensure lockout for failed password attempts is configured` check. +- Resolve errors running the CIS `Ensure password hashing algorithm is SHA-512 or yescrypt` check. +- Resolve errors running the CIS `Ensure password reuse is limited` check. +- Fix false positive in the CIS `Ensure lockout for failed password attempts is configured` check. +- Don't show buttons to accept a compliance exception if the user only has viewer privileges in the space. +- Don't show `null` at the end of compliance framework and control descriptions. +- Show the asset completion percentage on compliance control pages. +- Fix invalid CloudFormation links on the AWS integration page. +- Avoid repeatedly generating registration tokens in the organization/space page. +- Fix incorrect integrations listed on the Google Workspace integration page. +- Add missing label examples in the search page. +- Change all `unknown` and `unrated` check statuses to `unscored`. +- Improve the rendering of Compliance Hub control distribution graphs with large numbers of controls. +- In the registry, fix platform icons not displaying correctly for policies that use variants. +- Allow updating the GCP service account configuration file in GCP integrations. +- Fix scanning of untagged Amazon ECR images. +- Fix some check links in Compliance Hub not loading. +- Fix EC2 instance detection when IMDSv1 is disabled. diff --git a/releases/2023-10-12-mondoo-9.1-is-out.md b/releases/2023-10-12-mondoo-9.1-is-out.md new file mode 100644 index 000000000..b064841cf --- /dev/null +++ b/releases/2023-10-12-mondoo-9.1-is-out.md @@ -0,0 +1,200 @@ +--- +slug: mondoo-9.1-is-out/ +title: Mondoo 9.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.1 is out! This release includes support for private GitLab instance scanning, new Azure networking resources, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Continuous scanning of hosted GitLab instances + +Running your own private GitLab instance? No problem. Now Mondoo can continuously scan your private GitLab instances, automatically discovering sub-groups, projects, and even IaC code in projects. + +### New and expanded Azure/MS365 resources + +New resources and fields expand the ability to secure and inventory your Microsoft cloud assets with Mondoo. We've exposed critical networking information in Azure as well as service principal and enterprise application data in Azure AD (now Microsoft Entra ID), giving you the data you need for custom security policies or compliance audits. + +#### New Resources + +- `azure.subscription.networkService.appSecurityGroup`: Azure Network Application Security Group +- `azure.subscription.networkService.backendAddressPool`: Azure Network Backend Address Pool +- `azure.subscription.networkService.bgpSettings`: Azure Network BGP Settings +- `azure.subscription.networkService.bgpSettings.ipConfigurationBgpPeeringAddress`: Azure BGP Settings IP Configuration +- `azure.subscription.networkService.firewall`: Azure Network Firewall +- `azure.subscription.networkService.firewall.applicationRule`: Azure Network Firewall Application Rule +- `azure.subscription.networkService.firewall.ipConfig`: Azure Network Firewall IP Configuration +- `azure.subscription.networkService.firewall.natRule`: Azure Network Firewall NAT Rule +- `azure.subscription.networkService.firewall.networkRule`: Azure Network Firewall Network Rule +- `azure.subscription.networkService.firewallPolicy`: Azure Network Firewall Policy +- `azure.subscription.networkService.frontendIpConfig`: Azure Network Frontend IP Configuration +- `azure.subscription.networkService.inboundNatPool`: Azure Network Inbound NAT Pool +- `azure.subscription.networkService.inboundNatRule`: Azure Network Inbound NAT Rule +- `azure.subscription.networkService.loadBalancer`: Azure Network Load Balancer +- `azure.subscription.networkService.loadBalancerRule`: Azure Network Load Balancer Rule +- `azure.subscription.networkService.natGateway`: Azure Network NAT gateway +- `azure.subscription.networkService.outboundRule`: Azure Network Outbound Rule +- `azure.subscription.networkService.probe`: Azure Network Probe +- `azure.subscription.networkService.subnet` Azure Network Subnet +- `azure.subscription.networkService.virtualNetwork`: Azure Network Virtual Network +- `azure.subscription.networkService.virtualNetworkGateway.connection`: Azure Network Virtual Network Gateway Connection +- `azure.subscription.networkService.virtualNetworkGateway.ipConfig`: Azure Network Virtual Network Gateway IP Configuration +- `azure.subscription.networkService.virtualNetworkGateway`: Azure Network Virtual Network Gateway +- `microsoft.serviceprincipal.assignment`: Microsoft Service Principal Assignment + +#### New `microsoft.serviceprincipal` fields + +- `type`: Service principal type +- `name`: Service principal name +- `tags`: Service principal tags +- `enabled`: Whether users can sign into the service principal (application) +- `homepageUrl`: Service principal homepage URL +- `termsOfServiceUrl`: Service principal terms of service URL +- `replyUrls`: Service principal reply URLs +- `assignmentRequired`: Whether users or other apps must be assigned to this service principal before using it +- `visibleToUsers`: Whether the service principal is visible to users +- `notes`: Service principal notes +- `assignments`: The list of assignments (users and groups) this service principal has + +## 🧹 IMPROVEMENTS + +### Expanded AWS resource fields + +We're back again this week with 25 new AWS resource fields, giving you the information you need to inventory and secure your assets: + +#### aws.ec2.instance + +- `vpcArn`: The ARN of the VPC associated with the instance + +#### aws.efs.filesystem + +- `availabilityZone`: Availability zone where the file system exists if a specific AZ is defined +- `createdAt`: Creation timestamp + +#### aws.es.domains + +- `elasticsearchVersion`: The version of Elasticsearch running +- `domainId`: The Elasticsearch domain ID +- `domainName`: The Elasticsearch domain name + +#### aws.secretsmanager.secrets + +- `createdAt`: Creation date of the secret +- `description`: Description of the secret +- `lastChangedDate`: The last date the secret was changed +- `lastRotatedDate`: The last date the secret was automatically rotated +- `nextRotationDate`: The date of the next secret rotation +- `primaryRegion`: The primary region of the secret +- `rotationEnabled`: Whether rotation is enabled for the secret + +#### aws.redshift.clusters + +- `availabilityZone`: Availability zone where the cluster exists +- `clusterRevisionNumber`: Specific revision number of the database in the cluster +- `clusterStatus`: Current state of this cluster. Values: available, creating, deleting, rebooting, renaming, and resizing +- `clusterSubnetGroupName`: Name of the subnet group that is associated with the cluster +- `clusterVersion`: Version of the Redshift engine running on the cluster +- `createdAt`: Cluster creation timestamp +- `dbName`: Name of the initial database that was created when the cluster was created +- `enhancedVpcRouting`: Whether enhanced VPC routing is enabled for the cluster traffic +- `masterUsername`: Master user name for the cluster +- `nextMaintenanceWindowStartTime`: The next scheduled maintenance window +- `numberOfNodes`: The number of nodes in the cluster +- `vpcId`: The ID of the VPC where the cluster is running + +### New `related` property in `terraform.block` resource + +Discover all resources related to a given Terraform resource. + +For example, given the following Terraform snippet: + +```hcl +resource "aws_iam_role" "dev-resources-iam-role" { + name = "SSM-role-${local.name}-${random_string.suffix.result}" + # ... +} + +resource "aws_iam_instance_profile" "dev-resources-iam-profile" { + name = "ec2_ssm_profile-${local.name}-${random_string.suffix.result}" + role = aws_iam_role.dev-resources-iam-role.name + # ... +} +``` + +Using this MQL: + +```coffee +terraform.resources { + nameLabel + related { + nameLabel + } +} +``` + +We get: + +```coffee +terraform.resources: [ + 0: { + nameLabel: "aws_iam_instance_profile" + related: [ + 0: { + nameLabel: "aws_iam_role" + } + ] + } + 1: { + nameLabel: "aws_iam_role" + related: [ + 0: { + nameLabel: "aws_iam_instance_profile" + } + ] + } +] +``` + +### Improved results pagination + +The larger your infrastructure, the larger the results of your security scans. Now it's easier to navigate those large results no matter where you are in the Mondoo Console. We've reworked our results pagination to make it more consistent and to allow you show more results per page when you need to view those extra large data sets. + +![Asset pagination](/img/releases/2023-10-12-mondoo-9.1-is-out/pagination.png) + +### Expanded openSUSE Linux CVE data + +Mondoo now includes data on CVEs in openSUSE Linux 15.2 through the latest 15.6 pre-releases. + +## 🐛 BUG FIXES AND UPDATES + +- Fix links from "Top Recommended Actions" on asset pages to go directly to check pages. +- Update multi-selection in CI/CD pages to match the updated design throughout the console. +- Fix inconsistent table header cell padding in the Compliance Hub pages. +- Improve rendering of the organization dashboards to prevent lines covering text. +- Fix asset name detection in cloud instances. +- Fix provider auto update CLI flag failures. +- Fix CIS Kubernetes policies to properly apply to kubelets. +- Fix CIS iptables checks to work with iptables >= 1.8.9 format. +- Fix failures running Kubernetes Cluster and Workload Security's "Pods should not run Kubernetes dashboard" query. +- Improve wording in the `cnspec scan --help` command and don't print duplicate providers. +- Fix failures running the `aws.es.domains` resource. +- Fix `dns.fqdn` not returning an FQDN when scanning the system via SSH or Vagrant. +- Avoid adding nil Terraform blocks when fetching related blocks. +- Fix errors fetching processes that would be printed on the command line. +- Fix `cnspec scan` to run a local scan like cnspec < 9.0. +- Provide a friendly error message when scanning unsupported Kubernetes API releases. +- Fix asset overview only showing the first available AWS tag. +- Add back missing Scan Overview section in the asset overview. +- Make sure AWS-specific information displays on the asset overview page for scanned instances. +- Improve the reliability of CIS sudo-related checks. +- Fix failures running the CIS `Ensure default user umask is configured` and `Ensure default user umask is 027 or more restrictive` checks on some distributions. +- Don't show the button to upload new policies or query packs if the user only has viewer privileges in the space. +- Add back the Audit section in asset check pages. diff --git a/releases/2023-10-16-mondoo-9.2-is-out.md b/releases/2023-10-16-mondoo-9.2-is-out.md new file mode 100644 index 000000000..faf8c550e --- /dev/null +++ b/releases/2023-10-16-mondoo-9.2-is-out.md @@ -0,0 +1,134 @@ +--- +slug: mondoo-9.2-is-out/ +title: Mondoo 9.2 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.2 is out! This release includes support for securing Atlassian services, a new HTTP resource, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Secure Atlassian services + +Our new Atlassian cnquery/cnspec provider allows you to query the configuration of Atlassian's suite of products, including Jira and Confluence. + +Use the Atlassian provider with `cnquery shell` to connect to your Atlassian URL using a user or admin token: + +```bash +cnquery shell atlassian --host https://luna.atlassian.net --admin-token FOO +``` + +Some example data you can query using this provider and resources: + +```coffee +atlassian.admin.organizations: [ + 0: atlassian.admin.organization id="4j1ack42-6c9d-1552-k55a-c2j536j31066" +] + +cnquery> atlassian.jira.users +atlassian.jira.users: [ + 0: atlassian.jira.user id="5dd64082af96bc0efbe55103" + 1: atlassian.jira.user id="630db2cd9796033b256bc349" + 2: atlassian.jira.user id="5cb4ae0e4b97ab11a18e00c7" + 3: atlassian.jira.user id="557058:f58131cb-b67d-43c7-b30d-6b58d40bd077" + 4: atlassian.jira.user id="712020:1bdc8553-00fa-4e1c-8d14-317bbafece92" + 5: atlassian.jira.user id="6183312e3e3753006f8c7baf" + 6: atlassian.jira.user id="626b14efc72f140069fc636c" + 7: atlassian.jira.user id="5b70c8b80fd0ac05d389f5e9" + 8: atlassian.jira.user id="5e6a646f5df5fb0cfee33989" + 9: atlassian.jira.user id="557058:cbc04d7b-be84-46eb-90e4-e567aa5332c6" + 10: atlassian.jira.user id="712020:45d1ce6f-7b4b-4190-8d93-1d709d7203f9" + 11: atlassian.jira.user id="5d53f3cbc6b9320d9ea5bdc2" + 12: atlassian.jira.user id="557058:950f9f5b-3d6d-4e1d-954a-21367ae9ac75" + 13: atlassian.jira.user id="5cf112d31552030f1e3a5905" + 14: atlassian.jira.user id="712020:f4b1ca94-1967-48c6-9c22-b04a9e999fae" + 15: atlassian.jira.user id="6035864ce2020c0070b5285b" + 16: atlassian.jira.user id="60e5a86a471e61006a4c51fd" + 17: atlassian.jira.user id="5d9b2860cd50b80dcea8a5b7" + 18: atlassian.jira.user id="5d9afe0010f4800c341a2bba" + 19: atlassian.jira.user id="626b1500b31e6f006863c12d" +] +cnquery> atlassian.jira.users.first.name +atlassian.jira.users.first.name: "Lunalectric Integration User" +``` + +Learn more about the capabilities of this new provider and its resources in the [Atlassian resource pack documentation](/mql/resources/atlassian-pack/). + +Stay tuned for an Atlassian policy bundle that lets you continuously secure your business' Atlassian usage. + +### New `http` resource + +Use our new `http` resource to continuously secure and assure compliance for HTTP endpoints used by your business. + +```coffee +http.get('https://console.mondoo.com') { statusCode version header{ xFrameOptions xContentTypeOptions referrerPolicy sts csp['base-uri'] } } +``` + +Returns: + +```coffee +http.get: { + header: { + csp[base-uri]: "'self'" + xContentTypeOptions: "nosniff" + referrerPolicy: "same-origin" + xFrameOptions: "SAMEORIGIN" + sts: http.header.sts maxAge=365 days includeSubDomains=true preload=false + } + version: "2.0" + statusCode: 200 +} +``` + +Learn more about these new fields at our [http.get](/mql/resources/network-pack/http.get/) and [http.header](/mql/resources/network-pack/http.header/) documentation. + +## 🧹 IMPROVEMENTS + +### Expanded Azure resources + +Azure networking resources continue to receive updates to expose critical information for security and compliance within your Azure infrastructure: + +#### azure.subscription.networkService.virtualNetworkGateway.ipConfig + +- New `publicIpAddress` property: The public IP address associated with this IP configuration + +#### azure.subscription.networkService.natGateway + +- New `publicIpAddresses` property: List of public IP addresses the NAT gateway is associated with + +#### azure.subscription.networkService.virtualNetwork + +- New `dhcpOptions` property: Virtual network DHCP options +- New `enableDdosProtection` property: Indicates if DDoS protection is enabled for all the protected resources in the virtual network. +- New `enableVmProtection` property: Indicates if VM protection is enabled for all the subnets in the virtual network + +### More AWS console links + +AWS console links let you jump directly from Mondoo scan results to the scanned assets in the AWS console. Use these handy shortcuts to make updates quickly based on Mondoo findings. We've expanded this support with direct console links from Mondoo DynamoDB, KMS, CloudTrail, and EBS volumes assets. + +## 🐛 BUG FIXES AND UPDATES + +- Add form value validation to the Organization Settings -> Authentication page. +- Improve rendering of the form in the Organization Settings -> Authentication page. +- Improve the performance of AWS account scans. +- Fix failures scanning AWS DynamoDB tables. +- Fix failures fetching metadata and connection settings in the Azure Web App Service. +- Fix a failure that could occur when querying `terraform.files`. +- Don't use Microsoft's UPX binary compression for cnquery and cnspec, as some antivirus software incorrectly flags this as malware. +- Improve handling of null values in resources. +- Use `asset.fqdn` as the asset name for the `network` and `arista` providers. +- Use proxy servers to fetch provider updates when available. +- Fix the copy to table button on CVE pages failing to copy. +- Fix a failure creating Jira integrations. +- Improve compliance framework mappings to show additional data. +- Fix incorrect titles on some Microsoft KBs. +- Adjust the EOL dates for Amazon Linux 2018 and Debian 9/12. +- Don't show checks in policies that are not enabled in Compliance Hub control pages. +- Rework queries in CIS Windows 10/11/2016/2019/2022 policies to improve reliability diff --git a/releases/2023-10-24-mondoo-9.3-is-out.md b/releases/2023-10-24-mondoo-9.3-is-out.md new file mode 100644 index 000000000..259e2c0c0 --- /dev/null +++ b/releases/2023-10-24-mondoo-9.3-is-out.md @@ -0,0 +1,97 @@ +--- +slug: mondoo-9.3-is-out/ +title: Mondoo 9.3 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.3 is out! This release includes support for new Azure resources, updated macOS policies, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New Azure resources + +- New resource [`azure.subscription.networkService.applicationGateway`](/mql/resources/azure-pack/azure.subscription.networkService.applicationGateway/) +- New resource [`azure.subscription.networkService.applicationFirewallPolicy`](/mql/resources/azure-pack/azure.subscription.networkService.applicationFirewallPolicy/) +- New resource [`azure.subscription.advisorService`](/mql/resources/azure-pack/azure.subscription.advisorService/) +- New field `rbacAuthorizationEnabled` in `azure.subscription.storageService` + +## 🧹 IMPROVEMENTS + +### Updated Packer provider for Mondoo cnspec + +[Our HashiCorp Packer cnspec provisioner](https://developer.hashicorp.com/packer/integrations/mondoohq/cnspec/latest/components/provisioner/cnspec) now uses cnspec 9.x, giving you access to the latest providers and resources directly in your OS image build pipelines. + +### Updated CIS macOS benchmark policies + +Mondoo now ships with the latest macOS CIS benchmark policies, which include expanded remediation steps, improved descriptions, and more resilient queries: + +- Updated macOS 11 benchmark version to 3.1 +- Updated macOS 12 benchmark version to 2.1 +- Updated macOS 13 benchmark version to 1.1 +- New macOS 14 benchmark (preview) 1.0 + +### Expanded compliance evidence gathering + +We've revamped several of our bundled Mondoo policies with expanded descriptions, improved queries, and best of all, compliance mappings that help you automatically gather evidence no matter what the asset type: + +- TLS/SSL Security Baseline +- Platform End-of-Life Policy +- Platform Vulnerability Policy + +### cnquery run --info flag + +A new `--info` flag in cnquery allows you to see which resources and fields your MQL queries use. + +For example, running this query against the sshd config: + +`cnquery run -c "sshd.config.params[Version] == mondoo.version" --info` + +Returns this list of resources and fields: + +```text +Resources and Fields used: +- sshd.config + - params +- mondoo + - version +``` + +## 🐛 BUG FIXES AND UPDATES + +- Fix failing ARN data queries on `aws-ec2-volume` assets. +- Fix asset names from local scans not reporting to the platform. +- Ensure some empty values in the `http` resource return `null` values instead of empty strings. +- Improve help text in cnspec and cnquery. +- Fix incorrect compliance check counts in controls. +- Replace the deprecated CIS Supply Chain Management benchmark policy with the CIS GitHub Level 1 benchmark policy. +- Add missing Atlassian provider help to cnspec and cnquery. +- Fix failures querying SCIM data in the Atlassian provider. +- Fix fetching a list of GitHub users in an organization. +- Use the GitLab group ID instead of name when fetching data to prevent some failure cases. +- Fix asset names not capturing properly for some Azure and GCP assets. +- Report friendly errors when the Atlassian provider does not have the necessary permissions to query data. +- Add `asset.type` field to EBS filesystem scans. +- Prevent query errors when a nonexistent registry key is queried. +- Ensure cnspec and cnquery use proxies for all traffic when specified. +- Properly display the asset platform in the status command. +- Fix failures retrieving secrets from vaults. +- Fix failures scanning some Kubernetes manifest files. +- Fix failures setting the AWS platform ID under some circumstances. +- Group Raspbian assets as operating systems in the console. +- Improve rendering of user avatars in the console. +- Use consistent table layouts in the Mondoo Vulnerability Database and the space invitation pages to better match other tables in the console. +- Save sorting and filtering options in the Mondoo Vulnerability Database when reloaded or bookmarked. +- Fix failures applying asset annotations passed on the command line. +- Improve errors from systemd when cnspec fails to start due to missing binaries or configuration files. +- Don't include the vulnerabilities section on the CLI for unsupported platforms. +- Update the policy generated by the `cnspec bundle init` command to be cnspec 9.x compatible. +- Improve the query results in the Mondoo Kubernetes Cluster and Workload Security policy and remove unnecessary data queries. +- Improve SOC2 policy check mappings for CIS policies. +- Add support for macOS systems in the Platform End of Life policy. diff --git a/releases/2023-10-27-mondoo-9.4-is-out.md b/releases/2023-10-27-mondoo-9.4-is-out.md new file mode 100644 index 000000000..05813cb81 --- /dev/null +++ b/releases/2023-10-27-mondoo-9.4-is-out.md @@ -0,0 +1,56 @@ +--- +slug: mondoo-9.4-is-out/ +title: Mondoo 9.4 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.4 is out! This release includes a number of new stability improvements, as well as a number of bug fixes. + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +We encourage you to upgrade to this release as soon as possible since it contains a number of stability improvements. + +## 🧹 IMPROVEMENTS + +This release introduces a heartbeat for all providers, which guarantees that terminated providers don't leave behind stale processes in memory. It requires the use of v9.1.x or higher version for all providers. These will update automatically. If you have deactivate automatic updates, please manually update your providers. Please also make sure to update cnquery and cnspec to 9.4.0 since older version of cnquery and cnspec do not use the new heartbeat functionality. + +To verify that you are on the latest version: + +``` +cnspec version +cnspec 9.4.0 (76a83f8, 2023-10-27T00:24:13Z) +``` + +To verify that all provider versions are greater than 9.1.0: + +``` +cnspec providers list + +→ builtin (found 2 providers) + + core 9.1.0 + mock 9.0.0 with connectors: mock + +→ /opt/mondoo/providers (found 6 providers) + + aws 9.1.0 with connectors: aws + azure 9.1.0 with connectors: azure + gcp 9.1.0 with connectors: gcp + os 9.1.0 with connectors: local, ssh, winrm, vagrant, container, docker, filesystem + terraform 9.1.0 with connectors: terraform + vsphere 9.1.0 with connectors: vsphere +``` + +For Windows and Linux services we improved the reliability of the services for cases where cnspec crashes. This is achieved by making sure that the service does not restart too often. The default restart limit is 3 times. + +## 🐛 BUG FIXES AND UPDATES + +- Fix `--asset-name` flag not setting asset names properly. +- Fix failures compiling query packs that used variants. +- Improve failures messages when MQL resources or fields cannot be found. +- Fix failures reading "Never" time in raw data JSON data. diff --git a/releases/2023-11-01-mondoo-9.5-is-out.md b/releases/2023-11-01-mondoo-9.5-is-out.md new file mode 100644 index 000000000..310852030 --- /dev/null +++ b/releases/2023-11-01-mondoo-9.5-is-out.md @@ -0,0 +1,193 @@ +--- +slug: mondoo-9.5-is-out/ +title: Mondoo 9.5 is out! +author: Christoph Hartmann +author_title: Mondoo Core Team +author_url: https://github.com/chris-rock +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.5 is out! This release includes VMware vSphere security advisory detection, expanded AWS/Azure/Okta resources, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### VMware vSphere CVE detection + +Mondoo now includes support for tracking CVEs and security advisories on VMware vSphere installations, so you can keep your most important on-premises assets secure. You'll automatically see CVE/advisory information on VMware vSphere assets in the Mondoo Console and you can scan assets manually on the command line to view this data as well: + +```shell +cnquery shell vsphere USER@luna.dmz -p FOO + ___ _ __ __ _ _ _ ___ _ __ _ _ + / __| '_ \ / _` | | | |/ _ \ '__| | | | +| (__| | | | (_| | |_| | __/ | | |_| | + \___|_| |_|\__, |\__,_|\___|_| \__, | + mondoo™ |_| |___/ interactive shell + +cnquery> asset.vulnerabilityReport +asset.vulnerabilityReport: { + platform: { + build: "18778458" + name: "vmware-vsphere" + release: "7.0.3" + title: "VMware vSphere 7.0.3" + } + published: "2023-10-26T13:18:39Z" + stats: { + advisories: {} + cves: {} + exploits: {} + packages: {} + } +} +asset.vulnerabilityReport: { + advisories: [ + 0: { + ID: "VMSA-2022-0004" + Mrn: "//vadvisor.api.mondoo.app/advisories/VMSA-2022-0004" + cves: [ + 0: { + ID: "CVE-2021-22041" + Mrn: "//vadvisor.api.mondoo.app/cves/CVE-2021-22041" + cvss: [ + 0: { + score: 4.600000 + source: "cve://nvd/2021" + vector: "4.6/AV:L/AC:L/Au:N/C:P/I:P/A:P" + } + ] + worstScore: { + score: 4.600000 + source: "cve://nvd/2021" + vector: "4.6/AV:L/AC:L/Au:N/C:P/I:P/A:P" + } + } + +... +``` + +## 🧹 IMPROVEMENTS + +### New AWS resource fields and defaults + +The `aws.vpc.subnet` resource now includes information on the subnet's availability zone so you can better understand where subnets are located. + +```coffee +cnquery> aws.vpcs.first.subnets{*} +aws.vpcs.first.subnets: [ + 0: { + arn: "arn:aws:ec2:ap-south-1:177043123456:subnet/subnet-b231234" + id: "subnet-b231234" + cidrs: "172.31.16.0/20" + mapPublicIpOnLaunch: true + defaultForAvailabilityZone: true + availabilityZone: "ap-south-1c" + } +... +``` + +We've also improved the default values returned by many AWS resources to give you better output in the cnquery shell as well as query packs. These updated defaults expose AWS resource IDs, regions, availability zones, and other metadata that makes understanding your AWS infrastructure easier with Mondoo. Enable the [AWS Asset Inventory Pack](https://mondoo.com/registry/namespace/mondoohq/querypacks/mondoo-asset-inventory-aws) in your spaces to see this improved asset inventory data today. + +### Improved resource output for Azure + +New default values in Azure resources make exploring asset configuration in the cnquery shell or the resource explorer better than ever. You'll see new improved output on Azure VMs that show OS and hardware types. We've also expanded NIC and disk resources to show information such as the disk size/type and the NIC MAC address type. + +```coffee +cnquery> azure.subscription.computeService.vms.first +azure.subscription.computeService.vms.first: azure.subscription.computeService.vm name="Windows-VM-5n6o" location="eastus" properties.hardwareProfile.vmSize="Standard_DS2_v2" properties.storageProfile.osDisk.osType="Windows" + +cnquery> azure.subscription.computeService.disks.first +azure.subscription.computeService.disks.first: azure.subscription.computeService.disk name="Windows-VM-OsDisk-5n6o" location="eastus" properties.osType="Windows" properties.diskSizeGB=127.000000 properties.diskState="Attached" + +cnquery> azure.subscription.networkService.interfaces.first +azure.subscription.networkService.interfaces.first: azure.subscription.networkService.interface name="Windows-VM-NIC-5n6o" location="eastus" properties.macAddress="60-45-BD-D7-7E-53" properties.nicType="Standard" +``` + +### Expanded Okta group and role capabilities + +We've expanded the capabilities of our Okta provider and resources to make it easier to query your Okta configuration. You can now query Okta groups along with their roles and members using the `okta.groups` resource: + +```coffee +cnspec> okta.groups.where(roles.one(type =="SUPER_ADMIN")) { name roles { * } members members.length < 2 } +okta.groups.where: [ + 0: { + roles: [ + 0: { + created: 2023-04-08 22:11:00 +0200 CEST + lastUpdated: 2023-04-08 22:11:00 +0200 CEST + assignmentType: "GROUP" + id: "ABCD1234" + type: "SUPER_ADMIN" + status: "ACTIVE" + label: "Super Administrator" + } + ] + name: "Super Admins" + members.length < 2: true + members: [ + 0: okta.user profile.email="ben@example.com" + ] + } +] +``` + +You can also check which permissions are assigned to custom roles using the new `okta.customRoles` resource: + +```coffee +cnspec> okta.customRoles { * } +okta.customRoles: [ + 0: { + label: "Custom Role" + id: "abc12345678910" + description: "Custom Role" + permissions: [] + } +] +``` + +### Improved host scanning + +We've improved host scanning behavior with updates to Mondoo's `host` provider as well as the `http` and `tls` resources used when scanning domains and IPs. These updates make it easier to get started scanning hosts, even when the hosts aren't the best behaving. + +- Default to HTTPS when no protocol information was specified on the CLI. For example, with `cnquery shell host mondoo.com` cnquery now assumes HTTPS. +- Improve handling of timeouts when checking TLS certs. +- Improve error handling and logging when connecting to hosts, parsing TLS certificates, and checking TLS on non-TLS hosts. + +### Updated macOS CIS Benchmark policies + +It's been just a week since we last updated macOS CIS benchmark policies, but we're back again with new updates including the official release of the CIS macOS 14.0 benchmark. These new benchmarks include improved descriptions/remediation text, more robust queries, and additional checks for Intel Macs. Be sure to check out the improved results in these releases: + +- CIS Apple macOS 11.0 Big Sur Benchmark v4.0.0 +- CIS Apple macOS 12.0 Monterey Benchmark v3.0.0 +- CIS Apple macOS 13.0 Ventura Benchmark v2.0.0 +- CIS Apple macOS 14.0 Sonoma Benchmark v1.0.0 + +### Improved Windows EOL dates + +Windows EOL data in Mondoo Platform now tracks Microsoft's enterprise and education support track, which tends to be about one year later than consumer EOL dates. We've also added Windows 10 22H2, Windows 11 22H2, and Windows 11 23H2 releases so you can track upcoming EOL dates for all your Windows workstations. + +### Improved field copy behavior + +Sometimes a user suggests a fix you just can't pass up. User [@xorima](https://github.com/xorima) told us the copy icon in our text fields was hard to read and made copying important text like client installation commands difficult. We retooled the icon to make it better stand out against the text and have a more clear action when the copy was complete. Thanks [@xorima](https://github.com/xorima)! + +![New copy behavior](/img/releases/2023-11-01-mondoo-9.5-is-out/copy.gif) + +## 🐛 BUG FIXES AND UPDATES + +- Group Photon OS assets as operating systems in the Mondoo Console. +- Fix data queries not always showing the policy or query pack where they were defined. +- Don't error if the same query pack is specified more than once on the command line. +- Don't fail if a query pack has no queries to run after platform filters are applied. +- Properly filter out unsupported queries in a query pack to avoid failures. +- Map checks from the CIS Distribution Independent Linux benchmark to compliance framework controls. +- Fix cleanup of old assets scanned by the Mondoo Kubernetes operator. +- Handle empty report data in the JUnit cnspec reporter. +- Don't fail scanning a container registry if the container's platform cannot be detected. +- Fix a failure running the `cnspec vuln` command. +- Fix an error fetching the `azure.subscription.mySql.server` field. +- Fix Microsoft 365 assets grouping under **Unclassified Assets** in the console inventory page. +- Don't show the **Schedule Now** button for Jira integrations. +- On the Organization page, sort spaces by name instead of space ID. diff --git a/releases/2023-11-07-mondoo-9.6-is-out.md b/releases/2023-11-07-mondoo-9.6-is-out.md new file mode 100644 index 000000000..1489c2f66 --- /dev/null +++ b/releases/2023-11-07-mondoo-9.6-is-out.md @@ -0,0 +1,117 @@ +--- +slug: mondoo-9.6-is-out/ +title: Mondoo 9.6 is out! +authors: + - name: Tim Smith + title: Mondoo Core Team + url: https://github.com/tas50 + - name: Charles Johnson + title: Mondoo Core Team + url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.6 is out! This release includes Console asset query packs, Subject Alternative Name support for certificates, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Asset inventory at your fingertips + +Query pack data now displays directly in the Mondoo Console for all assets. Explore asset configuration with the two dozen out-of-the-box query packs available in the registry. If you don't find what you're looking for there, write your own query packs to expose additional asset inventory information directly in the console. + +Browse the results of asset inventory query packs with a new **Data Queries** tab on the individual asset view. + +![Asset data queries](/img/releases/2023-11-07-mondoo-9.6.0-is-out/asset_data_queries.png) + +## 🧹 IMPROVEMENTS + +### Expanded `certificate` resource capabilities + +The `tls.certificates` resource now supports the PKIX Subject Alternative Name (SAN) extension, as well as the Subject Key Identifier (SKID) extension. + +```coffee +cnspec shell host google.com +cnspec> tls.certificates { sanExtension { * }} +tls.certificates: [ + 0: { + sanExtension: { + uris: [] + extension: pkix.extension id = 5842ac625349147af543f8049f60497ca270c0412667bbeb1042482e805069f9:2.5.29.17 + emailAddresses: [] + dnsNames: [ + 0: "*.google.com" + 1: "*.appengine.google.com" + 2: "*.bdn.dev" + 3: "*.origin-test.bdn.dev" + 4: "*.cloud.google.com" + 5: "*.crowdsource.google.com" + 6: "*.datacompute.google.com" + 7: "*.google.ca" + 8: "*.google.cl" + .. + ] + } + } + 1: { + sanExtension: null + } + 2: { + sanExtension: null + } +] +``` + +### Expanded cnspec status information + +Running `cnspec status` now prints the version number of the latest available release and a list of all installed providers. If the currently installed and latest releases don't match, the status indicates that a newer version is available for download. + +```text +./cnspec status +→ no Mondoo configuration file provided, using defaults +→ Platform: ubuntu +→ Version: 22.04 +→ Hostname: localhost +→ IP: 192.168.178.32 +→ Time: 2023-11-01T13:36:01+01:00 +→ Version: 9.6.0 (API Version: 9) +→ Latest Version: 9.6.1 +! A newer version is available +→ Installed Providers: terraform | aws | atlassian | gcp +→ Outdated Providers: terraform | aws | atlassian +→ API ConnectionConfig: https://us.api.mondoo.com +→ API Status: SERVING +→ API Time: 2023-11-01T12:36:02Z +→ API Version: 9 +``` + +## 🐛 BUG FIXES AND UPDATES + +- Vulnerabilities results no longer show assets that are not impacted. +- Fix colorblind mode being enabled for all users. +- Add data validation for AWS Access Key ID and Secret Access Key values in the S3 export integration. +- Improve asset links in Compliance Hub to go directly to the check or data query on the asset. +- Fix `tls.certificates` returning null data incorrectly. +- Fix AWS EC2 instance names not properly registering. +- Improve default values in the `azure.subscription.monitorService.applicationInsight` resource. +- Don't display a policy's main documentation when viewing the variant. +- Improve form validation for integrations to only run after all text has been entered. +- Improve formatting on the policy recommendation pages for integrations. +- Fix text input boxes that could not be read in the Azure integration. +- Improve the error message when an organization or space user cannot be removed. +- Don't fail when running policies from the public registry that use asset filters. +- Don't fail if a query packs has no description. +- Don't fail if a policy group has checks, but not data queries. +- Fix a failure when scanning AWS EBS volumes. +- Fix incorrect runtime information being reported for AWS assets. +- Fix service checks to work on masked systemd services and services that end in `.service` +- Expand SOC2 policy coverage +- Improve data returned from the Azure Inventory Query Pack. +- Improve the reliability of queries in the CIS AKS Benchmarks policies. +- Wrap instead of cutting off long property values in the registry. +- Use the custom image defined in the Kubernetes operator's `MondooAuditConfig` section. +- Fix garbage collection of old Kubernetes assets not running. +- Fix scanning of GKE nodes from the Kubernetes operator. diff --git a/releases/2023-11-14-mondoo-9.7-is-out.md b/releases/2023-11-14-mondoo-9.7-is-out.md new file mode 100644 index 000000000..3fd2aac95 --- /dev/null +++ b/releases/2023-11-14-mondoo-9.7-is-out.md @@ -0,0 +1,137 @@ +--- +slug: mondoo-9.7-is-out/ +title: Mondoo 9.7 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.7 is out! This release includes a new compliance UI, expanded resources, and even more CVE data! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### New compliance exceptions UI + +We've reworked the compliance exceptions system to make it easier to understand when exceptions have been set and what that means for your compliance data collection. + +Each control includes a new **Set Exception** button so you can quickly create exceptions directly from framework control pages. + +![Set Exception](/img/releases/2023-11-14-mondoo-9.7.0-is-out/set_exception.png) + +For controls with an exception set, the UI now communicates which type of exception has been set: snooze or disable. It gives a quick description of how the exception affects compliance data collection. The details of the exception are also shown directly on the control page, allowing you to accept, reject, or delete the exception without needing to dig through the exceptions tab. + +![Active exception state](/img/releases/2023-11-14-mondoo-9.7.0-is-out/active_exception_state.png) + +### Run local query packs from cnspec + +Want to quickly test a custom query pack you've written? Now it's easier than ever because you can run a local query pack directly from cnspec: + +```text +cnspec scan -f example-pack.mql.yaml +→ no provider specified, defaulting to local. Use --help to see all providers. +→ loaded configuration from /Users/tsmith/.config/mondoo/mondoo.yml using source default +→ using service account credentials +→ discover related assets for 1 asset(s) + +Asset: Luna-Laptop.local +---------------------- + +Data queries: +packages.where.list: [ + 0: package name="ssh" version="" +] +services.where.list: [ + 0: service name="com.openssh.ssh-agent" running=true enabled=true type="launchd" +] +sshd.config.params: { + AcceptEnv: "LANG LC_*" + AuthorizedKeysFile: ".ssh/authorized_keys" + Subsystem: "sftp /usr/libexec/sftp-server" + UsePAM: "yes" +} + +Scanned 1 asset + +macOS + U Luna-Laptop.local +``` + +## 🧹 IMPROVEMENTS + +### Atlassian asset grouping + +Atlassian admin, Jira, Confluence, and SCM assets scanned with cnspec are now grouped as Atlassian assets in the console. This helps you quickly find all your Atlassian assets. + +![Atlassian Asset Group](/img/releases/2023-11-14-mondoo-9.7.0-is-out/atlassian.png) + +### Ubuntu 23.10 EOL/CVE detection + +Ubuntu 23.10 is out, and Mondoo is ready with EOL reporting and CVE detection now available for this latest Ubuntu release. See our blog post [What's New in Security for Ubuntu 23.10](https://blog.mondoo.com/whats-new-in-security-for-ubuntu-23.10) to learn more about this release's great new security features. + +### Raspbian 11 and 12 CVE detection + +cnspec scans on Raspbian 11.x and 12.x releases now include important CVE data on both the CLI and in the console, so you can keep your Raspberry Pi hobby and IoT projects secure. + +### Better application of CIS Distribution Independent Linux Benchmark policy + +The CIS Distribution Independent Linux Benchmark policy is a fantastic alternative Linux security policy to use when your operating system distribution or specific version is not supported by one of the main CIS Linux benchmarks. Thanks to new filters, you can now apply this policy in any space and rest assured it will only apply to systems for which more specific CIS benchmark policies aren't available. This means that now you can always have security and compliance data available, even when you're running distros that are a bit off the beaten path, such as non-LTS Ubuntu releases, Arch Linux, or Raspbian. + +### New AWS resource fields + +AWS resources include new default values to improve data pack queries and navigation in the cnquery/cnspec shell. The resources also have many new fields to expose valuable asset inventory data: + +[aws.cloudfront.distribution](/mql/resources/aws-pack/aws.cloudfront.distribution/) + +- enabled +- httpVersion +- isIPV6Enabled +- priceClass + +[aws.dynamodb.table](/mql/resources/aws-pack/aws.dynamodb.table/) + +- createdAt +- deletionProtectionEnabled +- globalTableVersion +- id + +[aws.accessanalyzer.analyzer](/mql/resources/aws-pack/aws.accessanalyzer.analyzer/) + +- createdAt +- lastResourceAnalyzed +- lastResourceAnalyzedAt + +[aws.autoscaling.group](/mql/resources/aws-pack/aws.autoscaling.group/) + +- region + +[aws.backup.vault](/mql/resources/aws-pack/aws.backup.vault/) + +- createdAt +- encryptionKeyArn +- locked +- region + +## 🐛 BUG FIXES AND UPDATES + +- Ensure asset groups display correctly as new assets are added or deleted. +- Show the correct status badges on the Managed Clients page. +- Fix incorrect EBS volume scan regions. +- Fix a failure to display asset scores for EBS volume scans. +- Add the ability to list processes on Windows systems in the `ports.listening` resource. +- Fix EKS node checks not correctly executing in the CIS Amazon Elastic Kubernetes Service (EKS) Benchmark policies. +- Improve reliability of checks within the CIS Amazon Elastic Kubernetes Service (EKS) Benchmark policies. +- Fix failures in CIS macOS Benchmark policies' "Ensure Pop-up Windows Are Blocked" and "Ensure Show Status Bar Is Enabled" checks. +- Fix VMware vSphere CVE detection with cnspec 8.x clients. +- Return a 100 (A) score when no CVEs are detected on a system. +- Fix CIS rsyslog checks to fail instead of erroring when the rsyslog config is not found. +- Improve chrony configuration detection in the Operational Best Practices for Time Synchronization policy. +- Better detect when journald is running in the `Ensure journald is not configured to receive logs from a remote client` check. +- Improve titles of queries in multiple query packs. +- Fix failures in some JSON data exports due to malformed JSON data. +- Fix failures detecting the platform on some remote scans. +- Improve shell help content for many resources. diff --git a/releases/2023-11-21-mondoo-9.8-is-out.md b/releases/2023-11-21-mondoo-9.8-is-out.md new file mode 100644 index 000000000..e276aeb73 --- /dev/null +++ b/releases/2023-11-21-mondoo-9.8-is-out.md @@ -0,0 +1,140 @@ +--- +slug: mondoo-9.8-is-out/ +title: Mondoo 9.8 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.8 is out! This release includes automated compliance inventory gathering, AIX support, a new CVE view, plus a whole lot more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Automated compliance inventory gathering + +Your audit goes beyond security checks; now so does Mondoo, with continuous infrastructure inventory gathering mapped automatically to top compliance frameworks. Compliance Hub controls now include a Data Queries tab listing inventory data from query packs. This inventory data is gathered automatically from the cnspec CLI or from integrations like AWS, GitHub, or Kubernetes. Inventory data fills key requirements from auditors to ensure your infrastructure is compliant, such as gathering AWS VPC configuration to prove SOC 2 CC6.1.5 or asset inventory data for CC6.1.1. + +SOC 2 control with data queries: + +![SOC 2 control with data queries](/img/releases/2023-11-21-mondoo-9.8.0-is-out/soc2_control.png) + +Drill into a data query to see the query detail and the assets for which it gathered data: + +![Data queries page](/img/releases/2023-11-21-mondoo-9.8.0-is-out/data_query.png) + +### New result scoring design + +The list of security findings was often presented and sorted in a confusing way. Successful security checks would often be listed above failed checks and errors and skipped checks were mixed into the list at seemingly random. This was due to the previous prioritization focusing more on the impact of checks, rather than the success or failure of its finding. + +![Scoring example](/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_example.png) + +The new system is focused on prioritizing the most impactful actions. We now sort everything by failed checks first, followed by errors, then successful checks, and finally anything that is ignored or disabled. This means that the list now prioritizes the most critical failed findings. + +We also improved the colors. If it looks like a successful check, it is now consistently green. If it looks like a red alarm, it's definitely a critical failed check. + +Here's an overview of this new scoring system: + +![Scoring overview](/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_overview.png) + +### New asset scorecard design + +When progress isn't lightning-fast, it's important to track small wins. With this in mind, we've redesigned our asset policy cards to better show progress made towards securing systems. The new design removes the score number from the cards and instead shows the number of passing and failing checks, so you can track progress without the need to dive into the list of all checks on an asset. + +![Asset with new scorecards](/img/releases/2023-11-21-mondoo-9.8.0-is-out/score_cards.png) + +### New security policies page + +When we built the security policies page, our goal was to give users a single location where they could see all asset scores for policies in their space and control how those policies ran. + +This week, we updated that page to make it easier to identify failing assets for each policy quickly: + +![Policies Page](/img/releases/2023-11-21-mondoo-9.8.0-is-out/policies.png) + +The updated page also allows you to disable a policy or set it to preview without leaving the policies page: + +![Changing Policies](/img/releases/2023-11-21-mondoo-9.8.0-is-out/policy_changes.png) + +### New CVE view + +_Out with the old and in with the new_ is the theme of the Mondoo 9.8 release, so why not update one of our oldest components? It's time for a whole new CVE page! A fresh, new design makes it easier to understand the impact of a CVE. + +![CVE Page](/img/releases/2023-11-21-mondoo-9.8.0-is-out/cve.png) + +### AIX 7.1 and 7.2 support + +Kubernetes and serverless may be all the rage, but mainframes power the world. Now you can secure your AIX mainframes with Mondoo. We've updated cnquery and cnspec with new remote scan capabilities for AIX and bundled CIS AIX 7.1 and 7.2 benchmark policies, allowing you to quickly evaluate the security and compliance of your AIX systems. + +![AIX Asset](/img/releases/2023-11-21-mondoo-9.8.0-is-out/aix_asset.png) + +### New BSI SiSyPHuS Windows 10 policy + +Mondoo now includes a new BSI SiSyPHuS Windows 10 policy based on BSI's [SiSyPHuS Win10 - Study on system design, logging, hardening and security features in Windows 10 - Configuration Recommendations](https://www.bsi.bund.de/EN/Service-Navi/Publikationen/Studien/SiSyPHuS_Win10/AP11/SiSyPHuS_AP11_node.html) document. This policy includes 363 queries with impact scores and remediation steps. The checks map to all Mondoo supported compliance frameworks, including BSI's Cloud Computing Compliance Controls Catalog (C5) framework. + +## 🧹 IMPROVEMENTS + +### Expanded resource fields + +Whether you're writing custom security policies or exploring your infrastructure with cnquery shell, it's important to have all the data possible for assets. This week, we further expand some of our most popular assets with additional fields, giving you greater insight into your infrastructure. + +#### atlassian.admin.organization.managedUser + +- `productAccess` - Product access +- `status` - Status + +#### aws.autoscaling.group + +- `minSize` - The minimum number of instances to scale down to +- `maxSize` - The maximum number of instances to scale up to +- `defaultCooldown` - The time to wait after scaling up / down before the next scaling event is started +- `launchConfigurationName` - The name of the launch configuration +- `healthCheckGracePeriod` - The grace period in seconds before an instance with a failing health check will be replaced +- `createdAt` - Time when the autoscaling group was created + +#### aws.ssm.instance + +- `platformType` - The type of for the SSM Instance, as described by AWS (Windows, Linux, etc) +- `platformVersion` - Platform version for the SSM Instance, as described by AWS + +#### aws.ec2.networkacl.entry + +- `ruleNumber` - The rule number +- `cidrBlock` - CIDR block for the ACL entry + +#### microsoft + +- `tenantDomainName` - The connected tenant's default domain name + +### package / python.package + +- `purl` - Package URL. See the [purl-spec repository](https://github.com/package-url/purl-spec) for more information on this data. + +### Expanded EOL date data + +Mondoo includes the latest EOL dates for distributions so you can ensure your systems receive critical security updates. + +- macOS 11 EOL date of September 26, 2023 +- FreeBSD 12.4 EOL date of December 31, 2023 + +## 🐛 BUG FIXES AND UPDATES + +- Fix the coloring of code blocks in print mode. +- Rename SOC2 to SOC 2 in policies and frameworks. +- Improved reliability in Windows CIS security checks. +- Improve SOC 2 security check mapping. +- Fix select all checkbox behavior in compliance frameworks to only select the visible controls on the page. +- Use the time datatype instead of string in the Atlassian provider for better resource output. +- `cnspec bundle fmt` now preserves comments on the first line of the policy file. +- Update providers when cnspec is scanning as a service (serve mode). +- Fix CIS `Ensure 'User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode' is set to 'Prompt for consent on the secure desktop'` check failures. +- Don't show the same policy twice for a single check in Compliance Hub. +- Fix example scan flags for Kubernetes on the workstation integration page. +- Only show the create space button on the organizations page if the user has permission to create a space. +- Don't require all data to be reentered when updating a Jira integration. +- Improve the performance of loading CVE and advisory data. +- Add new preview HTTP Security policy. +- Improve the reliability of organization dashboard graphs for some spaces. diff --git a/releases/2023-11-28-mondoo-9.9-is-out.md b/releases/2023-11-28-mondoo-9.9-is-out.md new file mode 100644 index 000000000..da47da93a --- /dev/null +++ b/releases/2023-11-28-mondoo-9.9-is-out.md @@ -0,0 +1,134 @@ +--- +slug: mondoo-9.9-is-out/ +title: Mondoo 9.9 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.9 is out! This release includes experimental SBOM support, platform/package CPE data, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Experimental SBOM generation + +cnquery includes new experimental support for generating software bills of materials (SBOMs). You can generate SBOMs against your local system or containers, mounted filesystems, vagrant boxes, and remote systems over SSH or WinRM. + +By default the SBOM prints in list format in the CLI: + +```bash +cnquery sbom local +→ This command is experimental. Please report any issues to https://github.com/mondoohq/cnquery. +→ loaded configuration from /etc/opt/mondoo/mondoo.yml using source default +→ discover related assets for 1 asset(s) + + lunalectric-test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + + +pypi/Jinja2/2.11.3 /usr/lib/python3/dist-packages/Jinja2-2.11.3.egg-info/PKG-INFO +pypi/LibAppArmor/2.13.6 /usr/lib/python3/dist-packages/LibAppArmor-2.13.6.egg-info +pypi/Mako/1.1.3 /usr/lib/python3/dist-packages/Mako-1.1.3.egg-info/PKG-INFO +pypi/Markdown/3.3.4 /usr/lib/python3/dist-packages/Markdown-3.3.4.egg-info/PKG-INFO +pypi/MarkupSafe/1.1.1 /usr/lib/python3/dist-packages/MarkupSafe-1.1.1.egg-info/PKG-INFO +pypi/PyGObject/3.38.0 /usr/lib/python3/dist-packages/PyGObject-3.38.0.egg-info/PKG-INFO +pypi/PyYAML/5.3.1 /usr/lib/python3/dist-packages/PyYAML-5.3.1.egg-info +deb/acl/2.2.53-10 +deb/acpid/1:2.0.32-1 +deb/adduser/3.118+deb11u1 +deb/amd64-microcode/3.20230808.1.1~deb11u1 +deb/anacron/2.3-30 +... +``` + +Using the `--output` flag you can control the output format with support for `cyclonedx-json`, `cyclonedx-xml`, `spdx-json`, `spdx-tag-value`, and `table` formats. + +```bash +cnquery sbom local --output spdx-json +→ This command is experimental. Please report any issues to https://github.com/mondoohq/cnquery. +→ loaded configuration from /etc/opt/mondoo/mondoo.yml using source default +→ discover related assets for 1 asset(s) + + lunalectric-test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + +{ + "spdxVersion": "SPDX-2.3", + "dataLicense": "", + "SPDXID": "SPDXRef-DOCUMENT", + "name": "", + "documentNamespace": "", + "creationInfo": { + "creators": [ + "Tool: cnquery" + ], + "created": "2023-11-28T22:47:07Z" + }, + "packages": [ + { + "name": "Jinja2", + "SPDXID": "SPDXRef-Package-pypi-Jinja2-2e4a538b3939365a", + "versionInfo": "2.11.3", + "packageFileName": "/usr/lib/python3/dist-packages/Jinja2-2.11.3.egg-info/PKG-INFO", + "downloadLocation": "", + "filesAnalyzed": false, + "licenseDeclared": "2.11.3", + "externalRefs": [ + { + "referenceCategory": "SECURITY", + "referenceType": "cpe23Type", + "referenceLocator": "cpe:2.3:a:jinja2_project:jinja2:2.11.3:*:*:*:*:*:*:*" + }, + { + "referenceCategory": "SECURITY", + "referenceType": "purl", + "referenceLocator": "pkg:pypi/Jinja2@2.11.3" + } + ] + }, + ... + +``` + +## 🧹 IMPROVEMENTS + +### Platform and package CPE data + +To power our new SBOM capabilities, Mondoo's `asset` and `package` resources now include Common Platform Enumeration (CPE) data that uniquely identifies the platform of the system and packages. Learn more about CPE on the [NIST National Vulnerability Database CPE page](https://nvd.nist.gov/products/cpe). + +Asset CPEs: + +```coffee +cnquery> asset.cpes +asset.cpes: [ + 0: cpe uri="cpe:2.3:o:debian:debian_linux:11.8:*:*:*:*:*:*:*" +] +``` + +OS package CPEs: + +```coffee +cnquery> packages{name cpes} +packages.list: [ + 0: { + name: "acl" + cpes: [ + 0: cpe uri="cpe:2.3:a:acl:acl:2.2.53-10:amd64:*:*:*:*:*:*" + ] + } +``` + +## 🐛 BUG FIXES AND UPDATES + +- Fix authentication failures in some AWS resources. +- Allow updating tokens in GitLab integrations. +- Fix a false positive in the CIS macOS `Ensure Show Wi-Fi status in Menu Bar Is Enabled` check. +- Fix the CIS Distribution Independent Linux policy `Ensure updates, patches, and additional security software are installed` check to run properly on Debian-based systems. +- Show the number of assets for a policy, not the number of checks, on the Security -> Policies page. +- Open CVE source links in new windows. +- Remove extra white space on CVE pages with short descriptions. +- Improve reliability of queries in the Mondoo Linux Security policy +- Improve query titles in asset inventory query packs. diff --git a/releases/2023-12-05-mondoo-9.10-is-out.md b/releases/2023-12-05-mondoo-9.10-is-out.md new file mode 100644 index 000000000..e4763abc8 --- /dev/null +++ b/releases/2023-12-05-mondoo-9.10-is-out.md @@ -0,0 +1,102 @@ +--- +slug: mondoo-9.10-is-out/ +title: Mondoo 9.10 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.10 is out! This release includes compliance evidence PDF reports, exceptions for policies/assets, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Compliance evidence report generation in PDF format + +Prove compliance to your auditors with PDF evidence reports. Now you can export reports from any control page or export an archive containing controls for your whole compliance framework. + +![Generate a report](/img/releases/2023-12-05-mondoo-9.10-is-out/generate.png) + +These reports are specifically formatted for auditors and ready for attachment to GRC systems or other auditor evidence upload solutions. + +![View a report](/img/releases/2023-12-05-mondoo-9.10-is-out/view.png) + +We've got you covered with secure storage as well, so you can share reports between team members without insecure email attachments or unauthenticated URLs. + +![Store a report](/img/releases/2023-12-05-mondoo-9.10-is-out/store.png) + +### Exceptions for assets and policies + +The power and visibility of compliance exceptions is now available outside of compliance: You can now set exceptions for checks on assets and security policies. Asset and policy exceptions enable cross-team visibility and allow more granularity in how you prioritize your work. + +Improve visibility with detailed explanations of why exceptions were created, approvals, and detailed logging. You never have to ask again who made a change and why. + +![Improved visibility](/img/releases/2023-12-05-mondoo-9.10-is-out/visibility.png) + +Prioritize your work with time-based snoozing: Turn off a check temporarily while you work on more important issues, but don't let it fall through the cracks. + +![Improved Granularity](/img/releases/2023-12-05-mondoo-9.10-is-out/granularity.png) + +### New CIS Azure Compute Microsoft Windows Server 2019 and 2022 benchmarks + +Secure your Windows Azure environment using the new Azure Compute Microsoft Windows Server 2019 and 2022 benchmarks. These benchmarks specifically target the security of Windows 2019 and 2022 Datacenter editions, using Azure's secure configuration guide settings. Each benchmark consists of domain and member server policies containing over 200 Azure-tailored checks. + +### New CIS ESXi 8.0 Benchmark v1.0.0 + +Are you upgrading your VMware deployments to version 8.0? Mondoo has you covered with the new CIS ESXi 8.0 Benchmark version 1.0. This updated policy includes 86 checks tailored to the latest VMware release. + +## 🧹 IMPROVEMENTS + +### Updated RHEL/Oracle/Rocky/AlmaLinux 8 Benchmarks + +Keep your RHEL 8 compatible servers secure with the new 3.0 release of CIS benchmarks for Red Hat Enterprise Linux, Oracle Linux, AlmaLinux, and Rocky Linux. These new policies are complete reworks of the existing CIS benchmarks with hundreds of new and updated checks. + +### MQL containsNone with an array of regular expressions + +Now you can avoid long, chained MQL queries that check multiple regular expressions. Instead, specify an array of regular expressions: + +```coffee +field.containsNone( [ /a/, /.*b/ ] ) +``` + +## 🐛 BUG FIXES AND UPDATES + +- Provide friendly error messages if invalid time values for token expiration are entered. +- Clarify what search values are supported on the compliance controls page. +- Improve table headings for affected assets on the vulnerabilities pages. +- Don't reset the pagination back to the first page when enabling/disabling a policy in the registry. +- Update all policy icons to be full-color for consistency. +- Fix different scan behaviors between `container` and `docker` providers that caused failures when scanning containers. +- Don't fail when using `.contains` in queries if the dict value is empty. +- Fix container image asset names changing between 8.x and 9.x client scans. +- Fix an error in the `aws.iam.policies` resource when fetching `attachedGroups` data. +- Support quitting the cnquery/cnspec shells with the `quit` command. +- Fix failures when running `cnquery login`. +- Add additional data to the `aws.iam.attachedPolicies` resource. +- Improve `cnspec bundle fmt` to format markdown in documentation fields and optionally sort checks by name. +- Fix a failure in cnspec if two policies use the same query UID. +- Don't show rejected exceptions as active exceptions when scanning in cnspec. +- Fix the width of the scanning progress bar to show the score result. +- Fix the`Ensure updates, patches, and additional security software are installed` query in the CIS Distribution Independent Linux policy to work with Photon. +- Fix a failure when running `asset{*}` on some non-operating system assets. +- Improve the titles of many inventory query pack queries. +- Improve the form validation behavior in Azure, Okta, OCI, Microsoft 365, and GitHub integration pages. +- Add missing badges and a description to the Slack integration setup page. +- Fix failures in the `aws.acm.certificates` resource. +- Don't run the TLS security policy on non-host network assets. +- Ensure that AIX, FreeBSD, Fedora, Kali Linux, Scientific Linux, Pop!\_OS, and EuroLinux assets are grouped as operating systems in inventory. +- Fix rejected compliance exceptions still showing as exceptions on the controls. +- Improve performance throughout the Mondoo Console. +- Add EOL detection for EuroLinux assets. +- Add platform vulnerability detection for the Windows 23H2 release. +- Ensure audit logs are generated for space create/delete events and add logging when changing space and organization owners. +- Improve asset group display for GitLab assets. +- Fix a failure running the `cnspec vuln` command. +- Display all spaces when an organization includes more than 25 spaces. +- Allow the network provider to run with an inventory file. +- Improve the policy page UI when a policy is enabled, but hasn't yet run on any assets. +- Fix a UI error when generating a non-expiring registration token. diff --git a/releases/2023-12-12-mondoo-9.11-is-out.md b/releases/2023-12-12-mondoo-9.11-is-out.md new file mode 100644 index 000000000..74b420447 --- /dev/null +++ b/releases/2023-12-12-mondoo-9.11-is-out.md @@ -0,0 +1,199 @@ +--- +slug: mondoo-9.11-is-out/ +title: Mondoo 9.11 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.11 is out! This release includes continuous domain/IP scanning, new and expanded AWS resources, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Continuous domain and IP scanning + +New continuous domain and IP scanning ensures the security and compliance of your external web properties. + +![Domain Scan Integration](/img/releases/2023-12-12-mondoo-9.11-is-out/domain_integration.png) + +Scan these endpoints using out-of-the-box SSL/TLS, DNS, and HTTP security policies to ensure your properties meet security best practices. Protect against common endpoint security mistakes such as: + +- Certificates nearing their expiration date +- Insecure TLS releases or ciphers +- Missing `X-Content-Type-Options` in HTTP headers + +![Domain Scan Result](/img/releases/2023-12-12-mondoo-9.11-is-out/domain_scan.png) + +Domain and IP scans don't stop with just security. These scan results are automatically mapped to compliance controls such as SOC 2 type 2's CC6.7.2: Uses Encryption Technologies or Secure Communication Channels to Protect Data. This provides continuous compliance for your web properties. + +### New AWS Web Application Firewall (WAF) resource + +Secure Amazon's Web Application Firewall (WAF) service with new Mondoo WAF resources. These resources allow you to query WAF ACLs, Rules, RuleGroups, and IP Sets. + +See the [AWS Resource Pack documentation](/mql/resources/aws-pack/) for a complete list of new WAF resources. + +### Load policies from AWS S3 buckets + +Want to run custom policies across multiple systems without storing those policies in the Mondoo Platform's Registry? Now you can load policies in cnspec directly from AWS S3 buckets. + +Specify an entire bucket and cnspec picks the correct policy: + +```bash +cnspec scan -f s3://mysupernotexistingbucket1234567 +``` + +Or specify the exact policy file in your bucket: + +```bash +cnspec scan -f s3://mysupernotexistingbucket1234567/packs.mql.yaml +``` + +## 🧹 IMPROVEMENTS + +### New fields and defaults in AWS resources + +#### aws.ec2.instance + +- Improve default values +- New `enaSupported` field +- New `hypervisor` field +- New `instanceLifecycle` field +- New `rootDeviceType` field +- New `rootDeviceName` field +- New `architecture` field + +#### aws.ec2.volume + +- Improve default values +- New `multiAttachEnabled` field +- New `throughput` field +- New `size` field +- New `iops` field + +#### aws.ec2.snapshot + +- Improve default values +- New `volumeSize` field +- New `description` field +- New `encrypted` field + +#### aws.cloudwatch.logGroups + +- New `retentionInDays` field + +#### aws.ec2.securityGroups + +- Improve default values + +#### aws.ec2.networkacl + +- New `isDefault` field +- New `tags` field + +### New GitHub pull request query capabilities + +New fields in the GitHub resource give you fine-grained control over queries for GitHub pull requests. + +First, connect to your GitHub repository with the cnquery shell: + +```bash +cnquery shell github repo mondoohq/cnspec +``` + +Once you're connected to the GitHub repo in cnquery, you can query pull requests in a few different ways. + +Query individual pull requests by number: + +```coffee +cnquery> github.mergeRequest(number: 1){ number state title } +github.mergeRequest: { + number: 1 + title: "🧹 update command line help" + state: "closed" +} +``` + +Query all closed pull requests: + +```coffee +cnquery> github.repository.closedMergeRequests +github.repository.allMergeRequests: [ + 0: github.mergeRequest id=1640488170 state="closed" + 1: github.mergeRequest id=1638254852 state="closed" + 2: github.mergeRequest id=1638253038 state="closed" + +... + +] +``` + +Query all closed and open pull requests: + +```coffee +cnquery> github.repository.allMergeRequests +github.repository.allMergeRequests: [ + 0: github.mergeRequest id=1640488170 state="closed" + 1: github.mergeRequest id=1640302075 state="open" + 2: github.mergeRequest id=1638694955 state="open" + +... + +] +``` + +### Improve bucket JSONL export + +Do you export your Mondoo data through one of our storage integrations? We've made it easier for you to process these exports in systems like Splunk or ELK: We added `ExportedAt` and `asset_mrn` fields: + +```json +{ + "mrn": "//assets.api.mondoo.app/spaces/vibrant-edison-123456/assets/2Z8pfFOyDBcZhGHi123456789", + "asset_mrn": "//assets.api.mondoo.app/spaces/vibrant-edison-123456/assets/2Z8pfFOyDBcZhGHi123456789", + "name": "https://mondoo.com", + "platform_name": "host", + "error": "", + "score_updated_at": "2023-12-06T14:03:51Z", + "updated_at": "2023-12-06T14:03:51Z", + "labels": { + "mondoo.com/integration-mrn": "//integration.api.mondoo.app/spaces/vibrant-edison-123456/integrations/2YzVgXUPvA09dZ1tBD123456789" + }, + "annotations": null, + "exported_at": "2023-12-06T15:12:57.619506985Z" +} +``` + +### Alpine 3.19 support + +On December 7th the Alpine Linux team released Alpine Linux 3.19 with an updated Kernel and new versions of common language packages. Mondoo includes support for this latest release with EOL and CVE detection. Learn more about what's new in this updated version at [alpinelinux.org](https://alpinelinux.org/posts/Alpine-3.19.0-released.html). + +### Ignore .terraform directory during scans + +Want to scan Terraform files in a project directory, but the pesky .terraform directory is getting in your way? Now you can ignore files in the .terraform directory with the new `--ignore-dot-terraform` flag. + +## 🐛 BUG FIXES AND UPDATES + +- Improve the display of categories in integrations during setup and on the integrations page. +- Improve the UI on the space registration token page when no tokens have been created. +- In audit log entries, include the asset on which the action occurs. +- Improved registry search results for policies and query packs. +- Detect Kali Linux systems running on AWS. +- Display more than 100 spaces on the organization page. +- Fix incorrect EOL asset counts on the organization dashboard. +- Don't double-log failures to find SSH keys from the SSH agent in cnspec/cnquery. +- Performance improvements loading spaces and assets in the console. +- Fix tooltips for space and organization tokens to show the right messages. +- Show the GCP icon for Google Container Optimized policies. +- Use the latest Microsoft 365 logo on all integration pages. +- Add the Okta logo to the integration page. +- Fix + icon in the Okta integration to go directly to the Okta integration setup page. +- Report Kali Linux as a rolling release without an EOL date. +- Fix `cannot convert primitive with NO type information` error in `github.mergeRequest` resource. +- Update host resources to show as `Network Hosts` in the console instead of `Network API`. +- Properly display `ReadOnlyPort` value in `k8s.kubelet.configuration` resource when it is `0`. +- Fix `caCertFile` in `k8s.kubelet` resource to be in "authentication" and not "authorization". +- Fix URL links from cnspec failing to load if you had previously loaded a different space. diff --git a/releases/2023-12-19-mondoo-9.12-is-out.md b/releases/2023-12-19-mondoo-9.12-is-out.md new file mode 100644 index 000000000..dee45132e --- /dev/null +++ b/releases/2023-12-19-mondoo-9.12-is-out.md @@ -0,0 +1,167 @@ +--- +slug: mondoo-9.12-is-out/ +title: Mondoo 9.12 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.12 is out! This release includes improved asset UX, expanded AWS/MS365 resources, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Check overview summary information + +We added an overview to the Checks tab for each of your assets. Now you can quickly grasp the state of checks and see the most important recommended actions. + +![Check Overview](/img/releases/2023-12-19-mondoo-9.12-is-out/check_overview.png) + +### View exceptions on policy cards + +New information on the Overview tab for each asset exposes exceptions at a glance. For each policy applied to the asset, you can now see whether (and how many) exceptions are applied. + +![Exceptions Overview](/img/releases/2023-12-19-mondoo-9.12-is-out/exceptions.png) + +## 🧹 IMPROVEMENTS + +### Updated weekly email notifications + +We rebuilt the Mondoo weekly organization overview emails from the ground up to deliver the most important information about your spaces... and with a fresh new design to top it all off. The email still shows an overview of scores in your spaces, but now also includes top vulnerabilities, end-of-life assets, and a count of improving vs. worsening asset scores. + +![Check Overview](/img/releases/2023-12-19-mondoo-9.12-is-out/email.png) + +### New fields and defaults in resources + +#### aws.acm.certificate + +- Default fields now display `domainName`, `issuer`, `createdAt`, and `notAfter` +- New `keyAlgorithm` field +- New `serial` field +- New `source` field +- New `issuer` field +- New `issuedAt` field +- New `importedAt` field + +#### aws.dynamodb.table + +- New `status` field +- New `sizeBytes` field + +#### aws.ec2.keypair + +- Default fields now display `name`, `type`, and `region` +- New `createdAt` field + +#### aws.rds.dbcluster + +- New `storageEncrypted` field +- New `storageAllocated` field +- New `storageIops` field +- New `storageType` field +- New `status` field +- New `createdTime` field +- New `backupRetentionPeriod` field +- New `autoMinorVersionUpgrade` field +- New `clusterDbInstanceClass` field +- New `engine` field +- New `engineVersion` field +- New `publiclyAccessible` field +- New `multiAZ` field +- New `deletionProtection` field + +#### aws.rds.snapshot + +- New `engine` field +- New `status` field +- New `allocatedStorage` field + +#### aws.vpc.endpoint + +- New `privateDnsEnabled` field +- New `state` field +- New `createdAt` field + +#### aws.vpc.flowlog + +- New `createdAt` field +- New `destination` field +- New `maxAggregationInterval` field +- New `trafficType` field + +#### aws.vpc.routetable + +- New `tags` field + +#### aws.vpc.subnet + +- New `assignIpv6AddressOnCreation` field +- New `state` field + +#### github.user + +- Default fields now display `login`, `name`, `email`, and company + +#### microsoft.group + +- New `visibility` field + +#### ms365.exchangeonline + +- New `externalInOutlook` field + +#### ms365.exchangeonline.externalsender + +- New resource with `identity`, `allowList`, and `enabled` fields + +#### ms365.teams.teamsmeetingpolicyconfig + +- New resource with `allowAnonymousUsersToJoinMeeting`, `allowAnonymousUsersToStartMeeting`, `autoAdmittedUsers`, `allowPSTNUsersToBypassLobby`, `meetingChatEnabledType`, `designatedPresenterRoleMode`, `allowExternalParticipantGiveRequestControl`, and `allowSecurityEndUserReporting` fields + +#### ms365.teams.tenantfederationconfig + +- New resource with `identity`, `blockedDomains`, `allowFederatedUsers`, `allowPublicUsers`, `allowTeamsConsumer`, `allowTeamsConsumerInbound`, `treatDiscoveredPartnersAsUnverified`, `sharedSipAddressSpace`, and `restrictTeamsConsumerToExternalUserProfiles` fields + +#### microsoft.organization + +- New `onPremisesSyncEnabled` field + +#### slack.conversation + +- A new resource that simplifies accessing channel, direct message, and group message data. This replaces the `conversations` field in the `slack` resource. + +### German/Italian support in Windows Security policy + +We've reworked our Windows Security policy to fully support both Windows Server and Workstation editions with the language set to either German or Italian. + +### New checks in HTTP Security policy + +Our HTTP security policy now includes additional checks to ensure that Content Security Policy (CSP) and Strict-Transport-Security (HSTS) headers are set. New groups in this policy ensure that checks are grouped by protocol and only enabled when appropriate. + +### Complete Microsoft 365 scanning, anywhere + +Sit back for a moment while I put on my engineer's hat. Sometimes, APIs are hard. Perhaps the best example is Microsoft 365. Some data can be retrieved using their Golang SDK, but much of the API can only be accessed through PowerShell. + +Until now, Mondoo queried the necessary data using both methods and returned MQL as if it were easy—that is—if you were on Windows with PowerShell. On Linux, macOS, or using a Mondoo integration, queries that relied on PowerShell-gathered data failed. + +But no more! cnquery and cnspec now query Microsoft 365 data using PowerShell installed on macOS / Linux systems so that Mondoo Platform integrations now successfully run these queries. + +## 🐛 BUG FIXES AND UPDATES + +- Don't allow creating an exception for a control/asset/check more than once. +- Resolve multiple edge cases in multi-select when setting up exceptions. +- Improve the rendering of code blocks in the console. +- Improve performance loading pages in the console. +- Add validation of IP addresses in the Domain/IP integration. +- Don't remove previously rejected exceptions when removing the current exception. +- Fix detecting platform IDs for Kubernetes operator manifests. +- Reduce network traffic when scanning assets with cnspec. +- Fix failures setting sudo to active in an inventory file. +- Add API retries to the Slack resources to better handle throttling while querying large amounts of data. +- Improve the suggestion text when checks, assets, or data queries tabs are empty in Compliance Hub. +- Fix failures running `cnspec vuln`. +- Add back the feature flag for Kubernetes node scanning that was accidentally removed in the 9.0 release. diff --git a/releases/2024-01-03-mondoo-9.13-is-out.md b/releases/2024-01-03-mondoo-9.13-is-out.md new file mode 100644 index 000000000..0c3ea7fe4 --- /dev/null +++ b/releases/2024-01-03-mondoo-9.13-is-out.md @@ -0,0 +1,86 @@ +--- +slug: mondoo-9.13-is-out/ +title: Mondoo 9.13 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.13 is out! This release includes check exceptions and scope definition in Compliance Hub, an updated vendor advisories view, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Scoping in Compliance Hub + +New scoping in Compliance Hub gives you fine-grained management of which controls you report to your auditor. Is your auditor not requesting a particular control even though it's part of the compliance framework? Select the control in Compliance Hub and mark it out of scope. With scoping, you decide what to include in your audit without setting exceptions (which would appear in audit report PDFs). + +![Scoping](/img/releases/2024-01-03-mondoo-9.13-is-out/scoping.png) + +### Check exceptions in Compliance Hub + +Need more time to remediate findings for your audit? Now you can set exceptions on individual checks. Explanations let you communicate work to be done or identify compensating controls. + +![Check Exceptions](/img/releases/2024-01-03-mondoo-9.13-is-out/exceptions.png) + +## 🧹 IMPROVEMENTS + +### Improved vendor security advisory view + +Redesigned vendor security advisory pages make it easier to understand the impact of an advisory and what actions you need to take next. + +![Advisory page](/img/releases/2024-01-03-mondoo-9.13-is-out/advisory.png) + +### Resource updates + +We've added new resources and fields to give you access to even more data. + +#### aws.ecs.cluster + +- Default fields now display `name`, `region`, `status`, `runningTasksCount`, and `pendingTasksCount` +- New `region` field + +#### aws.rds.dbcluster + +- New `securityGroups` field + +#### ms365.sharepointonline + +- New `spoSites` field + +#### ms365.sharepointonline.site + +- New resource with `url` and `denyAddAndCustomizePages` fields + +## 🐛 BUG FIXES AND UPDATES + +- Fix failures running `cnspec vuln` on Windows and Pop!\_OS hosts. +- Include the platform IDs and EC2 instance ARNs in SBOM exports. +- Add back ECR and ECS discovery using the `--discovery` flag that was removed in 9.0. +- Replace incorrect error message when failing to query Amazon GuardDuty. +- Do not show disabled compliance controls in cnspec scans. +- Don't clip the bottom pixels of the Mondoo logo in the console. +- Update the macOS client installation setup instructions in the integrations page to install without Homebrew. +- In exceptions lists, show the most recent exceptions first in each day's view. +- Avoid failures running the Asset Count Query Pack on Microsoft 365 assets. +- Fix remediation steps in the Linux Security policy's "Ensure SSH Idle Timeout Interval is configured" check. Thanks for this fix, [@tomtrix](https://github.com/tomtrix)! +- Add properties to CIS/Mondoo Windows policies to allow tuning the maximum idle time of the Remote Desktop Services sessions. +- Fix policy filtering on the asset checks page. +- Improve console load times on low bandwidth connections by 70%. +- Don't show the filter search bar on the asset checks page if there are no checks. +- Prevent failures on Azure and Microsoft 365 assets in the SOC 2 Compliance Checks policy. +- Improve the display of summary data on CVE pages. +- Add tooltips to risk factors on CVE pages to make it easier to understand scoring. +- Fix failures registering cnspec/cnquery 8.x clients. +- Fix failures generating compliance PDF reports. +- Improve performance loading CVE/advisory pages, individual asset pages, and the security dashboard. +- Add an Alias directive to the system unit file definition for cnspec. +- Update VMware Photon 4 EOL date. +- Simplify Linux client installation on integration pages by using the install.sh script. +- Fix errors setting an exception in compliance frameworks that are still in preview. +- Improve check titles in the AWS Security and DNS Security policies. +- Improve rendering of codeblocks in the Kubernetes Cluster and Workload Security policy. diff --git a/releases/2024-01-09-mondoo-9.14-is-out.md b/releases/2024-01-09-mondoo-9.14-is-out.md new file mode 100644 index 000000000..c4a512084 --- /dev/null +++ b/releases/2024-01-09-mondoo-9.14-is-out.md @@ -0,0 +1,188 @@ +--- +slug: mondoo-9.14-is-out/ +title: Mondoo 9.14 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 9.14 is out! This release includes agentless Azure VM scanning, new MQL helpers, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Scan Azure VMs / snapshots / disks + +Use new Azure scanning capabilities to scan running VMs, instances, or disks without deploying or managing agents. + +Scan snapshots of your VMs to perform agentless scans without impact to your running workloads: + +```bash +cnspec scan azure compute snapshot --client-id --tenant-id --client-secret +``` + +Scan snapshots outside your current resource group using the fully qualified Azure resource ID: + +```bash +cnspec scan azure compute snapshot "/subscriptions/subId/resourceGroups/my-rg/providers/Microsoft.Compute/snapshots/test-debian-snap" --client-id --tenant-id --client-secret +``` + +Scan disks on running VMs with automatic running disk cloning: + +```bash +cnspec scan azure compute disk --client-id --tenant-id --client-secret +``` + +Not concerned about the impact to running workloads? Scan VMs directly without managing agent deploys: + +```bash +cnspec azure compute instance --client-id --tenant-id --client-secret +``` + +### New MQL helpers for policy authoring + +New helpers for MQL give you the power to create robust security and compliance policies to meet your custom business needs. + +#### Quickly access data in a map + +Use dot notation to access data in maps: + +```coffee +cnquery> {a: 1, b: 2, c:3}.a +[a]: 1 +``` + +#### Check whether a time is within a range + +See if time values fall within a range. This works with all timestamps: + +```coffee +cnquery> password.lastChangedDate.inRange(time.now-90*time.day, time.now) +[ok] value: true +``` + +#### Check whether a number is within a range + +See if an integer value is within a range: + +````coffee +cnquery> 2.inRange(1,3) +[ok] value: true +```coffee + +#### Check strings against a list of values + +Check a string value against a list of acceptable values. + +```coffee +cnquery> "PASS".in(["PASS","ALLOW","OK"]) +[ok] value: true +```` + +#### Parse duration values + +Work with duration values using a new duration helper: + +```coffee +cnquery> parse.duration("3d") +parse.parse.duration: 3 days +cnquery> parse.duration("7days") +parse.parse.duration: 7 days +``` + +#### Check the contents of maps + +Check keys, values, and combination of the two within maps: + +```coffee +{'a': 1, 'b': 2}.contains( key == 'b' ) +{'a': 1, 'b': 2}.all( value > 0 ) +{'a': 1, 'b': 2}.one( value != 1 ) +{'a': 1, 'b': 2}.none( key == /d-f/ ) +``` + +#### Semantic version parsing + +Compare versions without the need for complex integer parsing: + +```coffee +cnquery> semver('1.9.0') < semver('1.10.0') +[ok] value: "1.9.0" +``` + +### New Email Security policy + +A new Email Security policy includes 14 new checks for critical email security protocols, including: + +- Sender Policy Framework (SPF) +- Domain Keys Identified Mail (DKIM) +- Domain-based Message Authentication, Reporting & Conformance (DMARC) + +This policy really shines with our continuous domain and IP scanning integration (released in Mondoo 9.11). It's also handy on the CLI using cnspec. + +![Email Security policy checks](/img/releases/2024-01-09-mondoo-9.14-is-out/email_checks.png) + +### New Terraform Asset Inventory Pack + +Use the new Terraform Asset Inventory Pack to inventory versions and resources within your Terraform state files, including resources on AWS, Azure, and GCP clouds. + +![Terraform state file inventory](/img/releases/2024-01-09-mondoo-9.14-is-out/tf_state.png) + +## 🧹 IMPROVEMENTS + +### macOS and Windows policy data queries moved to query packs + +To give you additional control over when cnspec collects configuration data on your assets, we've moved all data queries from our macOS and Windows security policies to the dedicated asset inventory query packs. For those who want security scanning only, this change speeds up cnspec scans. If you want to continue collecting this configuration data, enable the macOS and Windows asset inventory query packs in your space. + +### Expanded MQL resources + +#### aws.rds.dbcluster + +- Fix `members` field to properly fetch cluster members +- New `port` field +- New `endpoint` field +- New `availabilityZones` field + +#### aws.rds.dbinstance + +- New `port` field +- New `endpoint` field + +#### terraform.state.resource + +- Add `type` field to the default resource output + +#### terraform.file + +- Add `path` field to the default resource output + +#### terraform.module + +- Add `source` field to the default resource output + +#### terraform.state.output + +- Add `identifier` field to the default resource output + +## 🐛 BUG FIXES AND UPDATES + +- Do not include out of scope control PDFs in the framework report archive. +- Show correct exception counts in Compliance Hub controls and PDF reports. +- Fix platform filters on Entra ID checks in the SOC 2 Security policy. +- Prevent Kubernetes operator from failing if it cannot report scan results +- Add retries to provider installations. +- Fix the status command to respect HTTP proxies. +- Improve console load times with a 21% reduction in the size of JavaScript files. +- Improve service restarts when upgrading Windows clients via the install.ps1 script. +- Fix scanning registry keys over WinRM connections. +- Don't require downloading the OS provider to collect basic OS configuration information. +- Ensure the appropriate providers are installed when running `cnspec bundle init`. +- Fix errors in the user and group resources when specifying a single user / group to query. +- Fix the Mondoo package version to match that of cnspec and cnquery on Arch Linux. +- Fix incorrect rendering of some CIS policies. +- Update the EOL date for Windows 10 Pro LTSC. +- Fix package vulnerability data not loading for some Linux distribution releases. diff --git a/releases/2024-01-23-mondoo-10.0-is-out.md b/releases/2024-01-23-mondoo-10.0-is-out.md new file mode 100644 index 000000000..72bfe269d --- /dev/null +++ b/releases/2024-01-23-mondoo-10.0-is-out.md @@ -0,0 +1,307 @@ +--- +slug: mondoo-10.0-is-out/ +title: Mondoo 10.0 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 10.0 is out! This release includes detection of known exploited vulnerabilities, EPSS scores for CVEs, a new light mode, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Expose exploitable CVEs + +Mondoo now flags CVEs found in CISA's Known Exploited Vulnerabilities Catalog. These CVEs are critically important to patch in your environment. Now you can track the patching status across your fleet to prioritize work. + +Individual CVE pages include an exploitable badge when a CVE is in the CISA Known Exploited Vulnerabilities Catalog: + +![Exploitable badge](/img/releases/2024-01-23-mondoo-10.0-is-out/exploitable.png) + +From the CVEs page, a new yellow shield badge designates Known Exploited Vulnerabilities Catalog CVEs. + +![Exploitable CVEs](/img/releases/2024-01-23-mondoo-10.0-is-out/cves_page.png) + +### EPSS scores for CVEs + +Now that you're done patching all the actively exploited vulnerabilities in your environment, what should you do next? What if you could identify vulnerabilities with a high likelihood of being exploited in the wild in the near future? That's the focus of the Exploit Prediction Scoring System (EPSS). Now Mondoo CVE pages include EPSS data so you can see how likely a vulnerability is to be exploited soon, along with the risk when that occurs. Use this additional data to spend your precious time patching the right systems before attackers hit. + +![EPSS scores for CVEs](/img/releases/2024-01-23-mondoo-10.0-is-out/epss.png) + +### Console light mode + +Do you feel like you merely adopted the dark instead of being born into it? Maybe it's time for change. Now you can switch from the Mondoo's Console's default dark mode to a new light mode. + +Enable light mode by selecting the sun icon in the toolbar. + +![Enabling light mode](/img/releases/2024-01-23-mondoo-10.0-is-out/enable_lightmode.png) + +With light mode enabled, enjoy a brighter Mondoo! + +![Light mode dashboard](/img/releases/2024-01-23-mondoo-10.0-is-out/lightmode.png) + +### Policy stats on asset policy pages + +The asset page's Policy tab now includes overview information summarizing the policies and results for an asset. + +![Policy stats](/img/releases/2024-01-23-mondoo-10.0-is-out/policy_overview.png) + +### Find your spaces with ease + +Are you accumulating spaces as you secure more and more of your infrastructure? Now a space search makes it easy to find the space you need. The Spaces page for an organization also now includes pagination. + +![Spaces page with search](/img/releases/2024-01-23-mondoo-10.0-is-out/spaces_search.png) + +### Control policies using the CLI + +Consider yourself a CLI wizard? You'll be happy to know you can now use the CLI to set how your policies execute on assets. The new `cnspec policy` commands give you complete control within the CLI: + +```text +Usage: + cnspec policy [command] + +Available Commands: + delete Delete a policy from the connected space + disable Disables a policy in the connected space + download download a policy to a local bundle file + enable Enables a policy in the connected space + format Apply style formatting to one or more policy bundles + info Show more info about a policy from the connected space + init Create an example policy bundle + lint Lint a policy bundle + list List enabled policies in the connected space + upload Upload a policy to the connected space +``` + +## 🔨 BREAKING CHANGES + +As this is a major release of Mondoo's cnspec and cnquery tools, we have made two relatively small breaking changes: + +- We removed the `--share` flag in cnspec. To learn about other ways to report scan results, read [Report Results](https://mondoo.love/docs/cnspec/results/). +- We renamed `aws-ec2-volume` and `aws-ec2-snapshot` to `aws-ebs-volume` and `aws-ebs-snapshot` when using asset discovery to scan AWS accounts. + +## 🧹 IMPROVEMENTS + +### Scan performance improvements + +New policy fetching and reporting optimizations in Mondoo 10 mean complex scans now execute nearly twice as fast and use 1/3 the network bandwidth as previous 9.x releases. + +### MQL improvements + +New helpers in MQL make it simpler to write and interpret complex security queries. + +#### `recurse` helper for dicts + +The `recurse` helper makes it easy to extract data from a dict structure made up of mixed value types. + +For example, suppose you need to retrieve all users from this JSON data structure: + +```json +{ + "users": [{ "name": "bob" }], + "owners": { + "admins": [{ "name": "joy", "isOwner": true }] + } +} +``` + +Because of the varying data types, finding users in this structure is difficult with traditional mechanisms. You need to understand the data structure and know where to search. + +`recurse` eliminates that difficulty: + +```coffee +jdata.recurse( name != empty ) +``` + +```coffee +[ + 0: { + name: "bob" + } + 1: { + isOwner: true + name: "joy" + } +] +``` + +You can then map the user names: + +```coffee +jdata.recurse( name != empty ).map(name) +``` + +```coffee +[ + 0: "bob" + 1: "joy" +] +``` + +#### Named arguments in functions + +You can set a named argument in a function. This is useful in situations where you can only use one expression (such as with `all` or `one`). It also makes the code easier to understand, especially when nesting across multiple objects, as in this example: + +```coffee +users.all(user: + groups.contains(group: + user.uid == group.gid + ) +) +``` + +#### `in` helper for lists of strings + +For lists of strings, you can use the `in` assertion, which is the inverse of `contains`: + +```coffee +"anya".in(["abel","amos","anya"]) +``` + +An ideal use for `in` is to combine it with [properties](/cnspec/cnspec-policies/write/properties/). For example, if you define a property named `allowedCiphers`, you can assert that a configured cipher is in that list: + +```coffee +sshd.config.ciphers.in( props.allowedCiphers ) +``` + +### Resource improvements + +This release includes new resources and resource fields to expose important details for asset inventory and custom security policies. + +#### aws.iam.loginProfile + +- New resource with `createdAt` field + +#### aws.rds.snapshot + +- New `createdAt` field +- New `engineVersion` field +- New `port` field + +#### azure.subscription.networkService.securityrule + +- Add `direction` field + +#### ms365.exchangeonline + +- New `sharedMailboxes` field + +#### ms365.exchangeonline.exoMailbox + +- New resource with `identity`, `user`, and `externalDirectoryObjectId` fields + +### Group vulnerable packages by architecture + +Vulnerability advisory pages now group affected packages by architecture for easier discovery and evaluation. + +![Packages sorted by architecture](/img/releases/2024-01-23-mondoo-10.0-is-out/advisory_architecture.png) + +### PowerShell remediation steps in Windows policies + +Windows policy checks now include PowerShell remediation steps in addition to the existing Group Policy steps, so you can remediate findings whatever way works best for you. + +![PowerShell remediation steps](/img/releases/2024-01-23-mondoo-10.0-is-out/powershell_remediation.png) + +### Simplified policy control + +You can now change a policy's state directly from the Security Policies page. Now you can enable, disable, or preview policies without having to find them in the Registry. + +![Change policy state in the security policies page](/img/releases/2024-01-23-mondoo-10.0-is-out/policies.png) + +### Control scan as service execution + +You can now pass in alternative values to `cnspec serve` to configure the timer and its splay. + +```bash +> cnspec serve --help +Start cnspec in background mode. + +Usage: + cnspec serve [flags] + +Flags: + -h, --help help for serve + --inventory-file string Set the path to the inventory file + --splay int randomize the timer by up to this many minutes (default 60) + --timer int scan interval in minutes (default 60) + +Global Flags: + --api-proxy string Set proxy for communications with Mondoo API + --auto-update Enable automatic provider installation and update (default true) + --config string Set config file path (default $HOME/.config/mondoo/mondoo.yml) + --log-level string Set log level: error, warn, info, debug, trace (default "info") + -v, --verbose Enable verbose output +``` + +To run `cnspec serve` from the CLI: + +```bash +> cnspec serve --timer 30 --splay 30 +→ start cnspec background service +→ scan interval is 30 minute(s) with a splay of 30 minutes(s) +``` + +If cnspec is running as a service, it is easier to configure the timer and the splay in the configuration: + +```yaml +api_endpoint: https://us.api.mondoo.com +scan_interval: + timer: 5 + splay: 10 +auto_update: true +``` + +### Custom provider paths + +Define a custom path to store cnspec and cnquery providers with the new `PROVIDERS_PATH` variable. Set this variable in your shell profile or change the path one time directly on the CLI: + +```bash +PROVIDERS_PATH=$PWD/.providers cnquery providers install os +``` + +### Updated Linux EOL dates + +We've updated many Linux distribution EOL dates based on vendor timeline updates: + +- Extend EOL date of EuroLinux 9 to June 30, 2032 +- Extend EOL date of Fedora 37 to December 5, 2023 +- Extend EOL date of openSUSE Linux 15.4 to December 7, 2023 +- Extend EOL date of Oracle Linux 7 to December 1, 2024 +- Extend EOL date of Oracle Linux 9 to December 30, 2032 +- Extend EOL date of Ubuntu Linux 23.04 to January 20, 2024 +- Fix the EOL date of Red Hat Enterprise Linux 7 to be August 6, 2019 + +### Apple model detection + +Asset platform information now includes the human-friendly form of the Mac model designation, including the year of release, so you can more easily understand scanned IT assets. + +![Platform overview with Mac model information](/img/releases/2024-01-23-mondoo-10.0-is-out/mac_overview.png) + +## 🐛 BUG FIXES AND UPDATES + +- Do not show unknown assets in the affected assets page. +- Immediately refresh the page after creating or removing an exception in Compliance Hub. +- Improve listing of CVEs and pagination to ensure all CVEs are always displayed. +- Respect the `--log-level` command line flag within provider plugins. +- Fix `auditpol` resource failures on non-English Windows systems. +- Improve content alignment on the Compliance Hub frameworks page. +- Support vulnerable package data on the EndeavourOS Linux distribution. +- Fix technology naming and images in the weekly space overview email. +- Fix alignment of compliance framework tiles. +- Fix the exception creation dialog not always closing after creating an exception. +- Do not fail on time parsing errors. +- Fix failures shutting down providers in some scenarios. +- Fix fetching of the ID for Azure SQL Server firewall rules. +- Fix an error in the `attributes` field of the `aws.elb.classicLoadBalancers` resource when fetching classic ELBs. +- Add an error message when using the `aws.elb.loadbalancer` resource without a load balancer type argument. +- Add an error message when using the `aws.applicationAutoscaling` resource without a namespace argument. +- Show managed clients (if present) in the Integrations section of the sidebar. +- Handle deprecated configurations in the Mondoo Kubernetes Operator. +- Resolve errors running the `files.find` resource on containers. +- Ensure any provider can run resources in the OS provider. +- Improve CVSS score rendering. diff --git a/releases/2024-01-30-mondoo-10.1-is-out.md b/releases/2024-01-30-mondoo-10.1-is-out.md new file mode 100644 index 000000000..e68ade684 --- /dev/null +++ b/releases/2024-01-30-mondoo-10.1-is-out.md @@ -0,0 +1,126 @@ +--- +slug: mondoo-10.1-is-out/ +title: Mondoo 10.1 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 10.1 is out! This release includes application CVE detection, CIS MS365 benchmark 3.0, expanded asset overview data, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Application CVE detection + +We've all been on the Zoom meeting when our coworkers share their screens and every browser window shows the "relaunch to update" badge. How long has Bob in accounting been browsing the web with that unpatched browser? A day? A week? A month? It's hard to know your organization's level of exposure if vulnerability scanning stops at the OS. Go further with new application CVE detection for non-OS installed packages, starting with the detection of vulnerable Mozilla Firefox and Google Chrome releases. + +A new Software tab on the asset detail page shows Mondoo-detected software vulnerabilities. Details include impact level and additional risk factors if known exploits exist for the application. + +![Software vulnerabilities](/img/releases/2024-01-30-mondoo-10.1-is-out/software_vulns.png) + +Want to view data on an asset's individual vulnerabilities? New Vulnerabilities and Advisories tabs let you dive directly into the individual risks on your assets. + +![Advisories](/img/releases/2024-01-30-mondoo-10.1-is-out/advisories.png) + +## 🧹 IMPROVEMENTS + +### CIS Microsoft 365 Foundations 3.0 policy + +Mondoo now includes version 3.0 of the CIS Microsoft 365 Benchmark policy. This updated policy includes new and updated checks to keep your Microsoft 365 environment secure, including: + +- 10 new Microsoft Teams checks +- 8 new Microsoft SharePoint checks +- 6 new Microsoft Power BI checks +- 15 updated checks with improved descriptions, remediations, and query values + +### Improved CIS Azure Foundations policy queries + +Reworked queries in the CIS Azure Foundations Benchmark policy provide more reliable results and improved output so you can quickly find and secure your Azure resources. + +### Improved asset overview information + +Understand your assets at a glance using expanded asset overview information in Mondoo 10.1. New cloud, hardware manufacturer, hardware model, and serial number data are included for operating systems, allowing you to quickly track down assets. + +![Asset overview data](/img/releases/2024-01-30-mondoo-10.1-is-out/asset_overview.png) + +### Expanded macOS and Windows inventory packs + +We've expanded the Windows and macOS inventory packs to expose critical asset configuration data. + +#### macOS queries + +- SMBIOS system information +- Storage data +- Power data +- Network data +- Configuration profile data +- Uptime +- Running processes +- Kernel modules +- Mounts +- Active network connections +- SSHd configuration + +#### Windows queries + +- Uptime +- Running processes +- Scheduled tasks +- Expanded data for BitLocker volumes +- Expanded data for security products +- Expanded data for services + +### CVE detection on Linux Mint + +Keep your Linux workstations fresh with expanded CVE detection support for Linux Mint. + +### Improved Azure authentication + +No matter how you pass your authentication, Mondoo has your back with expanded authentication capabilities for scanning Azure subscriptions. Previously, running `cnspec scan azure` only loaded authentication credentials from the `azure` CLI. Now, scans can also load credentials from shell environment variables, workload identity, and managed identity, in addition to the CLI configuration. + +### CVSS scores in JSONL exports + +Data integrations now export JSONL data with CVSS scores, so you can feed this critical risk data into external systems that consume your data exports. + +### Resource improvements + +Dive deep into your Azure environment in the cnquery shell and create custom policies with an expanded MQL resource. + +#### azure.subscription.computeService.vm + +- New `zones` field +- New `state` field +- New `isRunning` field + +## 🐛 BUG FIXES AND UPDATES + +- Improve formatting in policy description fields. +- Fix crash on empty array.flat with no type information. +- Fix CIS Red Hat Level 2 policy queries applying to non-Red Hat assets. +- Improve reliability of Linux sudoers checks. +- Change Slack provider retry logging messages from info level to debug. +- Reduce network IO during CVE scans. +- Improve error messages if a provider crashes. +- Improve the reliability and readability of queries in the CIS Azure Foundations policy. +- Prevent MS365 SOC 2 checks from running on non-MS365 platforms. +- Fix exceptions incorrectly displaying in some situations. +- Fix long-lived token usage failures in the AWS integration. +- Prevent failures in the Linux Inventory query pack on container image scans. +- Added back support for scanning systems via WinRM. +- Reduce memory usage during asset scans. +- Improved logging when cnquery/cnspec fails. +- Improve scan results for large Slack accounts. +- Return a helpful error when the specified provider cannot be found. +- Fix failures running the `aws.efs.filesystem` resource. +- Fix failures in the `azure.subscription.sqlService.firewallrule` resource. +- Fix missing image for hosts in weekly spaces emails. +- Improve descriptions of EPSS scores on CVE pages. +- Fix a panic when trying to fetch AWS S3 bucket locations in some situations. +- Exit 1 when cnspec or cnquery can't connect to the asset to scan. +- Show a friendly message on the space settings page for API tokens when the user does not have permission. +- Avoid displaying partial scan results in the console. diff --git a/releases/2024-02-06-mondoo-10.2-is-out.md b/releases/2024-02-06-mondoo-10.2-is-out.md new file mode 100644 index 000000000..c6f3c301c --- /dev/null +++ b/releases/2024-02-06-mondoo-10.2-is-out.md @@ -0,0 +1,116 @@ +--- +slug: mondoo-10.2-is-out/ +title: Mondoo 10.2 is out! +authors: + - name: Tim Smith + title: Mondoo Core Team + url: https://github.com/tas50 + - name: Charles Johnson + title: Mondoo Core Team + url: https://github.com/charlesjohnson +tags: [release, mondoo] +--- + +## 🥳 Mondoo 10.2 is out! This release includes key improvements in known exploitable vulnerability tracking, Slack team scanning, improvements to the space overview screen, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🧹 IMPROVEMENTS + +### Additional sources for CVEs and Advisories + +For vulnerabilities that have known exploits in the wild, Mondoo now provides a link to the external citation from the CVE page. + +- For software vulnerabilities listed in the CISA Known Exploited Vulnerability (KEV) database. +- For software vulnerabilities listed in Metasploit, Mondoo now provides a link to exploit in the Metasploit source repository. + +![CVE with Metasploit](/img/releases/2024-02-06-mondoo-10.2-is-out/cve_with_metasploit.png) + +### Find top vulnerabilities for spaces + +The Space overview now shows the top vulnerability in the space, as determined by the ratio of impacted assets and CVSS score. + +![Space overview with top vulnerability](/img/releases/2024-02-06-mondoo-10.2-is-out/space_overview.png) + +### `slack.users` performance improvements + +We continue to optimize fetching Slack data for large Slack workspaces. New optimizations for user fetching result in query times up to 25x faster. + +### New `sshd.config.blocks` field + +The `ssh.config` resource now includes a new `blocks` field that allows you to query configuration data defined in individual sshd match groups. + +For example, if you have an sshd configuration file with a match group for `sftp-users`: + +```coffee +... +X11Forwarding yes + +Match Group sftp-users +X11Forwarding no +PermitRootLogin no +AllowTCPForwarding yes +``` + +Previously using the `sshd.config.params` field would show you both instances of the `X11Forwarding` configuration without the context necessary to understand where this configuration is applied: + +```coffee +> sshd.config.params.X11Forwarding +"no,yes" +``` + +Using blocks you can dive deeper to see exactly which users get each configuration option: + +```coffee +> sshd.config.blocks { criteria params } +sshd.config.blocks: [ + 0: { + criteria: "" + params: { + X11Forwarding: "yes" + ... + } + } + 1: { + criteria: "Group sftp-users" + params: { + AllowTcpForwarding: "yes" + PermitRootLogin: "no" + X11Forwarding: "no" + } + } +] +``` + +## 🐛 BUG FIXES AND UPDATES + +- More consistent asset names on \*nix-based assets. +- Fix infinite loading of the integrations sidebar. +- Improve display of platforms in variant policies. +- Improve the description of EPSS data on CVE and advisories pages. +- Improve retries and timeouts for provider downloads. +- Fix malformed policy downloads from the registry when a policy contains variants. +- Fix missing platform icons for policies with variants. +- Fix an error hovering over policies in the registry when colorblind mode is enabled. +- Use a consistent font size for all exceptions in exception tabs. +- Ensure all unapproved exceptions are expanded by default in exception tabs. +- Remove the "Space created" item from the exceptions tabs. +- Improve rendering of the asset's software list in the print view. +- Removed failing Azure Entra ID checks from the Mondoo Azure policy. +- Improved the reliability and output of queries in the CIS Azure and MS 365 benchmark policies. +- Fix data queries showing as failing checks in the console. +- Add wrapping for long asset annotation text values on the asset page. +- Fix failures loading unscored assets. +- Improve the display of tooltips in light mode. +- Improve error messages due to authentication failures in the `ms365` provider. +- Fix authentication failures with `cnquery run ms365`. +- Avoid running a command more than once in some situations when using the `processes` resource. +- Resolve Microsoft 365 integration timeouts due to scan errors. +- Improve scan time performance by caching failures. +- Fix a crash in the `aws.iam.virtualMfaDevices` resource due to insufficient IAM permissions. +- Fix an error fetching some fields in the `aws.cloudtrail.trails` resource. +- Fix an error fetching Microsoft Teams policy data. +- Resolve a failure to fetch policies when scanning. +- Improve the counts of checks and queries displayed for assets. diff --git a/releases/2024-02-13-mondoo-10.3-is-out.md b/releases/2024-02-13-mondoo-10.3-is-out.md new file mode 100644 index 000000000..8f262a97d --- /dev/null +++ b/releases/2024-02-13-mondoo-10.3-is-out.md @@ -0,0 +1,70 @@ +--- +slug: mondoo-10.3-is-out/ +title: Mondoo 10.3 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 10.3 is out! This release includes Microsoft application vulnerability detection, expanded EOL/CVE detection, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🎉 NEW FEATURES + +### Microsoft application CVE detection + +Expose additional critical vulnerabilities on your workstations and servers with new application vulnerability detection for Microsoft Edge, .NET Framework, and Visual Studio Code. Mondoo automatically flags vulnerable releases on the asset's Software tab. Links to relevant CVEs and Microsoft KB advisories help you understand the risk of outdated software releases in your environment. + +![Vulnerable Microsoft Edge](/img/releases/2024-02-13-mondoo-10.3-is-out/ms_edge.png) + +## 🧹 IMPROVEMENTS + +### Paginate affected assets + +Have thousands of systems impacted by a security check? No problem with new asset pagination on the security check pages. + +### Performance improvements + +We refactored how Mondoo initiates scans, compiles CVE data, and executes the shell to make sure you get the best security results without waiting. + +### Reverse IP Lookup PTR record check in the Email Security policy + +Gmail now requires a reverse IP Lookup PTR record for your domain to accept emails. The Mondoo Email Security policy now includes a new "Ensure Reverse IP Lookup PTR record is set (DNS Forward confirmed)" check so you can validate your domain is ready for these new stringent Gmail requirements. + +### Vulnerability data on Pop!\_OS + +Mondoo now supports CVE detection for Pop!\_OS, the Ubuntu-derived distribution for System76 laptops. + +### Ubuntu 24.04 EOL and CVE support + +Mondoo now detects the EOL date for the upcoming Ubuntu 24.04 release as well as package CVE data. The Ubuntu release doesn't come out until April, but this way you'll be secure from day one. + +## 🐛 BUG FIXES AND UPDATES + +- Simplify the description of EPSS data in CVE/Advisory console pages. +- Fix fields not displaying correctly in the `vulnmgmt.cves` resource. +- Fix querying CloudWatch metrics alarms where the SNS topic does not exist in the `aws.cloudtrail.trails` resource. +- Add a friendly error message when the `aws.cloudtrail` resource is called without an ARN. +- Don't report the core provider as needing to be updated. +- Fix failures parsing time values in some AWS resources. +- Fix dict value parsing in the `gcp.buckets` resource. +- Remove duplicate Jira resource autocompletion in the shell. +- Improve light mode in the registry and asset filters. +- Add an empty state to the asset insights when no policies or vulnerability data are available. +- Show an empty state for data queries when the scan result is an empty string, nil value, or 0. +- Prevent empty titles in Microsoft KBs. +- Fix scanning of AWS instances using SSM when the instance lacks tar. +- Improve remediation instructions in the Google Cloud (GCP) Security policy. +- Fix missing severities in some Scientific Linux security advisories. +- Support RHEL-based distributions in the CIS Distribution Independent Linux `Ensure updates, patches, and additional security software are installed` check. +- Improve query output and reliability in the CIS Amazon Web Services (AWS) Foundations Benchmark and AWS Best Practices policies. +- Update Amazon 2023 and Fedora 38/39 EOL dates to reflect updated dates. +- Fix CVE detection for some packages on Ubuntu 23.10. +- Improve example cnspec/cnquery commands in the console. +- Fix fetching policies from the public registry. +- Fix failures in the CIS "Ensure journald service is enabled" check. +- Improve the check reliability and output in the CIS AWS Foundations policy. diff --git a/releases/2024-02-20-mondoo-10.4-is-out.md b/releases/2024-02-20-mondoo-10.4-is-out.md new file mode 100644 index 000000000..73cdac2fe --- /dev/null +++ b/releases/2024-02-20-mondoo-10.4-is-out.md @@ -0,0 +1,97 @@ +--- +slug: mondoo-10.4-is-out/ +title: Mondoo 10.4 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 10.4 is out! This release includes improved VMware CVE detection, NPM package detection, performance improvements, and more! + +Get this release: [Installation Docs](/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🧹 IMPROVEMENTS + +### VMware vSphere advisory & CVE detection + +Improved VMware vSphere advisory and CVE detection ensures you always have the latest advisories and CVEs flagged on both ESXi and vSphere assets. + +![VMware vulnerabilities](/img/releases/2024-02-20-mondoo-10.4-is-out/vmware.png) + +### Resource Updates + +#### aws.cloudtrail + +- New `cloudWatchLogsLogGroupArn` field + +#### gcp.project.pubsubService.snapshot + +- Fix fetching the `expiration` field + +#### npm.packages + +- New resource for fetching NPM packages installed on an asset + +#### packages + +- New `files` field +- New `cpe` field on Windows assets + +### Performance improvements + +Who doesn't like getting something for free? With Mondoo 10.4, you get your scan results not only faster, but using significantly less memory at the same time. In testing with large asset scans, memory usage has dropped from ~950MB to just ~200MB, while scan times were cut in half. + +### Save SBOMs to disk + +Export SBOMs to a file with a new `--output-target` flag: + +```text +$ cnquery sbom docker debian:12 -o cyclonedx-json --output-target debian-12.json +→ discover related assets for 1 asset(s) + + debian:12 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% + +$ head debian-12.json +{ + "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.5", + "serialNumber": "urn:uuid:1685df36-e3f4-4174-b469-6bd9974a8c41", + "version": 1, + "metadata": { + "timestamp": "2024-02-20T10:49:41-08:00", + "tools": { + "components": [ +``` + +### New Azure snapshot scanning options + +New options for Azure snapshot scanning give you additional control over how Mondoo performs the scan: + +- Skip the cleanup and instead rely on Azure to perform the cleanup with a new `--skip-snapshot-cleanup` flag. +- Scan snapshots that have already been attached to the VM with new `--skip-snapshot-setup` and `--lun` flags. + +### Expanded NIST 800 compliance evidence + +AWS NIST Best Practices policies now feed directly into Compliance Hub, so NIST security findings can be part of your automatic evidence gathering for audits. + +## 🐛 BUG FIXES AND UPDATES + +- Fix failures scanning container images. +- Fix fetching CPEs on VMware platforms. +- Display the correct SSH keys when remotely scanning hosts. +- Fix failures in the EOL policy and improve output when a system approaches EOL. +- Show just the severity icon for vulnerabilities instead of severity and scan result. +- Fix failures running the `shell` and `run` commands. +- Improve reliability of console results pagination. +- Fix failures scanning Microsoft 365 and GitHub assets. +- Improve display of scan results in Azure and Microsoft 365 when the result is nil. +- Improve scan results output in the CIS AWS Foundations and Microsoft 365 Foundations benchmarks. +- Don't error if a Kubernetes container cannot be discovered. +- Add a property to the CIS AWS Foundations benchmark to allow controlling which ports are blocked on instances. +- Improve rendering of the asset page on wide displays. +- Fix incorrect CVE detection in .NET Runtime. +- Prevent empty titles in CVEs when the published CVE is incomplete. diff --git a/releases/2024-02-27-mondoo-10.5-is-out.md b/releases/2024-02-27-mondoo-10.5-is-out.md new file mode 100644 index 000000000..64625d422 --- /dev/null +++ b/releases/2024-02-27-mondoo-10.5-is-out.md @@ -0,0 +1,68 @@ +--- +slug: mondoo-10.5-is-out/ +title: Mondoo 10.5 is out! +author: Tim Smith +author_title: Mondoo Core Team +author_url: https://github.com/tas50 +tags: [release, mondoo] +--- + +## 🥳 Mondoo 10.5 is out! This release includes improvements to the software CVE experience, performance, and more! + +Get this release: [Installation Docs](https://mondoo.com/docs/cnspec/) | [Package Downloads](https://releases.mondoo.com/cnspec/) | [Docker Container](https://hub.docker.com/r/mondoo/cnspec) + +--- + +## 🧹 IMPROVEMENTS + +### Improved software vulnerability experience + +Find critically outdated software faster with the improved asset software tab. New quick filter buttons let you select between OS packages and applications. Badges help you narrow down risk with EPSS/CVSS3 scores. + +![Software vulnerability filtering](/img/releases/2024-02-27-mondoo-10.5-is-out/filter.png) + +### Resource improvements + +#### aws.config.recorder + +- New `resourceTypes` field + +#### aws.vpc.flowlog + +- New `destinationType` field +- New `deliverLogsStatus` field + +### Control scanning during registration + +Control the configuration of the cnspec service during client registration with new `timer` and `splay` flags in the `cnspec login` command. + +Configure the cnspec service to scan every 30 minutes with a 5 minute splay: + +```bash +cnspec login --token MY_TOKEN --timer 30 --splay 5 +``` + +### Performance + +The same great scans, just MUCH, MUCH faster. This week we shuffled around the bits to make GitHub organization scans 5x faster and Azure subscription scans 3x faster. + +## 🐛 BUG FIXES AND UPDATES + +- Detect tags on AWS instances scanned with SSM. +- Ensure that AWS instances scanned with SSM are grouped under AWS in inventory. +- Resolve a potential failure scanning GitLab. +- Improve failure output in the CIS AWS Foundations benchmark policy. +- Improve CIS Distribution Linux benchmark policy when running on Photon OS. +- Prevent EC2 instance scans from creating double instances in some situations. +- Fix links to PostgreSQL integration documentation in the integration setup flow. +- Display correct query pack names for asset data queries. +- Improve rendering of policies on the asset page with wide displays. +- Fix usage of the `--discover` flag in the GitHub provider. +- Fix failures selecting an asset in `cnquery shell` if there is only a single asset. +- Don't fail checking IP addresses if both IPv4 and IPv6 are disabled. +- Fix a failure scanning VMware vSphere assets. +- Improve reliability of OOM reporting in the Kubernetes integration pages. +- Improve field handling in the organization creation modal when using keyboard navigation. +- Fix policy filtering on assets to show all checks for a policy. +- Improve reliability of fetching CVE data for assets. +- Add vendor icons to the advisories view. diff --git a/sidebars.js b/sidebars.js new file mode 100644 index 000000000..2bb9b8daf --- /dev/null +++ b/sidebars.js @@ -0,0 +1,390 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +module.exports = { + // By default, Docusaurus generates a sidebar from the docs folder structure + mondooSidebar: [ + { + type: "doc", + id: "platform/home", + label: "Mondoo Platform Home", + }, + { + type: "category", + label: "Get Started", + collapsed: false, + items: [ + { + type: "autogenerated", + dirName: "platform/start", + }, + ], + }, + { + type: "category", + label: "Integrate Your Infrastructure", + items: [ + { + type: "autogenerated", + dirName: "platform/infra", + }, + ], + }, + { + type: "category", + label: "Security", + items: [ + { + type: "autogenerated", + dirName: "platform/security", + }, + ], + }, + { + type: "category", + label: "Compliance", + items: [ + { + type: "autogenerated", + dirName: "platform/compliance", + }, + ], + }, + { + type: "category", + label: "Asset Intelligence", + items: [ + { + type: "autogenerated", + dirName: "platform/intel", + }, + ], + }, + { + type: "category", + label: "Manage Mondoo", + items: [ + { + type: "autogenerated", + dirName: "platform/maintain", + }, + ], + }, + { + type: "doc", + id: "glossary", + label: "Glossary of Terms", + }, + { + type: "link", + label: "Releases", + href: "/releases/", + }, + ], + + // ************* MQL MQL MQL MQL MQL MQL MQL MQL MQL MQL MQL MQL ***************** + + MQL: [ + { + type: "category", + label: "MQL", + collapsed: false, + items: [ + { + type: "autogenerated", + dirName: "mql", // Generate sidebar slice + }, + ], + }, + ], + + // ************* cnQUERY cnQUERY cnQUERY cnQUERY cnQUERY ***************** + + cnquery: [ + { + type: "doc", + id: "cnquery/home", + label: "cnquery Docs Home", + }, + { + type: "doc", + id: "cnquery/cnquery-about", + label: "What Is cnquery?", + }, + { + type: "doc", + id: "cnquery/cnquery-get-started", + label: "Get Started with cnquery", + }, + { + type: "category", + label: "Query Your Systems", + collapsed: false, + items: [ + { + type: "category", + label: "AWS", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnquery/cnquery-aws", // Generate sidebar slice + }, + ], + }, + { + type: "doc", + id: "cnquery/cnquery-azure/cnquery-azure-intro", + label: "Azure", + }, + { + type: "doc", + id: "cnquery/cnquery-gcp/cnquery-gcp-intro", + label: "GCP", + }, + { + type: "category", + label: "Kubernetes", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnquery/cnquery-k8s", // Generate sidebar slice + }, + ], + }, + { + type: "doc", + id: "cnquery/cnquery-oper/cnquery-linux-intro", + label: "Linux", + }, + { + type: "doc", + id: "cnquery/cnquery-oper/cnquery-macos-intro", + label: "macOS", + }, + { + type: "doc", + id: "cnquery/cnquery-oper/cnquery-windows-intro", + label: "Windows", + }, + { + type: "category", + label: "SaaS", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnquery/saas", // Generate sidebar slice + }, + ], + }, + ], + }, + { + type: "doc", + id: "cnquery/cnquery-platform", + label: "Log into Mondoo Platform for More", + }, + { + type: "doc", + id: "cnquery/cnquery-query", + label: "Query Your Infrastructure", + }, + { + type: "doc", + id: "cnquery/cnquery-run-pack", + label: "Run a Query Pack", + }, + { + type: "doc", + id: "cnquery/providers", + label: "Manage cnquery Providers", + }, + { + type: "doc", + id: "cnquery/cnquery-supported", + label: "Supported Scan Targets", + }, + { + type: "category", + label: "CLI Commands", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnquery/cli", // Generate sidebar slice + }, + ], + }, + ], + + // ************* cnSPEC cnSPEC cnSPEC cnSPEC cnSPEC ***************** + + cnspec: [ + { + type: "doc", + id: "cnspec/home", + label: "cnspec Docs Home", + }, + { + type: "doc", + id: "cnspec/cnspec-about", + label: "What Is cnspec?", + }, + { + type: "doc", + id: "cnspec/cnspec-get-started", + label: "Get Started with cnspec", + }, + { + type: "category", + label: "Extended Installation Options", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/cnspec-adv-install", // Generate sidebar slice + }, + ], + }, + { + type: "category", + label: "Assess System Security", + collapsed: false, + items: [ + { + type: "category", + label: "AWS", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/cnspec-aws", // Generate sidebar slice + }, + ], + }, + { + type: "doc", + id: "cnspec/cnspec-azure/cnspec-azure-intro", + label: "Azure", + }, + { + type: "category", + label: "GCP", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/cnspec-gcp", // Generate sidebar slice + }, + ], + }, + { + type: "category", + label: "Kubernetes", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/cnspec-k8s", // Generate sidebar slice + }, + ], + }, + { + type: "doc", + id: "cnspec/cnspec-oci/cnspec-oci-intro", + label: "Oracle Cloud Infrastructure (OCI)", + }, + { + type: "category", + label: "Operating Systems", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/cnspec-oper", // Generate sidebar slice + }, + ], + }, + { + type: "category", + label: "SaaS", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/saas", // Generate sidebar slice + }, + ], + }, + { + type: "category", + label: "Supply Chain", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/supplychain", // Generate sidebar slice + }, + ], + }, + ], + }, + { + type: "doc", + id: "cnspec/results", + label: "Report Results", + }, + { + type: "doc", + id: "cnspec/cnspec-platform", + label: "Log into Mondoo Platform for More", + }, + { + type: "category", + label: "Policies", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/cnspec-policies", // Generate sidebar slice + }, + ], + }, + { + type: "doc", + id: "cnspec/cnspec-scan", + label: "Create Checks in cnspec shell", + }, + { + type: "doc", + id: "cnspec/cnspec-supported", + label: "Supported Scan Targets", + }, + { + type: "category", + label: "CLI Commands", + collapsed: true, + items: [ + { + type: "autogenerated", + dirName: "cnspec/cli", // Generate sidebar slice + }, + ], + }, + { + type: "doc", + id: "cnspec/uninstall", + label: "Uninstall cnspec", + }, + ], +}; diff --git a/src/css/base.css b/src/css/base.css new file mode 100644 index 000000000..b6ecf2c50 --- /dev/null +++ b/src/css/base.css @@ -0,0 +1,2 @@ +@import "./normalize.css"; +@import "./typography.css"; diff --git a/src/css/custom.css b/src/css/custom.css new file mode 100644 index 000000000..872f49df3 --- /dev/null +++ b/src/css/custom.css @@ -0,0 +1,387 @@ +/* stylelint-disable docusaurus/copyright-header */ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ + +@import "./global.css"; +@import "./normalize.css"; +@import "./todo.css"; +@import "./typography.css"; + +:root { + --ifm-color-text: #fff; + --ifm-color-text-light: #ddd; + --ifm-color-text-lighter: #aaa; + + --ifm-color-border: rgba(200, 200, 200, 0.8); + --ifm-color-border-lighter: rgba(200, 200, 200, 0.5); + + --ifm-bg-color: #1e1d46; + --ifm-bg-color-light: rgb(58, 57, 57); + --ifm-bg-color-lighter: rgb(88, 88, 88); + + --ifm-shadow-color: rgba(200, 200, 200, 0.2); + --ifm-shadow-color2: rgba(200, 200, 200, 0.14); + --ifm-shadow-color3: rgba(200, 200, 200, 0.12); + --ifm-shadow: 0 3px 1px -2px var(--ifm-shadow-color), + 0 2px 2px 0 var(--ifm-shadow-color2), 0 1px 5px 0 var(--ifm-shadow-color3); + --ifm-shadow-selected: 0 2px 4px -1px var(--ifm-shadow-color), + 0 4px 5px 0 var(--ifm-shadow-color2), 0 1px 10px 0 var(--ifm-shadow-color3); + + --ifm-color-primary: #9147ff; + --ifm-color-primary2: #6b1fd6; + --ifm-color-primary3: #a07aff; + --ifm-color-secondary: #2fc089; + --ifm-color-secondary2: #238b66; + --ifm-color-error: #ff5252; + + --ifm-color-cat1: #039cd8; + --ifm-color-cat2: #fbd153; + --ifm-color-cat3: #ff5252; + --ifm-color-cat4: #fc3779; + --ifm-color-unknown: #aaa; + + --ifm-color-bg-note: #9147ff; + + --ifm-border-radius: 4px; + --ifm-border-radius-rounded: 24px 4px; + --ifm-padding: 24px; + --ifm-margin: 48px; + + --ra-color-text-dark: #1e1d46; + + --bg-color: #ffffff; +} + +html[data-theme="dark"] { + --ifm-color-primary: #a07aff; + --ifm-color-primary2: #a07aff; + --ifm-color-secondary: #6cd9af; + --ifm-color-secondary2: #6cd9af; + + --ifm-color-bg-note: #3d1e50; + + --ra-color-text-dark: #ffffff; + + --bg-color: #18191a; +} + +/* link styles */ +a { + color: var(--ifm-color-primary2); +} + +a.button { + background: var(--ifm-color-primary); + color: var(--ifm-color-text); + border-radius: var(--ifm-border-radius); + text-transform: uppercase; + font-weight: normal; + transition: all 0.2s ease; + border: 0; +} + +a.button:hover { + background: var(--ifm-color-primary2); + color: var(--ifm-color-text); +} + +.admonition-heading { + padding: 10px 0 0 0; +} +.admonition-heading h5 { + margin-bottom: 0; +} +.admonition-icon { + margin-right: 0.5em; +} + +.footer, +.footer--dark { + --ifm-footer-background-color: var(--ifm-bg-color); + --ifm-footer-color: var(--ifm-color-text); + --ifm-footer-link-color: var(--ifm-color-text); + --ifm-footer-title-color: var(--ifm-color-text); +} + +.navbar { + font-family: + "San Francisco", + -apple-system, + system-ui, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + Ubuntu; +} + +.navbar strong { + font-weight: 600; +} + +.docusaurus-highlight-code-line { + background-color: rgb(72, 77, 91); + display: block; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); +} + +.button-grid { + display: grid; + grid-template-columns: repeat(6, 1fr); + text-align: center; + font-weight: bold; + column-gap: 15px; + row-gap: 10px; + margin-bottom: 40px; +} + +@media (max-width: 750px) { + .button-grid { + grid-template-columns: repeat(4, 1fr); + } +} + +.button-grid img { + margin-top: 10px; + border-radius: 10px; +} + +.button-grid img:hover { + opacity: 0.3; +} + +.button-grid span { + font-size: 1.5em; + grid-column: span 20; +} + +.tile { + display: block; + height: 200px; + width: 100%; + border: none; + background-color: #1e1d46 !important; + color: white !important; + font-size: 20px; + margin-right: 10px; + margin-bottom: 10px; + line-height: 200px; + text-align: center; +} + +.tile:last-child { + margin-right: 0px; +} + +.flex-container { + display: flex; + flex-wrap: nowrap; +} + +.intro-item { + padding: 1em 3em 0 0; +} +.first { + grid-area: first; + border: none; +} +.gettingstarted { + grid-area: gettingstarted; +} +.server { + grid-area: server; +} +.cloud { + grid-area: cloud; +} + +.policies { + grid-area: policies; +} +.supply-chain { + grid-area: supply-chain; +} + +.mql { + grid-area: mql; +} + +.help { + grid-area: help; +} +.intro-container { + display: grid; + grid-template-columns: repeat(2); + grid-template-rows: auto; + grid-row-gap: 10px; + grid-column-gap: 0px; + grid-template-areas: + "first first" + "gettingstarted server" + "cloud policies" + "supply-chain mql" + "help help"; +} + +.intro-container a { + color: var(--ifm-color-primary2); + text-decoration: none; +} + +.intro-container-alert { + position: relative; + width: auto; + color: var(--ifm-color-emphasis-900); + border-radius: 5px; + background-color: var(--ifm-color-bg-note); + border-color: #00000000; + padding: 4px 10px 10px 10px; + margin: 0 0 16px; + overflow: hidden; +} + +.intro-container-alert::before { + content: ""; + position: absolute; + height: 100%; + width: 4px; + left: 0; + top: 0; + background: var(--ifm-color-primary2); +} + +.intro-container-alert p { + padding: 4px; + margin-bottom: 0px; +} + +/* Admonition Alert Styles */ + +/* .alert--info { + --ifm-alert-background-color: var(--ifm-color-bg-note); + --ifm-alert-border-color: var(--ifm-color-primary2); +} */ + +.service-screenshot { + border: 1px solid #000; +} + +/* Tutorial Styling */ + +.styles_tutorial_description { + max-width: 60em; + margin: 0 0 24px; +} + +.type-body-large { + font-size: 1.188rem; + letter-spacing: 0.01em; + line-height: 1.579em; +} + +.tutorials-number { + margin-left: 1em; + font-size: 14px; + text-transform: uppercase; +} + +.tutorial { + position: relative; +} + +.tutorial::before { + content: ""; + width: 1px; + position: absolute; + top: -20px; + left: 45px; + bottom: 20px; + z-index: 1; + background: var(--ifm-color-border); +} + +.tutorial-item { + position: relative; + z-index: 5; + display: block; + margin-bottom: 20px; + padding: 26px 82px 26px 28px; + color: inherit; + border: 1px solid var(--ifm-color-border); + border-radius: var(--ifm-border-radius); + background-color: var(--bg-color); + text-decoration: none; + box-shadow: var(--ifm-shadow); +} + +.tutorial-item:hover { + color: inherit; + text-decoration: none; +} + +.tutorial-item::before { + content: ""; + position: absolute; + top: -1px; + left: -1px; + bottom: -1px; + width: 8px; + background: #fc3779; + border-radius: var(--ifm-border-radius) 0 0 var(--ifm-border-radius); +} + +.tutorial-item::after { + content: ""; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 16px; + width: 48px; + height: 48px; + background: transparent url("/static/img/icons/chevron-icon.svg") no-repeat; + transition: all 0.2s ease; +} + +.tutorial-item:hover::after { + right: 10px; +} + +.tutorial-heading { + display: inline-block; + margin-top: 0; + font-size: 1.2rem; + margin-bottom: 0.8rem; + font-weight: bold; +} + +.tutorial-time { + display: inline-block; + padding: 4px 7px 3px; + margin: 0 0 0 0.75rem; + font-size: 0.75rem; + line-height: 0.75rem; + background: var(--ifm-color-primary3); + color: #fff; + border-radius: 0.9rem; + text-transform: uppercase; + vertical-align: top; +} + +.tutorial-time::before { + content: ""; + display: inline-block; + width: 0.8rem; + height: 0.8rem; + margin-right: 3px; + background: transparent url("/static/img/icons/clock-icon.svg") no-repeat; + vertical-align: middle; +} + +.tutorial-description { + margin: 0; +} diff --git a/src/css/global.css b/src/css/global.css new file mode 100644 index 000000000..aa1a7f5b0 --- /dev/null +++ b/src/css/global.css @@ -0,0 +1,53 @@ +/* + The goal of this is to normalize global aspects + This file should be loaded on the global level. + Based on: normalize.css + custom style +*/ + +@import "./base.css"; +@import "~@fontsource/roboto/index.css"; + +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; + font-family: + "San Francisco", + -apple-system, + system-ui, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + Ubuntu; + color: var(--color-text); + background: var(--bg-color); + line-height: 1.5rem; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} diff --git a/src/css/normalize.css b/src/css/normalize.css new file mode 100644 index 000000000..41795fe6a --- /dev/null +++ b/src/css/normalize.css @@ -0,0 +1,58 @@ +/* + The goal of this is to normalize the style. + This file can be loaded in a shadow-dom or globally. + Based on: normalize.css +*/ + +a { + cursor: pointer; + background-color: transparent; + text-decoration: none; + color: inherit; +} + +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +/* img { + border-style: none; +} */ + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/src/css/todo.css b/src/css/todo.css new file mode 100644 index 000000000..29c928f24 --- /dev/null +++ b/src/css/todo.css @@ -0,0 +1,166 @@ +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} diff --git a/src/css/typography.css b/src/css/typography.css new file mode 100644 index 000000000..e602a5814 --- /dev/null +++ b/src/css/typography.css @@ -0,0 +1,90 @@ +/* + This file provides styling for typography elements. + It does NOT set the font family, this is done on the global level only. +*/ + +h1, +h2, +h3 { + margin: 28px 0 14px 0; + font-weight: 500; + line-height: 1.1; +} + +h4, +h5, +h6 { + margin: 28px 0 14px 0; + font-weight: 500; + line-height: 1.1; +} + +h1 { + font-size: 36px; +} +h2 { + font-size: 30px; +} +h3 { + font-size: 24px; +} +h4 { + font-size: 18px; +} +h5 { + font-size: 14px; +} + +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} diff --git a/static/.nojekyll b/static/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/static/img/buttons/button-aks.png b/static/img/buttons/button-aks.png new file mode 100644 index 000000000..9707489a4 Binary files /dev/null and b/static/img/buttons/button-aks.png differ diff --git a/static/img/buttons/button-amzn.png b/static/img/buttons/button-amzn.png new file mode 100644 index 000000000..e6e63a013 Binary files /dev/null and b/static/img/buttons/button-amzn.png differ diff --git a/static/img/buttons/button-ansible.png b/static/img/buttons/button-ansible.png new file mode 100644 index 000000000..c3c26fcc8 Binary files /dev/null and b/static/img/buttons/button-ansible.png differ diff --git a/static/img/buttons/button-aws.png b/static/img/buttons/button-aws.png new file mode 100644 index 000000000..16a8e4233 Binary files /dev/null and b/static/img/buttons/button-aws.png differ diff --git a/static/img/buttons/button-azure.png b/static/img/buttons/button-azure.png new file mode 100644 index 000000000..e5d05fa05 Binary files /dev/null and b/static/img/buttons/button-azure.png differ diff --git a/static/img/buttons/button-bash.png b/static/img/buttons/button-bash.png new file mode 100644 index 000000000..e6116213e Binary files /dev/null and b/static/img/buttons/button-bash.png differ diff --git a/static/img/buttons/button-binary.png b/static/img/buttons/button-binary.png new file mode 100644 index 000000000..34f78787f Binary files /dev/null and b/static/img/buttons/button-binary.png differ diff --git a/static/img/buttons/button-centos.png b/static/img/buttons/button-centos.png new file mode 100644 index 000000000..abfad2e3d Binary files /dev/null and b/static/img/buttons/button-centos.png differ diff --git a/static/img/buttons/button-chef.png b/static/img/buttons/button-chef.png new file mode 100644 index 000000000..6552aa68e Binary files /dev/null and b/static/img/buttons/button-chef.png differ diff --git a/static/img/buttons/button-circleci.png b/static/img/buttons/button-circleci.png new file mode 100644 index 000000000..12f0fcd4c Binary files /dev/null and b/static/img/buttons/button-circleci.png differ diff --git a/static/img/buttons/button-cloudbees.png b/static/img/buttons/button-cloudbees.png new file mode 100644 index 000000000..88e06a43b Binary files /dev/null and b/static/img/buttons/button-cloudbees.png differ diff --git a/static/img/buttons/button-cloudinit.png b/static/img/buttons/button-cloudinit.png new file mode 100644 index 000000000..f8d90a42a Binary files /dev/null and b/static/img/buttons/button-cloudinit.png differ diff --git a/static/img/buttons/button-debian.png b/static/img/buttons/button-debian.png new file mode 100644 index 000000000..047f29efd Binary files /dev/null and b/static/img/buttons/button-debian.png differ diff --git a/static/img/buttons/button-docker-container.png b/static/img/buttons/button-docker-container.png new file mode 100644 index 000000000..59fac9960 Binary files /dev/null and b/static/img/buttons/button-docker-container.png differ diff --git a/static/img/buttons/button-docker.png b/static/img/buttons/button-docker.png new file mode 100644 index 000000000..bb48fdd37 Binary files /dev/null and b/static/img/buttons/button-docker.png differ diff --git a/static/img/buttons/button-ecr.png b/static/img/buttons/button-ecr.png new file mode 100644 index 000000000..b4fc51085 Binary files /dev/null and b/static/img/buttons/button-ecr.png differ diff --git a/static/img/buttons/button-eks.png b/static/img/buttons/button-eks.png new file mode 100644 index 000000000..60b5e3cfe Binary files /dev/null and b/static/img/buttons/button-eks.png differ diff --git a/static/img/buttons/button-gcp.png b/static/img/buttons/button-gcp.png new file mode 100644 index 000000000..3e66d2f5e Binary files /dev/null and b/static/img/buttons/button-gcp.png differ diff --git a/static/img/buttons/button-gcr.png b/static/img/buttons/button-gcr.png new file mode 100644 index 000000000..79fca4a10 Binary files /dev/null and b/static/img/buttons/button-gcr.png differ diff --git a/static/img/buttons/button-github.png b/static/img/buttons/button-github.png new file mode 100644 index 000000000..e45d8463e Binary files /dev/null and b/static/img/buttons/button-github.png differ diff --git a/static/img/buttons/button-gitlab.png b/static/img/buttons/button-gitlab.png new file mode 100644 index 000000000..654f2addb Binary files /dev/null and b/static/img/buttons/button-gitlab.png differ diff --git a/static/img/buttons/button-gke.png b/static/img/buttons/button-gke.png new file mode 100644 index 000000000..7b624fb23 Binary files /dev/null and b/static/img/buttons/button-gke.png differ diff --git a/static/img/buttons/button-harbor.png b/static/img/buttons/button-harbor.png new file mode 100644 index 000000000..94eafccb4 Binary files /dev/null and b/static/img/buttons/button-harbor.png differ diff --git a/static/img/buttons/button-help-email.png b/static/img/buttons/button-help-email.png new file mode 100644 index 000000000..c87f01512 Binary files /dev/null and b/static/img/buttons/button-help-email.png differ diff --git a/static/img/buttons/button-help-github.png b/static/img/buttons/button-help-github.png new file mode 100644 index 000000000..76fbcdd97 Binary files /dev/null and b/static/img/buttons/button-help-github.png differ diff --git a/static/img/buttons/button-help-slack.png b/static/img/buttons/button-help-slack.png new file mode 100644 index 000000000..1453e793b Binary files /dev/null and b/static/img/buttons/button-help-slack.png differ diff --git a/static/img/buttons/button-jenkins.png b/static/img/buttons/button-jenkins.png new file mode 100644 index 000000000..60c1b4d94 Binary files /dev/null and b/static/img/buttons/button-jenkins.png differ diff --git a/static/img/buttons/button-k8s.png b/static/img/buttons/button-k8s.png new file mode 100644 index 000000000..e9aa53304 Binary files /dev/null and b/static/img/buttons/button-k8s.png differ diff --git a/static/img/buttons/button-linux.png b/static/img/buttons/button-linux.png new file mode 100644 index 000000000..9500129e3 Binary files /dev/null and b/static/img/buttons/button-linux.png differ diff --git a/static/img/buttons/button-macos.png b/static/img/buttons/button-macos.png new file mode 100644 index 000000000..4e3a11492 Binary files /dev/null and b/static/img/buttons/button-macos.png differ diff --git a/static/img/buttons/button-mondoo.png b/static/img/buttons/button-mondoo.png new file mode 100644 index 000000000..b3aa94cab Binary files /dev/null and b/static/img/buttons/button-mondoo.png differ diff --git a/static/img/buttons/button-msteams.png b/static/img/buttons/button-msteams.png new file mode 100644 index 000000000..98f5cbb10 Binary files /dev/null and b/static/img/buttons/button-msteams.png differ diff --git a/static/img/buttons/button-packer.png b/static/img/buttons/button-packer.png new file mode 100644 index 000000000..bb5e9bb0e Binary files /dev/null and b/static/img/buttons/button-packer.png differ diff --git a/static/img/buttons/button-redhat.png b/static/img/buttons/button-redhat.png new file mode 100644 index 000000000..74592c4c0 Binary files /dev/null and b/static/img/buttons/button-redhat.png differ diff --git a/static/img/buttons/button-slack.png b/static/img/buttons/button-slack.png new file mode 100644 index 000000000..bc5bd0515 Binary files /dev/null and b/static/img/buttons/button-slack.png differ diff --git a/static/img/buttons/button-ssh.png b/static/img/buttons/button-ssh.png new file mode 100644 index 000000000..08225eef4 Binary files /dev/null and b/static/img/buttons/button-ssh.png differ diff --git a/static/img/buttons/button-suse.png b/static/img/buttons/button-suse.png new file mode 100644 index 000000000..8c3576302 Binary files /dev/null and b/static/img/buttons/button-suse.png differ diff --git a/static/img/buttons/button-system.png b/static/img/buttons/button-system.png new file mode 100644 index 000000000..3241edb31 Binary files /dev/null and b/static/img/buttons/button-system.png differ diff --git a/static/img/buttons/button-telegram.png b/static/img/buttons/button-telegram.png new file mode 100644 index 000000000..fe84c21b8 Binary files /dev/null and b/static/img/buttons/button-telegram.png differ diff --git a/static/img/buttons/button-terraform.png b/static/img/buttons/button-terraform.png new file mode 100644 index 000000000..8aa6527f7 Binary files /dev/null and b/static/img/buttons/button-terraform.png differ diff --git a/static/img/buttons/button-ubuntu.png b/static/img/buttons/button-ubuntu.png new file mode 100644 index 000000000..eee75049a Binary files /dev/null and b/static/img/buttons/button-ubuntu.png differ diff --git a/static/img/buttons/button-vmware.png b/static/img/buttons/button-vmware.png new file mode 100644 index 000000000..f3956a5c9 Binary files /dev/null and b/static/img/buttons/button-vmware.png differ diff --git a/static/img/buttons/button-windows.png b/static/img/buttons/button-windows.png new file mode 100644 index 000000000..56552cca3 Binary files /dev/null and b/static/img/buttons/button-windows.png differ diff --git a/static/img/buttons/update/button-acr-transparent.png b/static/img/buttons/update/button-acr-transparent.png new file mode 100644 index 000000000..5c8b4b06e Binary files /dev/null and b/static/img/buttons/update/button-acr-transparent.png differ diff --git a/static/img/buttons/update/button-aks-transparent.png b/static/img/buttons/update/button-aks-transparent.png new file mode 100644 index 000000000..5f10da2bb Binary files /dev/null and b/static/img/buttons/update/button-aks-transparent.png differ diff --git a/static/img/buttons/update/button-amzn-transparent.png b/static/img/buttons/update/button-amzn-transparent.png new file mode 100644 index 000000000..58be565fc Binary files /dev/null and b/static/img/buttons/update/button-amzn-transparent.png differ diff --git a/static/img/buttons/update/button-ansible-transparent.png b/static/img/buttons/update/button-ansible-transparent.png new file mode 100644 index 000000000..21af8ba7b Binary files /dev/null and b/static/img/buttons/update/button-ansible-transparent.png differ diff --git a/static/img/buttons/update/button-azure-transparent.png b/static/img/buttons/update/button-azure-transparent.png new file mode 100644 index 000000000..fe168a0f1 Binary files /dev/null and b/static/img/buttons/update/button-azure-transparent.png differ diff --git a/static/img/buttons/update/button-cloud-transparent.png b/static/img/buttons/update/button-cloud-transparent.png new file mode 100644 index 000000000..73d4a0ce5 Binary files /dev/null and b/static/img/buttons/update/button-cloud-transparent.png differ diff --git a/static/img/buttons/update/button-docker-hub-transparent.png b/static/img/buttons/update/button-docker-hub-transparent.png new file mode 100644 index 000000000..3d798678d Binary files /dev/null and b/static/img/buttons/update/button-docker-hub-transparent.png differ diff --git a/static/img/buttons/update/button-docker-image-transparent.png b/static/img/buttons/update/button-docker-image-transparent.png new file mode 100644 index 000000000..8f31e52cc Binary files /dev/null and b/static/img/buttons/update/button-docker-image-transparent.png differ diff --git a/static/img/buttons/update/button-docker-transparent.png b/static/img/buttons/update/button-docker-transparent.png new file mode 100644 index 000000000..8f31e52cc Binary files /dev/null and b/static/img/buttons/update/button-docker-transparent.png differ diff --git a/static/img/buttons/update/button-ecr-transparent.png b/static/img/buttons/update/button-ecr-transparent.png new file mode 100644 index 000000000..ad30f2643 Binary files /dev/null and b/static/img/buttons/update/button-ecr-transparent.png differ diff --git a/static/img/buttons/update/button-eks-transparent.png b/static/img/buttons/update/button-eks-transparent.png new file mode 100644 index 000000000..e33620878 Binary files /dev/null and b/static/img/buttons/update/button-eks-transparent.png differ diff --git a/static/img/buttons/update/button-gcp-transparent.png b/static/img/buttons/update/button-gcp-transparent.png new file mode 100644 index 000000000..956dbd6a5 Binary files /dev/null and b/static/img/buttons/update/button-gcp-transparent.png differ diff --git a/static/img/buttons/update/button-gcr-transparent.png b/static/img/buttons/update/button-gcr-transparent.png new file mode 100644 index 000000000..91d9336f2 Binary files /dev/null and b/static/img/buttons/update/button-gcr-transparent.png differ diff --git a/static/img/buttons/update/button-gke-transparent.png b/static/img/buttons/update/button-gke-transparent.png new file mode 100644 index 000000000..107887933 Binary files /dev/null and b/static/img/buttons/update/button-gke-transparent.png differ diff --git a/static/img/buttons/update/button-harbor-transparent.png b/static/img/buttons/update/button-harbor-transparent.png new file mode 100644 index 000000000..f121d5230 Binary files /dev/null and b/static/img/buttons/update/button-harbor-transparent.png differ diff --git a/static/img/buttons/update/button-k8s-transparent.png b/static/img/buttons/update/button-k8s-transparent.png new file mode 100644 index 000000000..e96f45a0f Binary files /dev/null and b/static/img/buttons/update/button-k8s-transparent.png differ diff --git a/static/img/buttons/update/button-linux-transparent.png b/static/img/buttons/update/button-linux-transparent.png new file mode 100644 index 000000000..aa77b01e5 Binary files /dev/null and b/static/img/buttons/update/button-linux-transparent.png differ diff --git a/static/img/buttons/update/button-macos-transparent.png b/static/img/buttons/update/button-macos-transparent.png new file mode 100644 index 000000000..b60c3869b Binary files /dev/null and b/static/img/buttons/update/button-macos-transparent.png differ diff --git a/static/img/buttons/update/button-mondooapp-transparent.png b/static/img/buttons/update/button-mondooapp-transparent.png new file mode 100644 index 000000000..3e41e6836 Binary files /dev/null and b/static/img/buttons/update/button-mondooapp-transparent.png differ diff --git a/static/img/buttons/update/button-ms365-transparent.png b/static/img/buttons/update/button-ms365-transparent.png new file mode 100644 index 000000000..fe8ca568c Binary files /dev/null and b/static/img/buttons/update/button-ms365-transparent.png differ diff --git a/static/img/buttons/update/button-server-endpoint-transparent.png b/static/img/buttons/update/button-server-endpoint-transparent.png new file mode 100644 index 000000000..298f6f01e Binary files /dev/null and b/static/img/buttons/update/button-server-endpoint-transparent.png differ diff --git a/static/img/buttons/update/button-ssh-transparent.png b/static/img/buttons/update/button-ssh-transparent.png new file mode 100644 index 000000000..c7376ec6b Binary files /dev/null and b/static/img/buttons/update/button-ssh-transparent.png differ diff --git a/static/img/buttons/update/button-system-transparent.png b/static/img/buttons/update/button-system-transparent.png new file mode 100644 index 000000000..51f8b04f4 Binary files /dev/null and b/static/img/buttons/update/button-system-transparent.png differ diff --git a/static/img/buttons/update/button-vmware-transparent.png b/static/img/buttons/update/button-vmware-transparent.png new file mode 100644 index 000000000..34ef45bf9 Binary files /dev/null and b/static/img/buttons/update/button-vmware-transparent.png differ diff --git a/static/img/buttons/update/button-windows-transparent.png b/static/img/buttons/update/button-windows-transparent.png new file mode 100644 index 000000000..2dd69c501 Binary files /dev/null and b/static/img/buttons/update/button-windows-transparent.png differ diff --git a/static/img/cnquery/cnquery-logo.png b/static/img/cnquery/cnquery-logo.png new file mode 100644 index 000000000..dc2463fb9 Binary files /dev/null and b/static/img/cnquery/cnquery-logo.png differ diff --git a/static/img/cnquery/cnquery-platform-quick-setup.png b/static/img/cnquery/cnquery-platform-quick-setup.png new file mode 100644 index 000000000..a81048f81 Binary files /dev/null and b/static/img/cnquery/cnquery-platform-quick-setup.png differ diff --git a/static/img/cnspec/aws/aws-guide-start.png b/static/img/cnspec/aws/aws-guide-start.png new file mode 100644 index 000000000..dfd6c9c55 Binary files /dev/null and b/static/img/cnspec/aws/aws-guide-start.png differ diff --git a/static/img/cnspec/aws/aws-packer-image.png b/static/img/cnspec/aws/aws-packer-image.png new file mode 100644 index 000000000..b6af1942f Binary files /dev/null and b/static/img/cnspec/aws/aws-packer-image.png differ diff --git a/static/img/cnspec/aws/control-details.png b/static/img/cnspec/aws/control-details.png new file mode 100644 index 000000000..389148b8c Binary files /dev/null and b/static/img/cnspec/aws/control-details.png differ diff --git a/static/img/cnspec/aws/controls-tab.png b/static/img/cnspec/aws/controls-tab.png new file mode 100644 index 000000000..53d734c89 Binary files /dev/null and b/static/img/cnspec/aws/controls-tab.png differ diff --git a/static/img/cnspec/aws/cs-choose-aws.png b/static/img/cnspec/aws/cs-choose-aws.png new file mode 100644 index 000000000..6abc17abd Binary files /dev/null and b/static/img/cnspec/aws/cs-choose-aws.png differ diff --git a/static/img/cnspec/aws/cs-open-cs.png b/static/img/cnspec/aws/cs-open-cs.png new file mode 100644 index 000000000..1f9ffc58b Binary files /dev/null and b/static/img/cnspec/aws/cs-open-cs.png differ diff --git a/static/img/cnspec/aws/cs-token.png b/static/img/cnspec/aws/cs-token.png new file mode 100644 index 000000000..65e7745c9 Binary files /dev/null and b/static/img/cnspec/aws/cs-token.png differ diff --git a/static/img/cnspec/aws/packer-asset.png b/static/img/cnspec/aws/packer-asset.png new file mode 100644 index 000000000..44fcbaf5c Binary files /dev/null and b/static/img/cnspec/aws/packer-asset.png differ diff --git a/static/img/cnspec/cnspec-add-integration.png b/static/img/cnspec/cnspec-add-integration.png new file mode 100644 index 000000000..801c467d2 Binary files /dev/null and b/static/img/cnspec/cnspec-add-integration.png differ diff --git a/static/img/cnspec/cnspec-logo.png b/static/img/cnspec/cnspec-logo.png new file mode 100644 index 000000000..be9c5efbe Binary files /dev/null and b/static/img/cnspec/cnspec-logo.png differ diff --git a/static/img/cnspec/cnspec-platform-quick-setup.png b/static/img/cnspec/cnspec-platform-quick-setup.png new file mode 100644 index 000000000..63b6cf22d Binary files /dev/null and b/static/img/cnspec/cnspec-platform-quick-setup.png differ diff --git a/static/img/cnspec/console.png b/static/img/cnspec/console.png new file mode 100644 index 000000000..f9e3d8133 Binary files /dev/null and b/static/img/cnspec/console.png differ diff --git a/static/img/cnspec/gcp/gcp-console-machine-image.png b/static/img/cnspec/gcp/gcp-console-machine-image.png new file mode 100644 index 000000000..8baa107c8 Binary files /dev/null and b/static/img/cnspec/gcp/gcp-console-machine-image.png differ diff --git a/static/img/cnspec/gcp/packer-asset.png b/static/img/cnspec/gcp/packer-asset.png new file mode 100644 index 000000000..6fe9076ed Binary files /dev/null and b/static/img/cnspec/gcp/packer-asset.png differ diff --git a/static/img/cnspec/oci/add-api-key.png b/static/img/cnspec/oci/add-api-key.png new file mode 100644 index 000000000..32b1c9a7c Binary files /dev/null and b/static/img/cnspec/oci/add-api-key.png differ diff --git a/static/img/cnspec/oci/api-keys.png b/static/img/cnspec/oci/api-keys.png new file mode 100644 index 000000000..37e029925 Binary files /dev/null and b/static/img/cnspec/oci/api-keys.png differ diff --git a/static/img/cnspec/oci/config-preview.png b/static/img/cnspec/oci/config-preview.png new file mode 100644 index 000000000..47c7a13c9 Binary files /dev/null and b/static/img/cnspec/oci/config-preview.png differ diff --git a/static/img/cnspec/oci/profile-menu.png b/static/img/cnspec/oci/profile-menu.png new file mode 100644 index 000000000..739d46043 Binary files /dev/null and b/static/img/cnspec/oci/profile-menu.png differ diff --git a/static/img/cnspec/policies/policy-bundle.png b/static/img/cnspec/policies/policy-bundle.png new file mode 100644 index 000000000..78c61cda8 Binary files /dev/null and b/static/img/cnspec/policies/policy-bundle.png differ diff --git a/static/img/cnspec/policies/registry-cats.png b/static/img/cnspec/policies/registry-cats.png new file mode 100644 index 000000000..bfe18067a Binary files /dev/null and b/static/img/cnspec/policies/registry-cats.png differ diff --git a/static/img/cnspec/policies/registry-check.png b/static/img/cnspec/policies/registry-check.png new file mode 100644 index 000000000..11c994c71 Binary files /dev/null and b/static/img/cnspec/policies/registry-check.png differ diff --git a/static/img/cnspec/policies/registry-filter.png b/static/img/cnspec/policies/registry-filter.png new file mode 100644 index 000000000..e8dc98045 Binary files /dev/null and b/static/img/cnspec/policies/registry-filter.png differ diff --git a/static/img/cnspec/policies/registry-policies.png b/static/img/cnspec/policies/registry-policies.png new file mode 100644 index 000000000..06b96adcf Binary files /dev/null and b/static/img/cnspec/policies/registry-policies.png differ diff --git a/static/img/cnspec/policies/run.png b/static/img/cnspec/policies/run.png new file mode 100644 index 000000000..8b23c93af Binary files /dev/null and b/static/img/cnspec/policies/run.png differ diff --git a/static/img/cnspec/report.png b/static/img/cnspec/report.png new file mode 100644 index 000000000..746079f32 Binary files /dev/null and b/static/img/cnspec/report.png differ diff --git a/static/img/cnspec/supplychain/registry/harbor/harbor_configure_1.png b/static/img/cnspec/supplychain/registry/harbor/harbor_configure_1.png new file mode 100644 index 000000000..9d880716a Binary files /dev/null and b/static/img/cnspec/supplychain/registry/harbor/harbor_configure_1.png differ diff --git a/static/img/cnspec/supplychain/registry/harbor/harbor_configure_2.png b/static/img/cnspec/supplychain/registry/harbor/harbor_configure_2.png new file mode 100644 index 000000000..f68165593 Binary files /dev/null and b/static/img/cnspec/supplychain/registry/harbor/harbor_configure_2.png differ diff --git a/static/img/cnspec/supplychain/registry/harbor/harbor_scan_1.png b/static/img/cnspec/supplychain/registry/harbor/harbor_scan_1.png new file mode 100644 index 000000000..f795e015d Binary files /dev/null and b/static/img/cnspec/supplychain/registry/harbor/harbor_scan_1.png differ diff --git a/static/img/cnspec/supplychain/registry/harbor/harbor_scan_2.png b/static/img/cnspec/supplychain/registry/harbor/harbor_scan_2.png new file mode 100644 index 000000000..063d714ab Binary files /dev/null and b/static/img/cnspec/supplychain/registry/harbor/harbor_scan_2.png differ diff --git a/static/img/cnspec/supplychain/registry/harbor/harbor_scan_3.png b/static/img/cnspec/supplychain/registry/harbor/harbor_scan_3.png new file mode 100644 index 000000000..8e842c73c Binary files /dev/null and b/static/img/cnspec/supplychain/registry/harbor/harbor_scan_3.png differ diff --git a/static/img/cnspec/terraform/terraform-asset.png b/static/img/cnspec/terraform/terraform-asset.png new file mode 100644 index 000000000..733a818a0 Binary files /dev/null and b/static/img/cnspec/terraform/terraform-asset.png differ diff --git a/static/img/docs-welcome.png b/static/img/docs-welcome.png new file mode 100644 index 000000000..eb53e6000 Binary files /dev/null and b/static/img/docs-welcome.png differ diff --git a/static/img/favicon.ico b/static/img/favicon.ico new file mode 100644 index 000000000..9e3dd564e Binary files /dev/null and b/static/img/favicon.ico differ diff --git a/static/img/featured_img/mondoo-365.jpg b/static/img/featured_img/mondoo-365.jpg new file mode 100644 index 000000000..29e77791d Binary files /dev/null and b/static/img/featured_img/mondoo-365.jpg differ diff --git a/static/img/featured_img/mondoo-aws.jpg b/static/img/featured_img/mondoo-aws.jpg new file mode 100644 index 000000000..0ed5939f4 Binary files /dev/null and b/static/img/featured_img/mondoo-aws.jpg differ diff --git a/static/img/featured_img/mondoo-azure.jpg b/static/img/featured_img/mondoo-azure.jpg new file mode 100644 index 000000000..99f64654f Binary files /dev/null and b/static/img/featured_img/mondoo-azure.jpg differ diff --git a/static/img/featured_img/mondoo-circleci.jpg b/static/img/featured_img/mondoo-circleci.jpg new file mode 100644 index 000000000..c399f8eba Binary files /dev/null and b/static/img/featured_img/mondoo-circleci.jpg differ diff --git a/static/img/featured_img/mondoo-docker.jpg b/static/img/featured_img/mondoo-docker.jpg new file mode 100644 index 000000000..b945586ee Binary files /dev/null and b/static/img/featured_img/mondoo-docker.jpg differ diff --git a/static/img/featured_img/mondoo-feature.jpg b/static/img/featured_img/mondoo-feature.jpg new file mode 100644 index 000000000..87830546a Binary files /dev/null and b/static/img/featured_img/mondoo-feature.jpg differ diff --git a/static/img/featured_img/mondoo-gcp.jpg b/static/img/featured_img/mondoo-gcp.jpg new file mode 100644 index 000000000..1c228d974 Binary files /dev/null and b/static/img/featured_img/mondoo-gcp.jpg differ diff --git a/static/img/featured_img/mondoo-github.jpg b/static/img/featured_img/mondoo-github.jpg new file mode 100644 index 000000000..bc1340cde Binary files /dev/null and b/static/img/featured_img/mondoo-github.jpg differ diff --git a/static/img/featured_img/mondoo-gitlab.jpg b/static/img/featured_img/mondoo-gitlab.jpg new file mode 100644 index 000000000..ac962a4ca Binary files /dev/null and b/static/img/featured_img/mondoo-gitlab.jpg differ diff --git a/static/img/featured_img/mondoo-jenkins.jpg b/static/img/featured_img/mondoo-jenkins.jpg new file mode 100644 index 000000000..c4906e998 Binary files /dev/null and b/static/img/featured_img/mondoo-jenkins.jpg differ diff --git a/static/img/featured_img/mondoo-kubernetes.jpg b/static/img/featured_img/mondoo-kubernetes.jpg new file mode 100644 index 000000000..38c958c21 Binary files /dev/null and b/static/img/featured_img/mondoo-kubernetes.jpg differ diff --git a/static/img/featured_img/mondoo-oracle.png b/static/img/featured_img/mondoo-oracle.png new file mode 100644 index 000000000..9bc13fcc0 Binary files /dev/null and b/static/img/featured_img/mondoo-oracle.png differ diff --git a/static/img/featured_img/mondoo-packer.jpg b/static/img/featured_img/mondoo-packer.jpg new file mode 100644 index 000000000..d6bcf5054 Binary files /dev/null and b/static/img/featured_img/mondoo-packer.jpg differ diff --git a/static/img/featured_img/mondoo-terraform.jpg b/static/img/featured_img/mondoo-terraform.jpg new file mode 100644 index 000000000..9494f2dc1 Binary files /dev/null and b/static/img/featured_img/mondoo-terraform.jpg differ diff --git a/static/img/featured_img/mondoo-vmware.jpg b/static/img/featured_img/mondoo-vmware.jpg new file mode 100644 index 000000000..e7ce7f03b Binary files /dev/null and b/static/img/featured_img/mondoo-vmware.jpg differ diff --git a/static/img/icons/chevron-icon.svg b/static/img/icons/chevron-icon.svg new file mode 100644 index 000000000..a6e4db679 --- /dev/null +++ b/static/img/icons/chevron-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/icons/clock-icon.svg b/static/img/icons/clock-icon.svg new file mode 100644 index 000000000..68b9cc6a7 --- /dev/null +++ b/static/img/icons/clock-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/mondoo-logo-newpurple-darkmode.png b/static/img/mondoo-logo-newpurple-darkmode.png new file mode 100644 index 000000000..6812956ca Binary files /dev/null and b/static/img/mondoo-logo-newpurple-darkmode.png differ diff --git a/static/img/mondoo-logo-newpurple.png b/static/img/mondoo-logo-newpurple.png new file mode 100644 index 000000000..ca3a310aa Binary files /dev/null and b/static/img/mondoo-logo-newpurple.png differ diff --git a/static/img/platform/compliance/accept-reject.png b/static/img/platform/compliance/accept-reject.png new file mode 100644 index 000000000..92f33d221 Binary files /dev/null and b/static/img/platform/compliance/accept-reject.png differ diff --git a/static/img/platform/compliance/check-exceptions.png b/static/img/platform/compliance/check-exceptions.png new file mode 100644 index 000000000..acc2932e9 Binary files /dev/null and b/static/img/platform/compliance/check-exceptions.png differ diff --git a/static/img/platform/compliance/checks-with-exception.png b/static/img/platform/compliance/checks-with-exception.png new file mode 100644 index 000000000..6a9aac1c7 Binary files /dev/null and b/static/img/platform/compliance/checks-with-exception.png differ diff --git a/static/img/platform/compliance/control-selected.png b/static/img/platform/compliance/control-selected.png new file mode 100644 index 000000000..b2f3d06e0 Binary files /dev/null and b/static/img/platform/compliance/control-selected.png differ diff --git a/static/img/platform/compliance/control-snoozed.png b/static/img/platform/compliance/control-snoozed.png new file mode 100644 index 000000000..927dad938 Binary files /dev/null and b/static/img/platform/compliance/control-snoozed.png differ diff --git a/static/img/platform/compliance/control.png b/static/img/platform/compliance/control.png new file mode 100644 index 000000000..6d05462cf Binary files /dev/null and b/static/img/platform/compliance/control.png differ diff --git a/static/img/platform/compliance/controls-checks-policies.png b/static/img/platform/compliance/controls-checks-policies.png new file mode 100644 index 000000000..e63b6af8a Binary files /dev/null and b/static/img/platform/compliance/controls-checks-policies.png differ diff --git a/static/img/platform/compliance/controls-checks.png b/static/img/platform/compliance/controls-checks.png new file mode 100644 index 000000000..71e488a24 Binary files /dev/null and b/static/img/platform/compliance/controls-checks.png differ diff --git a/static/img/platform/compliance/controls.png b/static/img/platform/compliance/controls.png new file mode 100644 index 000000000..0343aa9f2 Binary files /dev/null and b/static/img/platform/compliance/controls.png differ diff --git a/static/img/platform/compliance/enable-recommended.png b/static/img/platform/compliance/enable-recommended.png new file mode 100644 index 000000000..7d6d41f7c Binary files /dev/null and b/static/img/platform/compliance/enable-recommended.png differ diff --git a/static/img/platform/compliance/exception.png b/static/img/platform/compliance/exception.png new file mode 100644 index 000000000..99efd02e2 Binary files /dev/null and b/static/img/platform/compliance/exception.png differ diff --git a/static/img/platform/compliance/framework.png b/static/img/platform/compliance/framework.png new file mode 100644 index 000000000..7960a9be3 Binary files /dev/null and b/static/img/platform/compliance/framework.png differ diff --git a/static/img/platform/compliance/home.png b/static/img/platform/compliance/home.png new file mode 100644 index 000000000..2f41313fc Binary files /dev/null and b/static/img/platform/compliance/home.png differ diff --git a/static/img/platform/compliance/out-of-scope.png b/static/img/platform/compliance/out-of-scope.png new file mode 100644 index 000000000..15f35ef1a Binary files /dev/null and b/static/img/platform/compliance/out-of-scope.png differ diff --git a/static/img/platform/compliance/preview.png b/static/img/platform/compliance/preview.png new file mode 100644 index 000000000..b381d1e36 Binary files /dev/null and b/static/img/platform/compliance/preview.png differ diff --git a/static/img/platform/compliance/re-enable-check.png b/static/img/platform/compliance/re-enable-check.png new file mode 100644 index 000000000..b1584f27f Binary files /dev/null and b/static/img/platform/compliance/re-enable-check.png differ diff --git a/static/img/platform/compliance/recommended.png b/static/img/platform/compliance/recommended.png new file mode 100644 index 000000000..5c2e1a935 Binary files /dev/null and b/static/img/platform/compliance/recommended.png differ diff --git a/static/img/platform/compliance/report-confirm.png b/static/img/platform/compliance/report-confirm.png new file mode 100644 index 000000000..f96ea0ced Binary files /dev/null and b/static/img/platform/compliance/report-confirm.png differ diff --git a/static/img/platform/compliance/report-controls.png b/static/img/platform/compliance/report-controls.png new file mode 100644 index 000000000..7a2d9d8f6 Binary files /dev/null and b/static/img/platform/compliance/report-controls.png differ diff --git a/static/img/platform/compliance/report-dialog.png b/static/img/platform/compliance/report-dialog.png new file mode 100644 index 000000000..77754e138 Binary files /dev/null and b/static/img/platform/compliance/report-dialog.png differ diff --git a/static/img/platform/compliance/report-framework.png b/static/img/platform/compliance/report-framework.png new file mode 100644 index 000000000..475ebbc77 Binary files /dev/null and b/static/img/platform/compliance/report-framework.png differ diff --git a/static/img/platform/compliance/report-icon.png b/static/img/platform/compliance/report-icon.png new file mode 100644 index 000000000..693ff53e6 Binary files /dev/null and b/static/img/platform/compliance/report-icon.png differ diff --git a/static/img/platform/compliance/reports-page.png b/static/img/platform/compliance/reports-page.png new file mode 100644 index 000000000..d8d005a8d Binary files /dev/null and b/static/img/platform/compliance/reports-page.png differ diff --git a/static/img/platform/compliance/select-check.png b/static/img/platform/compliance/select-check.png new file mode 100644 index 000000000..d4122c141 Binary files /dev/null and b/static/img/platform/compliance/select-check.png differ diff --git a/static/img/platform/compliance/select-controls.png b/static/img/platform/compliance/select-controls.png new file mode 100644 index 000000000..3323e94f8 Binary files /dev/null and b/static/img/platform/compliance/select-controls.png differ diff --git a/static/img/platform/compliance/set-exception-2.png b/static/img/platform/compliance/set-exception-2.png new file mode 100644 index 000000000..60571fe88 Binary files /dev/null and b/static/img/platform/compliance/set-exception-2.png differ diff --git a/static/img/platform/compliance/set-exception-check.png b/static/img/platform/compliance/set-exception-check.png new file mode 100644 index 000000000..ff105d0cb Binary files /dev/null and b/static/img/platform/compliance/set-exception-check.png differ diff --git a/static/img/platform/compliance/set-exception.png b/static/img/platform/compliance/set-exception.png new file mode 100644 index 000000000..558ff8ba3 Binary files /dev/null and b/static/img/platform/compliance/set-exception.png differ diff --git a/static/img/platform/compliance/set-in-scope.png b/static/img/platform/compliance/set-in-scope.png new file mode 100644 index 000000000..5a062de4d Binary files /dev/null and b/static/img/platform/compliance/set-in-scope.png differ diff --git a/static/img/platform/infra/add-cloud.png b/static/img/platform/infra/add-cloud.png new file mode 100644 index 000000000..10eacab49 Binary files /dev/null and b/static/img/platform/infra/add-cloud.png differ diff --git a/static/img/platform/infra/circleci/dash.png b/static/img/platform/infra/circleci/dash.png new file mode 100644 index 000000000..4d2d07ba9 Binary files /dev/null and b/static/img/platform/infra/circleci/dash.png differ diff --git a/static/img/platform/infra/circleci/environment-variable.png b/static/img/platform/infra/circleci/environment-variable.png new file mode 100644 index 000000000..72c960917 Binary files /dev/null and b/static/img/platform/infra/circleci/environment-variable.png differ diff --git a/static/img/platform/infra/circleci/mondoo-cicd-circleci-result-text.png b/static/img/platform/infra/circleci/mondoo-cicd-circleci-result-text.png new file mode 100644 index 000000000..440042811 Binary files /dev/null and b/static/img/platform/infra/circleci/mondoo-cicd-circleci-result-text.png differ diff --git a/static/img/platform/infra/cloud/aws/add-aws-bottom.png b/static/img/platform/infra/cloud/aws/add-aws-bottom.png new file mode 100644 index 000000000..0cfce2de7 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/add-aws-bottom.png differ diff --git a/static/img/platform/infra/cloud/aws/add-aws-ec2.png b/static/img/platform/infra/cloud/aws/add-aws-ec2.png new file mode 100644 index 000000000..1b8742d9a Binary files /dev/null and b/static/img/platform/infra/cloud/aws/add-aws-ec2.png differ diff --git a/static/img/platform/infra/cloud/aws/add-aws-top.png b/static/img/platform/infra/cloud/aws/add-aws-top.png new file mode 100644 index 000000000..1d6c42d22 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/add-aws-top.png differ diff --git a/static/img/platform/infra/cloud/aws/aws-attach-ebs-iam-role.png b/static/img/platform/infra/cloud/aws/aws-attach-ebs-iam-role.png new file mode 100644 index 000000000..3fced6c05 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/aws-attach-ebs-iam-role.png differ diff --git a/static/img/platform/infra/cloud/aws/aws-configure-scan-schedule.png b/static/img/platform/infra/cloud/aws/aws-configure-scan-schedule.png new file mode 100644 index 000000000..6e2fa6c55 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/aws-configure-scan-schedule.png differ diff --git a/static/img/platform/infra/cloud/aws/aws-ec2-instance-for-ebs-volume-scan.png b/static/img/platform/infra/cloud/aws/aws-ec2-instance-for-ebs-volume-scan.png new file mode 100644 index 000000000..b90b14871 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/aws-ec2-instance-for-ebs-volume-scan.png differ diff --git a/static/img/platform/infra/cloud/aws/aws_instance_results.png b/static/img/platform/infra/cloud/aws/aws_instance_results.png new file mode 100644 index 000000000..cce96c22b Binary files /dev/null and b/static/img/platform/infra/cloud/aws/aws_instance_results.png differ diff --git a/static/img/platform/infra/cloud/aws/integration-config.png b/static/img/platform/infra/cloud/aws/integration-config.png new file mode 100644 index 000000000..d8840f78f Binary files /dev/null and b/static/img/platform/infra/cloud/aws/integration-config.png differ diff --git a/static/img/platform/infra/cloud/aws/integration-overview.png b/static/img/platform/infra/cloud/aws/integration-overview.png new file mode 100644 index 000000000..2205edf8f Binary files /dev/null and b/static/img/platform/infra/cloud/aws/integration-overview.png differ diff --git a/static/img/platform/infra/cloud/aws/integration-policies.png b/static/img/platform/infra/cloud/aws/integration-policies.png new file mode 100644 index 000000000..e32b85a4c Binary files /dev/null and b/static/img/platform/infra/cloud/aws/integration-policies.png differ diff --git a/static/img/platform/infra/cloud/aws/integration-scan-now.png b/static/img/platform/infra/cloud/aws/integration-scan-now.png new file mode 100644 index 000000000..e6610d41c Binary files /dev/null and b/static/img/platform/infra/cloud/aws/integration-scan-now.png differ diff --git a/static/img/platform/infra/cloud/aws/lambda-envvars.png b/static/img/platform/infra/cloud/aws/lambda-envvars.png new file mode 100644 index 000000000..6d26fda7f Binary files /dev/null and b/static/img/platform/infra/cloud/aws/lambda-envvars.png differ diff --git a/static/img/platform/infra/cloud/aws/lambda-loggroup.png b/static/img/platform/infra/cloud/aws/lambda-loggroup.png new file mode 100644 index 000000000..d45f72226 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/lambda-loggroup.png differ diff --git a/static/img/platform/infra/cloud/aws/list.png b/static/img/platform/infra/cloud/aws/list.png new file mode 100644 index 000000000..d72fd1d7d Binary files /dev/null and b/static/img/platform/infra/cloud/aws/list.png differ diff --git a/static/img/platform/infra/cloud/aws/ssh.png b/static/img/platform/infra/cloud/aws/ssh.png new file mode 100644 index 000000000..babdc72a8 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssh.png differ diff --git a/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-01-org.png b/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-01-org.png new file mode 100644 index 000000000..ed0d0149e Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-01-org.png differ diff --git a/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-02-org.png b/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-02-org.png new file mode 100644 index 000000000..807f4e15b Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-02-org.png differ diff --git a/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-03-org.png b/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-03-org.png new file mode 100644 index 000000000..ed781d9fa Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/AWS-SSM-03-org.png differ diff --git a/static/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-policy.png b/static/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-policy.png new file mode 100644 index 000000000..bdc330297 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-policy.png differ diff --git a/static/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-role.png b/static/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-role.png new file mode 100644 index 000000000..1df26ee1e Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/aws-ebs-scan-role.png differ diff --git a/static/img/platform/infra/cloud/aws/ssm/aws_ssm_gui.gif b/static/img/platform/infra/cloud/aws/ssm/aws_ssm_gui.gif new file mode 100644 index 000000000..5fb412e2e Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/aws_ssm_gui.gif differ diff --git a/static/img/platform/infra/cloud/aws/ssm/aws_ssm_gui_ec2.gif b/static/img/platform/infra/cloud/aws/ssm/aws_ssm_gui_ec2.gif new file mode 100644 index 000000000..51fbe44be Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/aws_ssm_gui_ec2.gif differ diff --git a/static/img/platform/infra/cloud/aws/ssm/cli_get_role_arn.gif b/static/img/platform/infra/cloud/aws/ssm/cli_get_role_arn.gif new file mode 100644 index 000000000..c72f72960 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/cli_get_role_arn.gif differ diff --git a/static/img/platform/infra/cloud/aws/ssm/ssm-role-creation.png b/static/img/platform/infra/cloud/aws/ssm/ssm-role-creation.png new file mode 100644 index 000000000..fa4f7fb79 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/ssm-role-creation.png differ diff --git a/static/img/platform/infra/cloud/aws/ssm/validate_ssm_gui.gif b/static/img/platform/infra/cloud/aws/ssm/validate_ssm_gui.gif new file mode 100644 index 000000000..46dd73044 Binary files /dev/null and b/static/img/platform/infra/cloud/aws/ssm/validate_ssm_gui.gif differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-active.png b/static/img/platform/infra/cloud/azure/add-int-azure-active.png new file mode 100644 index 000000000..b704e7647 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-active.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-add-role.png b/static/img/platform/infra/cloud/azure/add-int-azure-add-role.png new file mode 100644 index 000000000..67d4d910c Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-add-role.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-bottom.png b/static/img/platform/infra/cloud/azure/add-int-azure-bottom.png new file mode 100644 index 000000000..cf841adf6 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-bottom.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-confirm-create.png b/static/img/platform/infra/cloud/azure/add-int-azure-confirm-create.png new file mode 100644 index 000000000..49e5932e1 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-confirm-create.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-create-from-json.png b/static/img/platform/infra/cloud/azure/add-int-azure-create-from-json.png new file mode 100644 index 000000000..6bf1a18a3 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-create-from-json.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-custom-member.png b/static/img/platform/infra/cloud/azure/add-int-azure-custom-member.png new file mode 100644 index 000000000..f68720c2d Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-custom-member.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-key-vault.png b/static/img/platform/infra/cloud/azure/add-int-azure-key-vault.png new file mode 100644 index 000000000..fbe42b2d3 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-key-vault.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-role-member.png b/static/img/platform/infra/cloud/azure/add-int-azure-role-member.png new file mode 100644 index 000000000..96ba82019 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-role-member.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-select-member.png b/static/img/platform/infra/cloud/azure/add-int-azure-select-member.png new file mode 100644 index 000000000..28f6683e1 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-select-member.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-subscription.png b/static/img/platform/infra/cloud/azure/add-int-azure-subscription.png new file mode 100644 index 000000000..4d0c96ffd Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-subscription.png differ diff --git a/static/img/platform/infra/cloud/azure/add-int-azure-top.png b/static/img/platform/infra/cloud/azure/add-int-azure-top.png new file mode 100644 index 000000000..f166375e3 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/add-int-azure-top.png differ diff --git a/static/img/platform/infra/cloud/azure/after-new-app-reg.png b/static/img/platform/infra/cloud/azure/after-new-app-reg.png new file mode 100644 index 000000000..603cc4072 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/after-new-app-reg.png differ diff --git a/static/img/platform/infra/cloud/azure/api-permissions.png b/static/img/platform/infra/cloud/azure/api-permissions.png new file mode 100644 index 000000000..ff04c4916 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/api-permissions.png differ diff --git a/static/img/platform/infra/cloud/azure/app-regs.png b/static/img/platform/infra/cloud/azure/app-regs.png new file mode 100644 index 000000000..aab85a671 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/app-regs.png differ diff --git a/static/img/platform/infra/cloud/azure/key-vault-access.png b/static/img/platform/infra/cloud/azure/key-vault-access.png new file mode 100644 index 000000000..9d1cc35f0 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/key-vault-access.png differ diff --git a/static/img/platform/infra/cloud/azure/keyvault.png b/static/img/platform/infra/cloud/azure/keyvault.png new file mode 100644 index 000000000..7cbb88804 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/keyvault.png differ diff --git a/static/img/platform/infra/cloud/azure/new-app-reg.png b/static/img/platform/infra/cloud/azure/new-app-reg.png new file mode 100644 index 000000000..e1ccead48 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/new-app-reg.png differ diff --git a/static/img/platform/infra/cloud/azure/portal-home.png b/static/img/platform/infra/cloud/azure/portal-home.png new file mode 100644 index 000000000..9bb164543 Binary files /dev/null and b/static/img/platform/infra/cloud/azure/portal-home.png differ diff --git a/static/img/platform/infra/cloud/azure/request-api-permission.png b/static/img/platform/infra/cloud/azure/request-api-permission.png new file mode 100644 index 000000000..791f9067f Binary files /dev/null and b/static/img/platform/infra/cloud/azure/request-api-permission.png differ diff --git a/static/img/platform/infra/cloud/azure/select-add-permission.png b/static/img/platform/infra/cloud/azure/select-add-permission.png new file mode 100644 index 000000000..3d43d3bfa Binary files /dev/null and b/static/img/platform/infra/cloud/azure/select-add-permission.png differ diff --git a/static/img/platform/infra/cloud/azure/subscriptions.png b/static/img/platform/infra/cloud/azure/subscriptions.png new file mode 100644 index 000000000..bced6dfcb Binary files /dev/null and b/static/img/platform/infra/cloud/azure/subscriptions.png differ diff --git a/static/img/platform/infra/cloud/gcp/add-int-gcp-bottom.png b/static/img/platform/infra/cloud/gcp/add-int-gcp-bottom.png new file mode 100644 index 000000000..5541365e0 Binary files /dev/null and b/static/img/platform/infra/cloud/gcp/add-int-gcp-bottom.png differ diff --git a/static/img/platform/infra/cloud/gcp/add-int-gcp-top.png b/static/img/platform/infra/cloud/gcp/add-int-gcp-top.png new file mode 100644 index 000000000..a494f5eea Binary files /dev/null and b/static/img/platform/infra/cloud/gcp/add-int-gcp-top.png differ diff --git a/static/img/platform/infra/cloud/kubernetes/.gitkeep b/static/img/platform/infra/cloud/kubernetes/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/static/img/platform/infra/cloud/kubernetes/integration-delete.png b/static/img/platform/infra/cloud/kubernetes/integration-delete.png new file mode 100644 index 000000000..0f14e35d6 Binary files /dev/null and b/static/img/platform/infra/cloud/kubernetes/integration-delete.png differ diff --git a/static/img/platform/infra/cloud/kubernetes/integration-details.png b/static/img/platform/infra/cloud/kubernetes/integration-details.png new file mode 100644 index 000000000..b44d7329b Binary files /dev/null and b/static/img/platform/infra/cloud/kubernetes/integration-details.png differ diff --git a/static/img/platform/infra/cloud/kubernetes/integration-list.png b/static/img/platform/infra/cloud/kubernetes/integration-list.png new file mode 100644 index 000000000..1b602546f Binary files /dev/null and b/static/img/platform/infra/cloud/kubernetes/integration-list.png differ diff --git a/static/img/platform/infra/cloud/kubernetes/integration-setup.png b/static/img/platform/infra/cloud/kubernetes/integration-setup.png new file mode 100644 index 000000000..5a44417e9 Binary files /dev/null and b/static/img/platform/infra/cloud/kubernetes/integration-setup.png differ diff --git a/static/img/platform/infra/cloud/vmware/add-permission-to-mondoo-read-account.png b/static/img/platform/infra/cloud/vmware/add-permission-to-mondoo-read-account.png new file mode 100644 index 000000000..7d30e9db4 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/add-permission-to-mondoo-read-account.png differ diff --git a/static/img/platform/infra/cloud/vmware/clone-read-only-role.png b/static/img/platform/infra/cloud/vmware/clone-read-only-role.png new file mode 100644 index 000000000..f690dae16 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/clone-read-only-role.png differ diff --git a/static/img/platform/infra/cloud/vmware/create-mondoo-read-account.png b/static/img/platform/infra/cloud/vmware/create-mondoo-read-account.png new file mode 100644 index 000000000..1905bd066 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/create-mondoo-read-account.png differ diff --git a/static/img/platform/infra/cloud/vmware/mondoo-role-global-settings.png b/static/img/platform/infra/cloud/vmware/mondoo-role-global-settings.png new file mode 100644 index 000000000..5b00cb036 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/mondoo-role-global-settings.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-deploy-ovf-template.png b/static/img/platform/infra/cloud/vmware/vmware-deploy-ovf-template.png new file mode 100644 index 000000000..92e7a1333 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-deploy-ovf-template.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-ready.png b/static/img/platform/infra/cloud/vmware/vmware-ready.png new file mode 100644 index 000000000..6de336a0d Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-ready.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-review-details.png b/static/img/platform/infra/cloud/vmware/vmware-review-details.png new file mode 100644 index 000000000..92daa5b57 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-review-details.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-select-compute-resource.png b/static/img/platform/infra/cloud/vmware/vmware-select-compute-resource.png new file mode 100644 index 000000000..bac731fdc Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-select-compute-resource.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-select-name-folder.png b/static/img/platform/infra/cloud/vmware/vmware-select-name-folder.png new file mode 100644 index 000000000..b676879e3 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-select-name-folder.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-select-network.png b/static/img/platform/infra/cloud/vmware/vmware-select-network.png new file mode 100644 index 000000000..7958eb36a Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-select-network.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-select-ovf-template.png b/static/img/platform/infra/cloud/vmware/vmware-select-ovf-template.png new file mode 100644 index 000000000..27c61a05c Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-select-ovf-template.png differ diff --git a/static/img/platform/infra/cloud/vmware/vmware-select-storage.png b/static/img/platform/infra/cloud/vmware/vmware-select-storage.png new file mode 100644 index 000000000..b12ffa555 Binary files /dev/null and b/static/img/platform/infra/cloud/vmware/vmware-select-storage.png differ diff --git a/static/img/platform/infra/docker-hub-scan.gif b/static/img/platform/infra/docker-hub-scan.gif new file mode 100644 index 000000000..c8829c7b6 Binary files /dev/null and b/static/img/platform/infra/docker-hub-scan.gif differ diff --git a/static/img/platform/infra/github/github.png b/static/img/platform/infra/github/github.png new file mode 100644 index 000000000..3449d302d Binary files /dev/null and b/static/img/platform/infra/github/github.png differ diff --git a/static/img/platform/infra/github/secret.png b/static/img/platform/infra/github/secret.png new file mode 100644 index 000000000..6a2929faf Binary files /dev/null and b/static/img/platform/infra/github/secret.png differ diff --git a/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-config.png b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-config.png new file mode 100644 index 000000000..4010fd5ef Binary files /dev/null and b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-config.png differ diff --git a/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-console.png b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-console.png new file mode 100644 index 000000000..77606554e Binary files /dev/null and b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-console.png differ diff --git a/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-junit.png b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-junit.png new file mode 100644 index 000000000..b632cff4a Binary files /dev/null and b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-junit.png differ diff --git a/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-text.png b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-text.png new file mode 100644 index 000000000..de1dabf0b Binary files /dev/null and b/static/img/platform/infra/gitlab/mondoo-cicd-gitlab-result-text.png differ diff --git a/static/img/platform/infra/harbor-scan.gif b/static/img/platform/infra/harbor-scan.gif new file mode 100644 index 000000000..017ff1bb0 Binary files /dev/null and b/static/img/platform/infra/harbor-scan.gif differ diff --git a/static/img/platform/infra/jenkins/mondoo-cicd-jenkins-credentials.png b/static/img/platform/infra/jenkins/mondoo-cicd-jenkins-credentials.png new file mode 100644 index 000000000..e01ad391e Binary files /dev/null and b/static/img/platform/infra/jenkins/mondoo-cicd-jenkins-credentials.png differ diff --git a/static/img/platform/infra/jenkins/mondoo-cicd-jenkins-result-text.png b/static/img/platform/infra/jenkins/mondoo-cicd-jenkins-result-text.png new file mode 100644 index 000000000..94d0e5a25 Binary files /dev/null and b/static/img/platform/infra/jenkins/mondoo-cicd-jenkins-result-text.png differ diff --git a/static/img/platform/infra/networking/domain-ip.png b/static/img/platform/infra/networking/domain-ip.png new file mode 100644 index 000000000..082aa0d29 Binary files /dev/null and b/static/img/platform/infra/networking/domain-ip.png differ diff --git a/static/img/platform/infra/oci/add-api-key.png b/static/img/platform/infra/oci/add-api-key.png new file mode 100644 index 000000000..8e3e05c97 Binary files /dev/null and b/static/img/platform/infra/oci/add-api-key.png differ diff --git a/static/img/platform/infra/oci/add-oci-bottom.png b/static/img/platform/infra/oci/add-oci-bottom.png new file mode 100644 index 000000000..2fc2580f2 Binary files /dev/null and b/static/img/platform/infra/oci/add-oci-bottom.png differ diff --git a/static/img/platform/infra/oci/add-oci-top.png b/static/img/platform/infra/oci/add-oci-top.png new file mode 100644 index 000000000..7a63ddf97 Binary files /dev/null and b/static/img/platform/infra/oci/add-oci-top.png differ diff --git a/static/img/platform/infra/oci/config-file.png b/static/img/platform/infra/oci/config-file.png new file mode 100644 index 000000000..5c1795f0d Binary files /dev/null and b/static/img/platform/infra/oci/config-file.png differ diff --git a/static/img/platform/infra/oci/my-profile.png b/static/img/platform/infra/oci/my-profile.png new file mode 100644 index 000000000..375bb9174 Binary files /dev/null and b/static/img/platform/infra/oci/my-profile.png differ diff --git a/static/img/platform/infra/oci/oci-int-list.png b/static/img/platform/infra/oci/oci-int-list.png new file mode 100644 index 000000000..4d79faae3 Binary files /dev/null and b/static/img/platform/infra/oci/oci-int-list.png differ diff --git a/static/img/platform/infra/oci/select-api-keys.png b/static/img/platform/infra/oci/select-api-keys.png new file mode 100644 index 000000000..4b0ade7d8 Binary files /dev/null and b/static/img/platform/infra/oci/select-api-keys.png differ diff --git a/static/img/platform/infra/oci/view-oci-int.png b/static/img/platform/infra/oci/view-oci-int.png new file mode 100644 index 000000000..aa06f3605 Binary files /dev/null and b/static/img/platform/infra/oci/view-oci-int.png differ diff --git a/static/img/platform/infra/opsys/automation/ansible_asset_details.png b/static/img/platform/infra/opsys/automation/ansible_asset_details.png new file mode 100644 index 000000000..c0380fbf9 Binary files /dev/null and b/static/img/platform/infra/opsys/automation/ansible_asset_details.png differ diff --git a/static/img/platform/infra/saas/github/github.png b/static/img/platform/infra/saas/github/github.png new file mode 100644 index 000000000..a45cf61ad Binary files /dev/null and b/static/img/platform/infra/saas/github/github.png differ diff --git a/static/img/platform/infra/saas/github/repo.png b/static/img/platform/infra/saas/github/repo.png new file mode 100644 index 000000000..4e4fdd5ae Binary files /dev/null and b/static/img/platform/infra/saas/github/repo.png differ diff --git a/static/img/platform/infra/saas/gitlab/discovery.png b/static/img/platform/infra/saas/gitlab/discovery.png new file mode 100644 index 000000000..6a1b591bd Binary files /dev/null and b/static/img/platform/infra/saas/gitlab/discovery.png differ diff --git a/static/img/platform/infra/saas/gitlab/gitlab.png b/static/img/platform/infra/saas/gitlab/gitlab.png new file mode 100644 index 000000000..df5cf428a Binary files /dev/null and b/static/img/platform/infra/saas/gitlab/gitlab.png differ diff --git a/static/img/platform/infra/saas/gitlab/group.png b/static/img/platform/infra/saas/gitlab/group.png new file mode 100644 index 000000000..f2e1c42ca Binary files /dev/null and b/static/img/platform/infra/saas/gitlab/group.png differ diff --git a/static/img/platform/infra/saas/gw/gw-bottom.png b/static/img/platform/infra/saas/gw/gw-bottom.png new file mode 100644 index 000000000..24bd95740 Binary files /dev/null and b/static/img/platform/infra/saas/gw/gw-bottom.png differ diff --git a/static/img/platform/infra/saas/gw/gw-top.png b/static/img/platform/infra/saas/gw/gw-top.png new file mode 100644 index 000000000..a4914b95b Binary files /dev/null and b/static/img/platform/infra/saas/gw/gw-top.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.add.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.add.png new file mode 100644 index 000000000..0dcd9aaa0 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.add.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.confirm.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.confirm.png new file mode 100644 index 000000000..6be08f5ae Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.confirm.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.graph.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.graph.png new file mode 100644 index 000000000..39ac2076d Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.graph.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.o365.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.o365.png new file mode 100644 index 000000000..9e75103d5 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.o365.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.o365.user.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.o365.user.png new file mode 100644 index 000000000..dcb0bf62a Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.o365.user.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.select.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.select.png new file mode 100644 index 000000000..c2e52ca14 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.apipermissions.select.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.png new file mode 100644 index 000000000..1806b2338 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.registration.complete.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.registration.complete.png new file mode 100644 index 000000000..b5dbcf59c Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.registration.complete.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.registration.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.registration.png new file mode 100644 index 000000000..50dab3dac Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.registration.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.secrets.client.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.secrets.client.png new file mode 100644 index 000000000..cc90c8a11 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.secrets.client.png differ diff --git a/static/img/platform/infra/saas/ms365/aad.portal.azure.secrets.png b/static/img/platform/infra/saas/ms365/aad.portal.azure.secrets.png new file mode 100644 index 000000000..25c5bbac7 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/aad.portal.azure.secrets.png differ diff --git a/static/img/platform/infra/saas/ms365/add-int-ms365-bottom.png b/static/img/platform/infra/saas/ms365/add-int-ms365-bottom.png new file mode 100644 index 000000000..02a773bb1 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/add-int-ms365-bottom.png differ diff --git a/static/img/platform/infra/saas/ms365/add-int-ms365-top.png b/static/img/platform/infra/saas/ms365/add-int-ms365-top.png new file mode 100644 index 000000000..29f58fd31 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/add-int-ms365-top.png differ diff --git a/static/img/platform/infra/saas/ms365/add.certificate.png b/static/img/platform/infra/saas/ms365/add.certificate.png new file mode 100644 index 000000000..988364243 Binary files /dev/null and b/static/img/platform/infra/saas/ms365/add.certificate.png differ diff --git a/static/img/platform/infra/saas/okta/okta.png b/static/img/platform/infra/saas/okta/okta.png new file mode 100644 index 000000000..3169464ef Binary files /dev/null and b/static/img/platform/infra/saas/okta/okta.png differ diff --git a/static/img/platform/infra/saas/slack/basic-info.png b/static/img/platform/infra/saas/slack/basic-info.png new file mode 100644 index 000000000..96a8b07e8 Binary files /dev/null and b/static/img/platform/infra/saas/slack/basic-info.png differ diff --git a/static/img/platform/infra/saas/slack/confirm.png b/static/img/platform/infra/saas/slack/confirm.png new file mode 100644 index 000000000..b3e9c4391 Binary files /dev/null and b/static/img/platform/infra/saas/slack/confirm.png differ diff --git a/static/img/platform/infra/saas/slack/create-app.png b/static/img/platform/infra/saas/slack/create-app.png new file mode 100644 index 000000000..925aec4ae Binary files /dev/null and b/static/img/platform/infra/saas/slack/create-app.png differ diff --git a/static/img/platform/infra/saas/slack/name-app.png b/static/img/platform/infra/saas/slack/name-app.png new file mode 100644 index 000000000..f3255c207 Binary files /dev/null and b/static/img/platform/infra/saas/slack/name-app.png differ diff --git a/static/img/platform/infra/saas/slack/oauth.png b/static/img/platform/infra/saas/slack/oauth.png new file mode 100644 index 000000000..c8113953d Binary files /dev/null and b/static/img/platform/infra/saas/slack/oauth.png differ diff --git a/static/img/platform/infra/saas/slack/scopes.png b/static/img/platform/infra/saas/slack/scopes.png new file mode 100644 index 000000000..99f194fd7 Binary files /dev/null and b/static/img/platform/infra/saas/slack/scopes.png differ diff --git a/static/img/platform/infra/saas/slack/slack.png b/static/img/platform/infra/saas/slack/slack.png new file mode 100644 index 000000000..3e5dea431 Binary files /dev/null and b/static/img/platform/infra/saas/slack/slack.png differ diff --git a/static/img/platform/infra/saas/slack/token.png b/static/img/platform/infra/saas/slack/token.png new file mode 100644 index 000000000..69c58f66b Binary files /dev/null and b/static/img/platform/infra/saas/slack/token.png differ diff --git a/static/img/platform/infra/supply/azure/azure_add_new_variable-2.png b/static/img/platform/infra/supply/azure/azure_add_new_variable-2.png new file mode 100644 index 000000000..e2dfaf3ec Binary files /dev/null and b/static/img/platform/infra/supply/azure/azure_add_new_variable-2.png differ diff --git a/static/img/platform/infra/supply/azure/azure_add_new_variable.png b/static/img/platform/infra/supply/azure/azure_add_new_variable.png new file mode 100644 index 000000000..6501ea59d Binary files /dev/null and b/static/img/platform/infra/supply/azure/azure_add_new_variable.png differ diff --git a/static/img/platform/infra/supply/azure/azure_edit_view-2.png b/static/img/platform/infra/supply/azure/azure_edit_view-2.png new file mode 100644 index 000000000..9e2aa3292 Binary files /dev/null and b/static/img/platform/infra/supply/azure/azure_edit_view-2.png differ diff --git a/static/img/platform/infra/supply/azure/azure_edit_view.png b/static/img/platform/infra/supply/azure/azure_edit_view.png new file mode 100644 index 000000000..2124a8dcd Binary files /dev/null and b/static/img/platform/infra/supply/azure/azure_edit_view.png differ diff --git a/static/img/platform/infra/supply/azure/azure_pipeline_result.png b/static/img/platform/infra/supply/azure/azure_pipeline_result.png new file mode 100644 index 000000000..8c4a43393 Binary files /dev/null and b/static/img/platform/infra/supply/azure/azure_pipeline_result.png differ diff --git a/static/img/platform/infra/supply/azure/azure_pipeline_view-2.png b/static/img/platform/infra/supply/azure/azure_pipeline_view-2.png new file mode 100644 index 000000000..eabc0a664 Binary files /dev/null and b/static/img/platform/infra/supply/azure/azure_pipeline_view-2.png differ diff --git a/static/img/platform/infra/supply/azure/azure_pipeline_view.png b/static/img/platform/infra/supply/azure/azure_pipeline_view.png new file mode 100644 index 000000000..5894546c6 Binary files /dev/null and b/static/img/platform/infra/supply/azure/azure_pipeline_view.png differ diff --git a/static/img/platform/infra/supply/azure/pipeline-failed.png b/static/img/platform/infra/supply/azure/pipeline-failed.png new file mode 100644 index 000000000..00f1ca69a Binary files /dev/null and b/static/img/platform/infra/supply/azure/pipeline-failed.png differ diff --git a/static/img/platform/infra/supply/azure/pipeline-publish-task.png b/static/img/platform/infra/supply/azure/pipeline-publish-task.png new file mode 100644 index 000000000..179c591a8 Binary files /dev/null and b/static/img/platform/infra/supply/azure/pipeline-publish-task.png differ diff --git a/static/img/platform/infra/supply/azure/test-results-pipeline.png b/static/img/platform/infra/supply/azure/test-results-pipeline.png new file mode 100644 index 000000000..fbe81611c Binary files /dev/null and b/static/img/platform/infra/supply/azure/test-results-pipeline.png differ diff --git a/static/img/platform/infra/supply/docker-image-scan.png b/static/img/platform/infra/supply/docker-image-scan.png new file mode 100644 index 000000000..09fab05ac Binary files /dev/null and b/static/img/platform/infra/supply/docker-image-scan.png differ diff --git a/static/img/platform/infra/supply/k8s-manifest-scan.gif b/static/img/platform/infra/supply/k8s-manifest-scan.gif new file mode 100644 index 000000000..329dc7ee2 Binary files /dev/null and b/static/img/platform/infra/supply/k8s-manifest-scan.gif differ diff --git a/static/img/platform/infra/supply/manifest-scan.png b/static/img/platform/infra/supply/manifest-scan.png new file mode 100644 index 000000000..d208ff764 Binary files /dev/null and b/static/img/platform/infra/supply/manifest-scan.png differ diff --git a/static/img/platform/installation/client-registrationtoken.png b/static/img/platform/installation/client-registrationtoken.png new file mode 100644 index 000000000..34573a81f Binary files /dev/null and b/static/img/platform/installation/client-registrationtoken.png differ diff --git a/static/img/platform/installation/mondoo-agent-install-mac.gif b/static/img/platform/installation/mondoo-agent-install-mac.gif new file mode 100644 index 000000000..b316233e9 Binary files /dev/null and b/static/img/platform/installation/mondoo-agent-install-mac.gif differ diff --git a/static/img/platform/installation/mondoo-agent-install-windows.png b/static/img/platform/installation/mondoo-agent-install-windows.png new file mode 100644 index 000000000..9468993e5 Binary files /dev/null and b/static/img/platform/installation/mondoo-agent-install-windows.png differ diff --git a/static/img/platform/installation/windows-event-viewer.png b/static/img/platform/installation/windows-event-viewer.png new file mode 100644 index 000000000..7c62c0950 Binary files /dev/null and b/static/img/platform/installation/windows-event-viewer.png differ diff --git a/static/img/platform/installation/windows-service-default.png b/static/img/platform/installation/windows-service-default.png new file mode 100644 index 000000000..8a178627f Binary files /dev/null and b/static/img/platform/installation/windows-service-default.png differ diff --git a/static/img/platform/installation/windows-service-running.png b/static/img/platform/installation/windows-service-running.png new file mode 100644 index 000000000..e60f04d8a Binary files /dev/null and b/static/img/platform/installation/windows-service-running.png differ diff --git a/static/img/platform/intel/add-annotation.png b/static/img/platform/intel/add-annotation.png new file mode 100644 index 000000000..89fee85b1 Binary files /dev/null and b/static/img/platform/intel/add-annotation.png differ diff --git a/static/img/platform/intel/asset-no-annotations.png b/static/img/platform/intel/asset-no-annotations.png new file mode 100644 index 000000000..d8c4e6082 Binary files /dev/null and b/static/img/platform/intel/asset-no-annotations.png differ diff --git a/static/img/platform/intel/data-queries.png b/static/img/platform/intel/data-queries.png new file mode 100644 index 000000000..65b4f0343 Binary files /dev/null and b/static/img/platform/intel/data-queries.png differ diff --git a/static/img/platform/intel/existing-annotation.png b/static/img/platform/intel/existing-annotation.png new file mode 100644 index 000000000..e458fb4cb Binary files /dev/null and b/static/img/platform/intel/existing-annotation.png differ diff --git a/static/img/platform/intel/inventory-explore.png b/static/img/platform/intel/inventory-explore.png new file mode 100644 index 000000000..1127140b3 Binary files /dev/null and b/static/img/platform/intel/inventory-explore.png differ diff --git a/static/img/platform/intel/inventory-policyhub.png b/static/img/platform/intel/inventory-policyhub.png new file mode 100644 index 000000000..2b55c9b54 Binary files /dev/null and b/static/img/platform/intel/inventory-policyhub.png differ diff --git a/static/img/platform/intel/no-annotations.png b/static/img/platform/intel/no-annotations.png new file mode 100644 index 000000000..1259c354f Binary files /dev/null and b/static/img/platform/intel/no-annotations.png differ diff --git a/static/img/platform/intel/search-box-org.png b/static/img/platform/intel/search-box-org.png new file mode 100644 index 000000000..088c6ee79 Binary files /dev/null and b/static/img/platform/intel/search-box-org.png differ diff --git a/static/img/platform/intel/simple-results.png b/static/img/platform/intel/simple-results.png new file mode 100644 index 000000000..6d12e3be2 Binary files /dev/null and b/static/img/platform/intel/simple-results.png differ diff --git a/static/img/platform/maintain/access/add-service-account.png b/static/img/platform/maintain/access/add-service-account.png new file mode 100644 index 000000000..14d276de4 Binary files /dev/null and b/static/img/platform/maintain/access/add-service-account.png differ diff --git a/static/img/platform/maintain/access/credentials.png b/static/img/platform/maintain/access/credentials.png new file mode 100644 index 000000000..1c9b9ae70 Binary files /dev/null and b/static/img/platform/maintain/access/credentials.png differ diff --git a/static/img/platform/maintain/access/invitations.png b/static/img/platform/maintain/access/invitations.png new file mode 100644 index 000000000..2cf86c560 Binary files /dev/null and b/static/img/platform/maintain/access/invitations.png differ diff --git a/static/img/platform/maintain/access/org-token.png b/static/img/platform/maintain/access/org-token.png new file mode 100644 index 000000000..de47ef7a1 Binary files /dev/null and b/static/img/platform/maintain/access/org-token.png differ diff --git a/static/img/platform/maintain/access/pending_team_members.png b/static/img/platform/maintain/access/pending_team_members.png new file mode 100644 index 000000000..49a5a028a Binary files /dev/null and b/static/img/platform/maintain/access/pending_team_members.png differ diff --git a/static/img/platform/maintain/access/permissions.png b/static/img/platform/maintain/access/permissions.png new file mode 100644 index 000000000..12db6d326 Binary files /dev/null and b/static/img/platform/maintain/access/permissions.png differ diff --git a/static/img/platform/maintain/access/saml/add-single-sign-on.png b/static/img/platform/maintain/access/saml/add-single-sign-on.png new file mode 100644 index 000000000..49cda9b72 Binary files /dev/null and b/static/img/platform/maintain/access/saml/add-single-sign-on.png differ diff --git a/static/img/platform/maintain/access/saml/authentication-detail.png b/static/img/platform/maintain/access/saml/authentication-detail.png new file mode 100644 index 000000000..b88c37b75 Binary files /dev/null and b/static/img/platform/maintain/access/saml/authentication-detail.png differ diff --git a/static/img/platform/maintain/access/saml/authentication.png b/static/img/platform/maintain/access/saml/authentication.png new file mode 100644 index 000000000..1ef884048 Binary files /dev/null and b/static/img/platform/maintain/access/saml/authentication.png differ diff --git a/static/img/platform/maintain/access/saml/create-own-app.png b/static/img/platform/maintain/access/saml/create-own-app.png new file mode 100644 index 000000000..0daff9872 Binary files /dev/null and b/static/img/platform/maintain/access/saml/create-own-app.png differ diff --git a/static/img/platform/maintain/access/saml/download-cert.png b/static/img/platform/maintain/access/saml/download-cert.png new file mode 100644 index 000000000..f6ce6f3d2 Binary files /dev/null and b/static/img/platform/maintain/access/saml/download-cert.png differ diff --git a/static/img/platform/maintain/access/saml/org-id.png b/static/img/platform/maintain/access/saml/org-id.png new file mode 100644 index 000000000..ee0938cdb Binary files /dev/null and b/static/img/platform/maintain/access/saml/org-id.png differ diff --git a/static/img/platform/maintain/access/saml/saml-config.png b/static/img/platform/maintain/access/saml/saml-config.png new file mode 100644 index 000000000..16b4e7f0f Binary files /dev/null and b/static/img/platform/maintain/access/saml/saml-config.png differ diff --git a/static/img/platform/maintain/access/saml/users.png b/static/img/platform/maintain/access/saml/users.png new file mode 100644 index 000000000..80dff59f0 Binary files /dev/null and b/static/img/platform/maintain/access/saml/users.png differ diff --git a/static/img/platform/maintain/access/select-api-token.png b/static/img/platform/maintain/access/select-api-token.png new file mode 100644 index 000000000..4209e5b85 Binary files /dev/null and b/static/img/platform/maintain/access/select-api-token.png differ diff --git a/static/img/platform/maintain/access/select-service-account.png b/static/img/platform/maintain/access/select-service-account.png new file mode 100644 index 000000000..ce3e07393 Binary files /dev/null and b/static/img/platform/maintain/access/select-service-account.png differ diff --git a/static/img/platform/maintain/access/service_accounts.png b/static/img/platform/maintain/access/service_accounts.png new file mode 100644 index 000000000..e00aa8fd8 Binary files /dev/null and b/static/img/platform/maintain/access/service_accounts.png differ diff --git a/static/img/platform/maintain/access/space-token.png b/static/img/platform/maintain/access/space-token.png new file mode 100644 index 000000000..014800af0 Binary files /dev/null and b/static/img/platform/maintain/access/space-token.png differ diff --git a/static/img/platform/maintain/alerting/msteams/msteams-mondoo-configure.png b/static/img/platform/maintain/alerting/msteams/msteams-mondoo-configure.png new file mode 100644 index 000000000..80177d3df Binary files /dev/null and b/static/img/platform/maintain/alerting/msteams/msteams-mondoo-configure.png differ diff --git a/static/img/platform/maintain/alerting/msteams/msteams-webhook-add.png b/static/img/platform/maintain/alerting/msteams/msteams-webhook-add.png new file mode 100644 index 000000000..cecf80182 Binary files /dev/null and b/static/img/platform/maintain/alerting/msteams/msteams-webhook-add.png differ diff --git a/static/img/platform/maintain/alerting/msteams/msteams-webhook-create.png b/static/img/platform/maintain/alerting/msteams/msteams-webhook-create.png new file mode 100644 index 000000000..199c9660e Binary files /dev/null and b/static/img/platform/maintain/alerting/msteams/msteams-webhook-create.png differ diff --git a/static/img/platform/maintain/alerting/msteams/msteams-webhook-created.png b/static/img/platform/maintain/alerting/msteams/msteams-webhook-created.png new file mode 100644 index 000000000..259e49b94 Binary files /dev/null and b/static/img/platform/maintain/alerting/msteams/msteams-webhook-created.png differ diff --git a/static/img/platform/maintain/alerting/msteams/msteams-webhook-new.png b/static/img/platform/maintain/alerting/msteams/msteams-webhook-new.png new file mode 100644 index 000000000..3612b4e68 Binary files /dev/null and b/static/img/platform/maintain/alerting/msteams/msteams-webhook-new.png differ diff --git a/static/img/platform/maintain/alerting/sample-alert-improve.png b/static/img/platform/maintain/alerting/sample-alert-improve.png new file mode 100644 index 000000000..6342e7283 Binary files /dev/null and b/static/img/platform/maintain/alerting/sample-alert-improve.png differ diff --git a/static/img/platform/maintain/alerting/sample-alert-regress.png b/static/img/platform/maintain/alerting/sample-alert-regress.png new file mode 100644 index 000000000..bc21d925d Binary files /dev/null and b/static/img/platform/maintain/alerting/sample-alert-regress.png differ diff --git a/static/img/platform/maintain/alerting/settings_email_configuration.png b/static/img/platform/maintain/alerting/settings_email_configuration.png new file mode 100644 index 000000000..c0045dcb6 Binary files /dev/null and b/static/img/platform/maintain/alerting/settings_email_configuration.png differ diff --git a/static/img/platform/maintain/alerting/slack/slack-mondoo-configure.png b/static/img/platform/maintain/alerting/slack/slack-mondoo-configure.png new file mode 100644 index 000000000..d0c0477c0 Binary files /dev/null and b/static/img/platform/maintain/alerting/slack/slack-mondoo-configure.png differ diff --git a/static/img/platform/maintain/alerting/slack/slack-webhook-configure.png b/static/img/platform/maintain/alerting/slack/slack-webhook-configure.png new file mode 100644 index 000000000..c1d5b5f90 Binary files /dev/null and b/static/img/platform/maintain/alerting/slack/slack-webhook-configure.png differ diff --git a/static/img/platform/maintain/alerting/slack/slack-webhook-create.png b/static/img/platform/maintain/alerting/slack/slack-webhook-create.png new file mode 100644 index 000000000..7b0daa4c2 Binary files /dev/null and b/static/img/platform/maintain/alerting/slack/slack-webhook-create.png differ diff --git a/static/img/platform/maintain/alerting/slack/slack-webhook-created.png b/static/img/platform/maintain/alerting/slack/slack-webhook-created.png new file mode 100644 index 000000000..a0c701971 Binary files /dev/null and b/static/img/platform/maintain/alerting/slack/slack-webhook-created.png differ diff --git a/static/img/platform/maintain/alerting/slack/slack-webhook-directory.png b/static/img/platform/maintain/alerting/slack/slack-webhook-directory.png new file mode 100644 index 000000000..c9be82f70 Binary files /dev/null and b/static/img/platform/maintain/alerting/slack/slack-webhook-directory.png differ diff --git a/static/img/platform/maintain/alerting/telegram/telegram-botfather.png b/static/img/platform/maintain/alerting/telegram/telegram-botfather.png new file mode 100644 index 000000000..13a9d1e17 Binary files /dev/null and b/static/img/platform/maintain/alerting/telegram/telegram-botfather.png differ diff --git a/static/img/platform/maintain/alerting/telegram/telegram-chatid.png b/static/img/platform/maintain/alerting/telegram/telegram-chatid.png new file mode 100644 index 000000000..3494debc3 Binary files /dev/null and b/static/img/platform/maintain/alerting/telegram/telegram-chatid.png differ diff --git a/static/img/platform/maintain/alerting/telegram/telegram-mondoo-configure.png b/static/img/platform/maintain/alerting/telegram/telegram-mondoo-configure.png new file mode 100644 index 000000000..bdee055e1 Binary files /dev/null and b/static/img/platform/maintain/alerting/telegram/telegram-mondoo-configure.png differ diff --git a/static/img/platform/maintain/alerting/telegram/telegram-new-group-idbot.png b/static/img/platform/maintain/alerting/telegram/telegram-new-group-idbot.png new file mode 100644 index 000000000..5cd5520c6 Binary files /dev/null and b/static/img/platform/maintain/alerting/telegram/telegram-new-group-idbot.png differ diff --git a/static/img/platform/maintain/alerting/telegram/telegram-new-group-name.png b/static/img/platform/maintain/alerting/telegram/telegram-new-group-name.png new file mode 100644 index 000000000..3e84f4f29 Binary files /dev/null and b/static/img/platform/maintain/alerting/telegram/telegram-new-group-name.png differ diff --git a/static/img/platform/maintain/alerting/telegram/telegram-new-group.png b/static/img/platform/maintain/alerting/telegram/telegram-new-group.png new file mode 100644 index 000000000..8b21eb528 Binary files /dev/null and b/static/img/platform/maintain/alerting/telegram/telegram-new-group.png differ diff --git a/static/img/platform/maintain/alerting/user_settings_menu.png b/static/img/platform/maintain/alerting/user_settings_menu.png new file mode 100644 index 000000000..b3099c93e Binary files /dev/null and b/static/img/platform/maintain/alerting/user_settings_menu.png differ diff --git a/static/img/platform/maintain/alerting/webhook/webhook-mondoo-configure.png b/static/img/platform/maintain/alerting/webhook/webhook-mondoo-configure.png new file mode 100644 index 000000000..0089ad282 Binary files /dev/null and b/static/img/platform/maintain/alerting/webhook/webhook-mondoo-configure.png differ diff --git a/static/img/platform/maintain/export/add-integration-exports.png b/static/img/platform/maintain/export/add-integration-exports.png new file mode 100644 index 000000000..5f30b9afb Binary files /dev/null and b/static/img/platform/maintain/export/add-integration-exports.png differ diff --git a/static/img/platform/maintain/export/azure-blob/add-blob.png b/static/img/platform/maintain/export/azure-blob/add-blob.png new file mode 100644 index 000000000..7e1ef6e75 Binary files /dev/null and b/static/img/platform/maintain/export/azure-blob/add-blob.png differ diff --git a/static/img/platform/maintain/export/azure-blob/add-token.png b/static/img/platform/maintain/export/azure-blob/add-token.png new file mode 100644 index 000000000..7e65e279f Binary files /dev/null and b/static/img/platform/maintain/export/azure-blob/add-token.png differ diff --git a/static/img/platform/maintain/export/azure-blob/containers.png b/static/img/platform/maintain/export/azure-blob/containers.png new file mode 100644 index 000000000..a98f21fad Binary files /dev/null and b/static/img/platform/maintain/export/azure-blob/containers.png differ diff --git a/static/img/platform/maintain/export/azure-blob/copy-url.png b/static/img/platform/maintain/export/azure-blob/copy-url.png new file mode 100644 index 000000000..afb30d932 Binary files /dev/null and b/static/img/platform/maintain/export/azure-blob/copy-url.png differ diff --git a/static/img/platform/maintain/export/azure-blob/results-in-container.png b/static/img/platform/maintain/export/azure-blob/results-in-container.png new file mode 100644 index 000000000..784f5487e Binary files /dev/null and b/static/img/platform/maintain/export/azure-blob/results-in-container.png differ diff --git a/static/img/platform/maintain/export/azure-blob/view-list.png b/static/img/platform/maintain/export/azure-blob/view-list.png new file mode 100644 index 000000000..8e903e7aa Binary files /dev/null and b/static/img/platform/maintain/export/azure-blob/view-list.png differ diff --git a/static/img/platform/maintain/export/azure-blob/view.png b/static/img/platform/maintain/export/azure-blob/view.png new file mode 100644 index 000000000..973fddd83 Binary files /dev/null and b/static/img/platform/maintain/export/azure-blob/view.png differ diff --git a/static/img/platform/maintain/export/bigquery/add-int-bigquery-bottom.png b/static/img/platform/maintain/export/bigquery/add-int-bigquery-bottom.png new file mode 100644 index 000000000..819bfc672 Binary files /dev/null and b/static/img/platform/maintain/export/bigquery/add-int-bigquery-bottom.png differ diff --git a/static/img/platform/maintain/export/bigquery/add-int-bigquery-top.png b/static/img/platform/maintain/export/bigquery/add-int-bigquery-top.png new file mode 100644 index 000000000..9b870e662 Binary files /dev/null and b/static/img/platform/maintain/export/bigquery/add-int-bigquery-top.png differ diff --git a/static/img/platform/maintain/export/bigquery/view-int-bigquery.png b/static/img/platform/maintain/export/bigquery/view-int-bigquery.png new file mode 100644 index 000000000..9974749eb Binary files /dev/null and b/static/img/platform/maintain/export/bigquery/view-int-bigquery.png differ diff --git a/static/img/platform/maintain/export/gcp-bucket/add-int-export-gcp-bucket.png b/static/img/platform/maintain/export/gcp-bucket/add-int-export-gcp-bucket.png new file mode 100644 index 000000000..9267a7ee5 Binary files /dev/null and b/static/img/platform/maintain/export/gcp-bucket/add-int-export-gcp-bucket.png differ diff --git a/static/img/platform/maintain/export/gcp-bucket/view-int-export-gcp-bucket.png b/static/img/platform/maintain/export/gcp-bucket/view-int-export-gcp-bucket.png new file mode 100644 index 000000000..f44dd493e Binary files /dev/null and b/static/img/platform/maintain/export/gcp-bucket/view-int-export-gcp-bucket.png differ diff --git a/static/img/platform/maintain/export/postgresql/add-int-postgresql.png b/static/img/platform/maintain/export/postgresql/add-int-postgresql.png new file mode 100644 index 000000000..fee2589e8 Binary files /dev/null and b/static/img/platform/maintain/export/postgresql/add-int-postgresql.png differ diff --git a/static/img/platform/maintain/export/postgresql/view-int-postgresql.png b/static/img/platform/maintain/export/postgresql/view-int-postgresql.png new file mode 100644 index 000000000..8e054d2db Binary files /dev/null and b/static/img/platform/maintain/export/postgresql/view-int-postgresql.png differ diff --git a/static/img/platform/maintain/export/s3-compatible/s2-compatible-view-int.png b/static/img/platform/maintain/export/s3-compatible/s2-compatible-view-int.png new file mode 100644 index 000000000..62f752f9d Binary files /dev/null and b/static/img/platform/maintain/export/s3-compatible/s2-compatible-view-int.png differ diff --git a/static/img/platform/maintain/export/s3-compatible/s3-compatible-add-bottom.png b/static/img/platform/maintain/export/s3-compatible/s3-compatible-add-bottom.png new file mode 100644 index 000000000..ec335d860 Binary files /dev/null and b/static/img/platform/maintain/export/s3-compatible/s3-compatible-add-bottom.png differ diff --git a/static/img/platform/maintain/export/s3-compatible/s3-compatible-add-top.png b/static/img/platform/maintain/export/s3-compatible/s3-compatible-add-top.png new file mode 100644 index 000000000..3b1fc1e27 Binary files /dev/null and b/static/img/platform/maintain/export/s3-compatible/s3-compatible-add-top.png differ diff --git a/static/img/platform/maintain/export/s3-compatible/s3-compatible-status.png b/static/img/platform/maintain/export/s3-compatible/s3-compatible-status.png new file mode 100644 index 000000000..57461ed49 Binary files /dev/null and b/static/img/platform/maintain/export/s3-compatible/s3-compatible-status.png differ diff --git a/static/img/platform/maintain/export/s3/s3-add-bottom.png b/static/img/platform/maintain/export/s3/s3-add-bottom.png new file mode 100644 index 000000000..a5517976e Binary files /dev/null and b/static/img/platform/maintain/export/s3/s3-add-bottom.png differ diff --git a/static/img/platform/maintain/export/s3/s3-add-top.png b/static/img/platform/maintain/export/s3/s3-add-top.png new file mode 100644 index 000000000..15536e69d Binary files /dev/null and b/static/img/platform/maintain/export/s3/s3-add-top.png differ diff --git a/static/img/platform/maintain/export/s3/s3-status.png b/static/img/platform/maintain/export/s3/s3-status.png new file mode 100644 index 000000000..9fb044eca Binary files /dev/null and b/static/img/platform/maintain/export/s3/s3-status.png differ diff --git a/static/img/platform/maintain/export/s3/s3-view-int.png b/static/img/platform/maintain/export/s3/s3-view-int.png new file mode 100644 index 000000000..5f3beecc2 Binary files /dev/null and b/static/img/platform/maintain/export/s3/s3-view-int.png differ diff --git a/static/img/platform/maintain/export/snowflake/find-snowflake-account-id.png b/static/img/platform/maintain/export/snowflake/find-snowflake-account-id.png new file mode 100644 index 000000000..501177dc6 Binary files /dev/null and b/static/img/platform/maintain/export/snowflake/find-snowflake-account-id.png differ diff --git a/static/img/platform/maintain/export/snowflake/mondoo-in-snowflake.png b/static/img/platform/maintain/export/snowflake/mondoo-in-snowflake.png new file mode 100644 index 000000000..8644ef7df Binary files /dev/null and b/static/img/platform/maintain/export/snowflake/mondoo-in-snowflake.png differ diff --git a/static/img/platform/maintain/export/snowflake/snowflake-bottom.png b/static/img/platform/maintain/export/snowflake/snowflake-bottom.png new file mode 100644 index 000000000..02b31e89f Binary files /dev/null and b/static/img/platform/maintain/export/snowflake/snowflake-bottom.png differ diff --git a/static/img/platform/maintain/export/snowflake/snowflake-int-status.png b/static/img/platform/maintain/export/snowflake/snowflake-int-status.png new file mode 100644 index 000000000..a2f32f0b4 Binary files /dev/null and b/static/img/platform/maintain/export/snowflake/snowflake-int-status.png differ diff --git a/static/img/platform/maintain/export/snowflake/snowflake-top.png b/static/img/platform/maintain/export/snowflake/snowflake-top.png new file mode 100644 index 000000000..2c8bce314 Binary files /dev/null and b/static/img/platform/maintain/export/snowflake/snowflake-top.png differ diff --git a/static/img/platform/maintain/export/snowflake/snowflake-view-int.png b/static/img/platform/maintain/export/snowflake/snowflake-view-int.png new file mode 100644 index 000000000..b0fb75cf8 Binary files /dev/null and b/static/img/platform/maintain/export/snowflake/snowflake-view-int.png differ diff --git a/static/img/platform/maintain/org-audit.png b/static/img/platform/maintain/org-audit.png new file mode 100644 index 000000000..797bfcb86 Binary files /dev/null and b/static/img/platform/maintain/org-audit.png differ diff --git a/static/img/platform/maintain/space-log.png b/static/img/platform/maintain/space-log.png new file mode 100644 index 000000000..d2f4110d8 Binary files /dev/null and b/static/img/platform/maintain/space-log.png differ diff --git a/static/img/platform/maintain/user/colorblind.png b/static/img/platform/maintain/user/colorblind.png new file mode 100644 index 000000000..60057ea97 Binary files /dev/null and b/static/img/platform/maintain/user/colorblind.png differ diff --git a/static/img/platform/maintain/user/email.png b/static/img/platform/maintain/user/email.png new file mode 100644 index 000000000..b9d1996dd Binary files /dev/null and b/static/img/platform/maintain/user/email.png differ diff --git a/static/img/platform/maintain/user/full-color.png b/static/img/platform/maintain/user/full-color.png new file mode 100644 index 000000000..dbd381346 Binary files /dev/null and b/static/img/platform/maintain/user/full-color.png differ diff --git a/static/img/platform/maintain/user/general.png b/static/img/platform/maintain/user/general.png new file mode 100644 index 000000000..24d9a5f78 Binary files /dev/null and b/static/img/platform/maintain/user/general.png differ diff --git a/static/img/platform/maintain/user/login-email.png b/static/img/platform/maintain/user/login-email.png new file mode 100644 index 000000000..78d95067d Binary files /dev/null and b/static/img/platform/maintain/user/login-email.png differ diff --git a/static/img/platform/maintain/user/login.png b/static/img/platform/maintain/user/login.png new file mode 100644 index 000000000..57dd733dd Binary files /dev/null and b/static/img/platform/maintain/user/login.png differ diff --git a/static/img/platform/mondoo-logo-plat.png b/static/img/platform/mondoo-logo-plat.png new file mode 100644 index 000000000..5792095ba Binary files /dev/null and b/static/img/platform/mondoo-logo-plat.png differ diff --git a/static/img/platform/security/accept-reject.png b/static/img/platform/security/accept-reject.png new file mode 100644 index 000000000..f5051dd95 Binary files /dev/null and b/static/img/platform/security/accept-reject.png differ diff --git a/static/img/platform/security/advisories.png b/static/img/platform/security/advisories.png new file mode 100644 index 000000000..93e050c38 Binary files /dev/null and b/static/img/platform/security/advisories.png differ diff --git a/static/img/platform/security/checks.png b/static/img/platform/security/checks.png new file mode 100644 index 000000000..d762a12e0 Binary files /dev/null and b/static/img/platform/security/checks.png differ diff --git a/static/img/platform/security/customize-props.png b/static/img/platform/security/customize-props.png new file mode 100644 index 000000000..a3d793153 Binary files /dev/null and b/static/img/platform/security/customize-props.png differ diff --git a/static/img/platform/security/cves.png b/static/img/platform/security/cves.png new file mode 100644 index 000000000..f9aff7b5c Binary files /dev/null and b/static/img/platform/security/cves.png differ diff --git a/static/img/platform/security/disable-a-policy.png b/static/img/platform/security/disable-a-policy.png new file mode 100644 index 000000000..aff497c27 Binary files /dev/null and b/static/img/platform/security/disable-a-policy.png differ diff --git a/static/img/platform/security/enable-a-policy.png b/static/img/platform/security/enable-a-policy.png new file mode 100644 index 000000000..a356c306a Binary files /dev/null and b/static/img/platform/security/enable-a-policy.png differ diff --git a/static/img/platform/security/monitor-asset.png b/static/img/platform/security/monitor-asset.png new file mode 100644 index 000000000..c6bdb222b Binary files /dev/null and b/static/img/platform/security/monitor-asset.png differ diff --git a/static/img/platform/security/monitor-filter.png b/static/img/platform/security/monitor-filter.png new file mode 100644 index 000000000..c9f6c48d6 Binary files /dev/null and b/static/img/platform/security/monitor-filter.png differ diff --git a/static/img/platform/security/monitor-org.png b/static/img/platform/security/monitor-org.png new file mode 100644 index 000000000..e9baa8d59 Binary files /dev/null and b/static/img/platform/security/monitor-org.png differ diff --git a/static/img/platform/security/monitor-space.png b/static/img/platform/security/monitor-space.png new file mode 100644 index 000000000..c8b58b660 Binary files /dev/null and b/static/img/platform/security/monitor-space.png differ diff --git a/static/img/platform/security/plan/create-milestone.png b/static/img/platform/security/plan/create-milestone.png new file mode 100644 index 000000000..ed19b9369 Binary files /dev/null and b/static/img/platform/security/plan/create-milestone.png differ diff --git a/static/img/platform/security/plan/edit-plan.png b/static/img/platform/security/plan/edit-plan.png new file mode 100644 index 000000000..01dca2547 Binary files /dev/null and b/static/img/platform/security/plan/edit-plan.png differ diff --git a/static/img/platform/security/plan/luna-baseline.png b/static/img/platform/security/plan/luna-baseline.png new file mode 100644 index 000000000..3e186c6b5 Binary files /dev/null and b/static/img/platform/security/plan/luna-baseline.png differ diff --git a/static/img/platform/security/plan/luna-exceptions.png b/static/img/platform/security/plan/luna-exceptions.png new file mode 100644 index 000000000..ce861e552 Binary files /dev/null and b/static/img/platform/security/plan/luna-exceptions.png differ diff --git a/static/img/platform/security/plan/luna-goals.png b/static/img/platform/security/plan/luna-goals.png new file mode 100644 index 000000000..5d1ceeaec Binary files /dev/null and b/static/img/platform/security/plan/luna-goals.png differ diff --git a/static/img/platform/security/plan/luna-password.png b/static/img/platform/security/plan/luna-password.png new file mode 100644 index 000000000..578b19f10 Binary files /dev/null and b/static/img/platform/security/plan/luna-password.png differ diff --git a/static/img/platform/security/plan/luna-select-checks.png b/static/img/platform/security/plan/luna-select-checks.png new file mode 100644 index 000000000..fe2f4c3b0 Binary files /dev/null and b/static/img/platform/security/plan/luna-select-checks.png differ diff --git a/static/img/platform/security/plan/plan-start.png b/static/img/platform/security/plan/plan-start.png new file mode 100644 index 000000000..81d0e5ee6 Binary files /dev/null and b/static/img/platform/security/plan/plan-start.png differ diff --git a/static/img/platform/security/plan/review.png b/static/img/platform/security/plan/review.png new file mode 100644 index 000000000..4f7789f42 Binary files /dev/null and b/static/img/platform/security/plan/review.png differ diff --git a/static/img/platform/security/plan/view-milestones.png b/static/img/platform/security/plan/view-milestones.png new file mode 100644 index 000000000..ed730a3ef Binary files /dev/null and b/static/img/platform/security/plan/view-milestones.png differ diff --git a/static/img/platform/security/policies.png b/static/img/platform/security/policies.png new file mode 100644 index 000000000..a9cd429ce Binary files /dev/null and b/static/img/platform/security/policies.png differ diff --git a/static/img/platform/security/preview-a-policy.png b/static/img/platform/security/preview-a-policy.png new file mode 100644 index 000000000..0d55540e9 Binary files /dev/null and b/static/img/platform/security/preview-a-policy.png differ diff --git a/static/img/platform/security/registry-nav.png b/static/img/platform/security/registry-nav.png new file mode 100644 index 000000000..d159f2388 Binary files /dev/null and b/static/img/platform/security/registry-nav.png differ diff --git a/static/img/platform/security/registry-properties.png b/static/img/platform/security/registry-properties.png new file mode 100644 index 000000000..5886ad8d4 Binary files /dev/null and b/static/img/platform/security/registry-properties.png differ diff --git a/static/img/platform/security/remove-exception.png b/static/img/platform/security/remove-exception.png new file mode 100644 index 000000000..7304ee46f Binary files /dev/null and b/static/img/platform/security/remove-exception.png differ diff --git a/static/img/platform/security/selected-check.png b/static/img/platform/security/selected-check.png new file mode 100644 index 000000000..0cb169386 Binary files /dev/null and b/static/img/platform/security/selected-check.png differ diff --git a/static/img/platform/security/set-exception.png b/static/img/platform/security/set-exception.png new file mode 100644 index 000000000..fd290bbc9 Binary files /dev/null and b/static/img/platform/security/set-exception.png differ diff --git a/static/img/platform/security/vuln-cvss.png b/static/img/platform/security/vuln-cvss.png new file mode 100644 index 000000000..9d8990b8b Binary files /dev/null and b/static/img/platform/security/vuln-cvss.png differ diff --git a/static/img/platform/security/vuln-dash.png b/static/img/platform/security/vuln-dash.png new file mode 100644 index 000000000..350a37e47 Binary files /dev/null and b/static/img/platform/security/vuln-dash.png differ diff --git a/static/img/platform/security/vuln-epss.png b/static/img/platform/security/vuln-epss.png new file mode 100644 index 000000000..3145a7c91 Binary files /dev/null and b/static/img/platform/security/vuln-epss.png differ diff --git a/static/img/platform/security/vulnerability-affected.png b/static/img/platform/security/vulnerability-affected.png new file mode 100644 index 000000000..43bc98902 Binary files /dev/null and b/static/img/platform/security/vulnerability-affected.png differ diff --git a/static/img/platform/security/vulnerability-top.png b/static/img/platform/security/vulnerability-top.png new file mode 100644 index 000000000..3c3a06d8b Binary files /dev/null and b/static/img/platform/security/vulnerability-top.png differ diff --git a/static/img/platform/start/console-overview-callouts.png b/static/img/platform/start/console-overview-callouts.png new file mode 100644 index 000000000..489aa4839 Binary files /dev/null and b/static/img/platform/start/console-overview-callouts.png differ diff --git a/static/img/platform/start/mondoo-platform-pricing.png b/static/img/platform/start/mondoo-platform-pricing.png new file mode 100644 index 000000000..f230882f3 Binary files /dev/null and b/static/img/platform/start/mondoo-platform-pricing.png differ diff --git a/static/img/platform/start/nav-side.png b/static/img/platform/start/nav-side.png new file mode 100644 index 000000000..83c565fcc Binary files /dev/null and b/static/img/platform/start/nav-side.png differ diff --git a/static/img/platform/start/nav-top.png b/static/img/platform/start/nav-top.png new file mode 100644 index 000000000..5e58bab80 Binary files /dev/null and b/static/img/platform/start/nav-top.png differ diff --git a/static/img/platform/start/org-complex.png b/static/img/platform/start/org-complex.png new file mode 100644 index 000000000..90517c138 Binary files /dev/null and b/static/img/platform/start/org-complex.png differ diff --git a/static/img/platform/start/org-simple.png b/static/img/platform/start/org-simple.png new file mode 100644 index 000000000..db087990b Binary files /dev/null and b/static/img/platform/start/org-simple.png differ diff --git a/static/img/platform/start/organizations.png b/static/img/platform/start/organizations.png new file mode 100644 index 000000000..d2d06e41d Binary files /dev/null and b/static/img/platform/start/organizations.png differ diff --git a/static/img/platform/start/regions.png b/static/img/platform/start/regions.png new file mode 100644 index 000000000..8512bc891 Binary files /dev/null and b/static/img/platform/start/regions.png differ diff --git a/static/img/platform/start/select-org.png b/static/img/platform/start/select-org.png new file mode 100644 index 000000000..04b8cf599 Binary files /dev/null and b/static/img/platform/start/select-org.png differ diff --git a/static/img/platform/start/start-welcome.png b/static/img/platform/start/start-welcome.png new file mode 100644 index 000000000..d15b07e32 Binary files /dev/null and b/static/img/platform/start/start-welcome.png differ diff --git a/static/img/platform/start/welcome_to_mondoo.png b/static/img/platform/start/welcome_to_mondoo.png new file mode 100644 index 000000000..c8b158998 Binary files /dev/null and b/static/img/platform/start/welcome_to_mondoo.png differ diff --git a/static/img/platform/ticket/add-int-ticket.png b/static/img/platform/ticket/add-int-ticket.png new file mode 100644 index 000000000..afae92832 Binary files /dev/null and b/static/img/platform/ticket/add-int-ticket.png differ diff --git a/static/img/platform/ticket/add-jira-int-top.png b/static/img/platform/ticket/add-jira-int-top.png new file mode 100644 index 000000000..cd1105b8f Binary files /dev/null and b/static/img/platform/ticket/add-jira-int-top.png differ diff --git a/static/img/platform/ticket/add-jira-issue.png b/static/img/platform/ticket/add-jira-issue.png new file mode 100644 index 000000000..716964ebd Binary files /dev/null and b/static/img/platform/ticket/add-jira-issue.png differ diff --git a/static/img/platform/ticket/issue-in-jira.png b/static/img/platform/ticket/issue-in-jira.png new file mode 100644 index 000000000..1b623c3bc Binary files /dev/null and b/static/img/platform/ticket/issue-in-jira.png differ diff --git a/static/img/platform/ticket/jira-icon-closeup.png b/static/img/platform/ticket/jira-icon-closeup.png new file mode 100644 index 000000000..eba9baa6e Binary files /dev/null and b/static/img/platform/ticket/jira-icon-closeup.png differ diff --git a/static/img/platform/ticket/jira-icon-fleet.png b/static/img/platform/ticket/jira-icon-fleet.png new file mode 100644 index 000000000..de53d997e Binary files /dev/null and b/static/img/platform/ticket/jira-icon-fleet.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-aggregated-score.png b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-aggregated-score.png new file mode 100644 index 000000000..23cff0329 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-aggregated-score.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-icon.png b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-icon.png new file mode 100644 index 000000000..7cbffded8 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-icon.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-install.gif b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-install.gif new file mode 100644 index 000000000..83686413a Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-install.gif differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-paste-token.png b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-paste-token.png new file mode 100644 index 000000000..901678a19 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-paste-token.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-run-installer.png b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-run-installer.png new file mode 100644 index 000000000..8a2323d57 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-run-installer.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-status.png b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-status.png new file mode 100644 index 000000000..4dd545952 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell-status.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell.png b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell.png new file mode 100644 index 000000000..d95295474 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-cloudshell.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-choose-aws.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-choose-aws.png new file mode 100644 index 000000000..201ed7dee Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-choose-aws.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-copy-token.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-copy-token.png new file mode 100644 index 000000000..827aeaf52 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-copy-token.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-finish.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-finish.png new file mode 100644 index 000000000..60d63c2b3 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-finish.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-install-client.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-install-client.png new file mode 100644 index 000000000..97d446e24 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-install-client.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-open-cloudshell.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-open-cloudshell.png new file mode 100644 index 000000000..13ab90984 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-open-cloudshell.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-run-scan.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-run-scan.png new file mode 100644 index 000000000..9fa3b8e07 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-run-scan.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-start.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-start.png new file mode 100644 index 000000000..f3c96a740 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-start.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-guide-tooltip.png b/static/img/platform/tutorials/aws-cloudshell/aws-guide-tooltip.png new file mode 100644 index 000000000..0eed24fa2 Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-guide-tooltip.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/aws-remote-scan.png b/static/img/platform/tutorials/aws-cloudshell/aws-remote-scan.png new file mode 100644 index 000000000..029ae6bcb Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/aws-remote-scan.png differ diff --git a/static/img/platform/tutorials/aws-cloudshell/mondoo-client-aws-scan-results.png b/static/img/platform/tutorials/aws-cloudshell/mondoo-client-aws-scan-results.png new file mode 100644 index 000000000..92c73ce5e Binary files /dev/null and b/static/img/platform/tutorials/aws-cloudshell/mondoo-client-aws-scan-results.png differ diff --git a/static/img/platform/tutorials/ssh.png b/static/img/platform/tutorials/ssh.png new file mode 100644 index 000000000..07f65ef18 Binary files /dev/null and b/static/img/platform/tutorials/ssh.png differ diff --git a/static/img/releases/2021-03-02-mondoo-3.5.0-is-out/PrintButton.png b/static/img/releases/2021-03-02-mondoo-3.5.0-is-out/PrintButton.png new file mode 100644 index 000000000..58edb1e1e Binary files /dev/null and b/static/img/releases/2021-03-02-mondoo-3.5.0-is-out/PrintButton.png differ diff --git a/static/img/releases/2021-03-02-mondoo-3.5.0-is-out/SpaceWizard.png b/static/img/releases/2021-03-02-mondoo-3.5.0-is-out/SpaceWizard.png new file mode 100644 index 000000000..354fa9814 Binary files /dev/null and b/static/img/releases/2021-03-02-mondoo-3.5.0-is-out/SpaceWizard.png differ diff --git a/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_Cloud-Native_Security_Vulnerability_Risk_Management.png b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_Cloud-Native_Security_Vulnerability_Risk_Management.png new file mode 100644 index 000000000..389a09a4c Binary files /dev/null and b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_Cloud-Native_Security_Vulnerability_Risk_Management.png differ diff --git a/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.32.10.png b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.32.10.png new file mode 100644 index 000000000..6dfaa16e7 Binary files /dev/null and b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.32.10.png differ diff --git a/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.28.png b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.28.png new file mode 100644 index 000000000..305fc93e7 Binary files /dev/null and b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.28.png differ diff --git a/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.42.png b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.42.png new file mode 100644 index 000000000..e45799c9d Binary files /dev/null and b/static/img/releases/2021-03-16-mondoo-3.7.0-is-out/Screenshot_2021-03-16_at_21.33.42.png differ diff --git a/static/img/releases/2021-04-16-mondoo-4.3.0-is-out/Screenshot_2021-04-16_Cloud-Native_Security_Vulnerability_Risk_Management.png b/static/img/releases/2021-04-16-mondoo-4.3.0-is-out/Screenshot_2021-04-16_Cloud-Native_Security_Vulnerability_Risk_Management.png new file mode 100644 index 000000000..22c636784 Binary files /dev/null and b/static/img/releases/2021-04-16-mondoo-4.3.0-is-out/Screenshot_2021-04-16_Cloud-Native_Security_Vulnerability_Risk_Management.png differ diff --git a/static/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.11.19.png b/static/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.11.19.png new file mode 100644 index 000000000..1fc412b43 Binary files /dev/null and b/static/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.11.19.png differ diff --git a/static/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.12.52.png b/static/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.12.52.png new file mode 100644 index 000000000..fc3d65717 Binary files /dev/null and b/static/img/releases/2021-05-17-mondoo-4.7.0-is-out/Screenshot_2021-05-17_at_10.12.52.png differ diff --git a/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-57-07_Cloud-Native_Security_Vulnerability_Risk_Management.png b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-57-07_Cloud-Native_Security_Vulnerability_Risk_Management.png new file mode 100644 index 000000000..3d840aa75 Binary files /dev/null and b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-57-07_Cloud-Native_Security_Vulnerability_Risk_Management.png differ diff --git a/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-58-41_Cloud-Native_Security_Vulnerability_Risk_Management.png b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-58-41_Cloud-Native_Security_Vulnerability_Risk_Management.png new file mode 100644 index 000000000..4e3a368ea Binary files /dev/null and b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11-58-41_Cloud-Native_Security_Vulnerability_Risk_Management.png differ diff --git a/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.46.png b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.46.png new file mode 100644 index 000000000..9d6eeabdc Binary files /dev/null and b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.46.png differ diff --git a/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.52.png b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.52.png new file mode 100644 index 000000000..120e02680 Binary files /dev/null and b/static/img/releases/2021-07-19-mondoo-4.11.0-is-out/Screenshot_2021-07-19_at_11.59.52.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.42.39.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.42.39.png new file mode 100644 index 000000000..406cd68fc Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.42.39.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.00.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.00.png new file mode 100644 index 000000000..3e9f5d257 Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.00.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.48.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.48.png new file mode 100644 index 000000000..a0a06ce82 Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_20.54.48.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.01.38.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.01.38.png new file mode 100644 index 000000000..fbbbffca1 Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.01.38.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.04.46.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.04.46.png new file mode 100644 index 000000000..93b3dfc92 Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.04.46.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.08.26.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.08.26.png new file mode 100644 index 000000000..63bd22da1 Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.08.26.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.13.14.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.13.14.png new file mode 100644 index 000000000..c357946b6 Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.13.14.png differ diff --git a/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.16.39.png b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.16.39.png new file mode 100644 index 000000000..005e1cecc Binary files /dev/null and b/static/img/releases/2021-08-10-mondoo-4.15.0-is-out/Screenshot_2021-08-10_at_21.16.39.png differ diff --git a/static/img/releases/2021-08-18-mondoo-4.16.0-is-out/contains_only.png b/static/img/releases/2021-08-18-mondoo-4.16.0-is-out/contains_only.png new file mode 100644 index 000000000..dd5791756 Binary files /dev/null and b/static/img/releases/2021-08-18-mondoo-4.16.0-is-out/contains_only.png differ diff --git a/static/img/releases/2021-08-18-mondoo-4.16.0-is-out/parse_plist.png b/static/img/releases/2021-08-18-mondoo-4.16.0-is-out/parse_plist.png new file mode 100644 index 000000000..2c4483fc7 Binary files /dev/null and b/static/img/releases/2021-08-18-mondoo-4.16.0-is-out/parse_plist.png differ diff --git a/static/img/releases/2021-08-24-mondoo-4.17.0-is-out/harbor.png b/static/img/releases/2021-08-24-mondoo-4.17.0-is-out/harbor.png new file mode 100644 index 000000000..b0a2e8ba2 Binary files /dev/null and b/static/img/releases/2021-08-24-mondoo-4.17.0-is-out/harbor.png differ diff --git a/static/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-1.png b/static/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-1.png new file mode 100644 index 000000000..04a0de65f Binary files /dev/null and b/static/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-1.png differ diff --git a/static/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-2.png b/static/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-2.png new file mode 100644 index 000000000..ae2250188 Binary files /dev/null and b/static/img/releases/2021-09-13-mondoo-5.2.0-is-out/getting-started-2.png differ diff --git a/static/img/releases/2021-10-04-mondoo-5.7.0-is-out/chat_alert.png b/static/img/releases/2021-10-04-mondoo-5.7.0-is-out/chat_alert.png new file mode 100644 index 000000000..00997110e Binary files /dev/null and b/static/img/releases/2021-10-04-mondoo-5.7.0-is-out/chat_alert.png differ diff --git a/static/img/releases/2021-10-04-mondoo-5.8.0-is-out/k8s-gke-shell.png b/static/img/releases/2021-10-04-mondoo-5.8.0-is-out/k8s-gke-shell.png new file mode 100644 index 000000000..e55dc7fe8 Binary files /dev/null and b/static/img/releases/2021-10-04-mondoo-5.8.0-is-out/k8s-gke-shell.png differ diff --git a/static/img/releases/2021-10-12-mondoo-5.9.0-is-out/improved_help.png b/static/img/releases/2021-10-12-mondoo-5.9.0-is-out/improved_help.png new file mode 100644 index 000000000..fd92018ed Binary files /dev/null and b/static/img/releases/2021-10-12-mondoo-5.9.0-is-out/improved_help.png differ diff --git a/static/img/releases/2021-10-12-mondoo-5.9.0-is-out/yaml_resource.png b/static/img/releases/2021-10-12-mondoo-5.9.0-is-out/yaml_resource.png new file mode 100644 index 000000000..09922a728 Binary files /dev/null and b/static/img/releases/2021-10-12-mondoo-5.9.0-is-out/yaml_resource.png differ diff --git a/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/ciphers.png b/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/ciphers.png new file mode 100644 index 000000000..71f5bb9c9 Binary files /dev/null and b/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/ciphers.png differ diff --git a/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/common_regex.png b/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/common_regex.png new file mode 100644 index 000000000..0ea614ce5 Binary files /dev/null and b/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/common_regex.png differ diff --git a/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/regex_flags.png b/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/regex_flags.png new file mode 100644 index 000000000..2bdf9ecc9 Binary files /dev/null and b/static/img/releases/2021-10-19-mondoo-5.10.0-is-out/regex_flags.png differ diff --git a/static/img/releases/2021-11-10-mondoo-5.13.0-is-out/vuln.png b/static/img/releases/2021-11-10-mondoo-5.13.0-is-out/vuln.png new file mode 100644 index 000000000..fd0306498 Binary files /dev/null and b/static/img/releases/2021-11-10-mondoo-5.13.0-is-out/vuln.png differ diff --git a/static/img/releases/2021-11-30-mondoo-5.16.1-is-out/native_assessments.png b/static/img/releases/2021-11-30-mondoo-5.16.1-is-out/native_assessments.png new file mode 100644 index 000000000..bfe3a6c63 Binary files /dev/null and b/static/img/releases/2021-11-30-mondoo-5.16.1-is-out/native_assessments.png differ diff --git a/static/img/releases/2021-11-30-mondoo-5.16.1-is-out/tf.png b/static/img/releases/2021-11-30-mondoo-5.16.1-is-out/tf.png new file mode 100644 index 000000000..14a49eab5 Binary files /dev/null and b/static/img/releases/2021-11-30-mondoo-5.16.1-is-out/tf.png differ diff --git a/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/dns-policy.png b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/dns-policy.png new file mode 100644 index 000000000..7863e85b6 Binary files /dev/null and b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/dns-policy.png differ diff --git a/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/host-platform.png b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/host-platform.png new file mode 100644 index 000000000..75e4cd2df Binary files /dev/null and b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/host-platform.png differ diff --git a/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/host.png b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/host.png new file mode 100644 index 000000000..f5b7da3b3 Binary files /dev/null and b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/host.png differ diff --git a/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/terraform.png b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/terraform.png new file mode 100644 index 000000000..952808b9d Binary files /dev/null and b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/terraform.png differ diff --git a/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-extensions.png b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-extensions.png new file mode 100644 index 000000000..d8c144a5e Binary files /dev/null and b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-extensions.png differ diff --git a/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-policy.png b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-policy.png new file mode 100644 index 000000000..c618f82d9 Binary files /dev/null and b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-policy.png differ diff --git a/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-revoked.png b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-revoked.png new file mode 100644 index 000000000..a6dff8436 Binary files /dev/null and b/static/img/releases/2021-12-7-mondoo-5.17.1-is-out/tls-revoked.png differ diff --git a/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/cve-2022-22823.png b/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/cve-2022-22823.png new file mode 100644 index 000000000..65e2c65a5 Binary files /dev/null and b/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/cve-2022-22823.png differ diff --git a/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/platform-vulnerability-policy.png b/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/platform-vulnerability-policy.png new file mode 100644 index 000000000..207a7869b Binary files /dev/null and b/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/platform-vulnerability-policy.png differ diff --git a/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/remove-terminated-assets.png b/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/remove-terminated-assets.png new file mode 100644 index 000000000..2c42900a1 Binary files /dev/null and b/static/img/releases/2022-02-23-mondoo-5.28.0-is-out/remove-terminated-assets.png differ diff --git a/static/img/releases/2022-03-30-mondoo-5.32.0-is-out/individual_policy.png b/static/img/releases/2022-03-30-mondoo-5.32.0-is-out/individual_policy.png new file mode 100644 index 000000000..3b36a42d4 Binary files /dev/null and b/static/img/releases/2022-03-30-mondoo-5.32.0-is-out/individual_policy.png differ diff --git a/static/img/releases/2022-03-30-mondoo-5.32.0-is-out/policy_hub.png b/static/img/releases/2022-03-30-mondoo-5.32.0-is-out/policy_hub.png new file mode 100644 index 000000000..ddcb9d26e Binary files /dev/null and b/static/img/releases/2022-03-30-mondoo-5.32.0-is-out/policy_hub.png differ diff --git a/static/img/releases/2022-04-12-mondoo-5.34.1-is-out/console-annotations.png b/static/img/releases/2022-04-12-mondoo-5.34.1-is-out/console-annotations.png new file mode 100644 index 000000000..8f90297b1 Binary files /dev/null and b/static/img/releases/2022-04-12-mondoo-5.34.1-is-out/console-annotations.png differ diff --git a/static/img/releases/2022-04-19-mondoo-5.35.0-is-out/bars.png b/static/img/releases/2022-04-19-mondoo-5.35.0-is-out/bars.png new file mode 100644 index 000000000..ac5b49d5e Binary files /dev/null and b/static/img/releases/2022-04-19-mondoo-5.35.0-is-out/bars.png differ diff --git a/static/img/releases/2022-04-19-mondoo-5.35.0-is-out/radials.png b/static/img/releases/2022-04-19-mondoo-5.35.0-is-out/radials.png new file mode 100644 index 000000000..5a1140a42 Binary files /dev/null and b/static/img/releases/2022-04-19-mondoo-5.35.0-is-out/radials.png differ diff --git a/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/colorblind_mode.png b/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/colorblind_mode.png new file mode 100644 index 000000000..64cce205b Binary files /dev/null and b/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/colorblind_mode.png differ diff --git a/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/ebs_settings.png b/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/ebs_settings.png new file mode 100644 index 000000000..296f4e7b6 Binary files /dev/null and b/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/ebs_settings.png differ diff --git a/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/setting.png b/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/setting.png new file mode 100644 index 000000000..0f1f12805 Binary files /dev/null and b/static/img/releases/2022-04-26-mondoo-5.36.1-is-out/setting.png differ diff --git a/static/img/releases/2022-05-03-mondoo-5.37-is-out/eol_reporting.png b/static/img/releases/2022-05-03-mondoo-5.37-is-out/eol_reporting.png new file mode 100644 index 000000000..00c26bed3 Binary files /dev/null and b/static/img/releases/2022-05-03-mondoo-5.37-is-out/eol_reporting.png differ diff --git a/static/img/releases/2022-05-03-mondoo-5.37-is-out/windows_10_advisories.png b/static/img/releases/2022-05-03-mondoo-5.37-is-out/windows_10_advisories.png new file mode 100644 index 000000000..f41fcea47 Binary files /dev/null and b/static/img/releases/2022-05-03-mondoo-5.37-is-out/windows_10_advisories.png differ diff --git a/static/img/releases/2022-05-17-mondoo-5.39-is-out/asset-view.png b/static/img/releases/2022-05-17-mondoo-5.39-is-out/asset-view.png new file mode 100644 index 000000000..9677c9d10 Binary files /dev/null and b/static/img/releases/2022-05-17-mondoo-5.39-is-out/asset-view.png differ diff --git a/static/img/releases/2022-05-17-mondoo-5.39-is-out/ci-cd-secure-container-build.png b/static/img/releases/2022-05-17-mondoo-5.39-is-out/ci-cd-secure-container-build.png new file mode 100644 index 000000000..f5b1bef09 Binary files /dev/null and b/static/img/releases/2022-05-17-mondoo-5.39-is-out/ci-cd-secure-container-build.png differ diff --git a/static/img/releases/2022-05-17-mondoo-5.39-is-out/github-marketplace.png b/static/img/releases/2022-05-17-mondoo-5.39-is-out/github-marketplace.png new file mode 100644 index 000000000..3b7ecf1f0 Binary files /dev/null and b/static/img/releases/2022-05-17-mondoo-5.39-is-out/github-marketplace.png differ diff --git a/static/img/releases/2022-05-17-mondoo-5.39-is-out/kubernetes-asset.png b/static/img/releases/2022-05-17-mondoo-5.39-is-out/kubernetes-asset.png new file mode 100644 index 000000000..5ff2245a8 Binary files /dev/null and b/static/img/releases/2022-05-17-mondoo-5.39-is-out/kubernetes-asset.png differ diff --git a/static/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-aws-orgs.png b/static/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-aws-orgs.png new file mode 100644 index 000000000..fa8794a31 Binary files /dev/null and b/static/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-aws-orgs.png differ diff --git a/static/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-compact-vs-full.png b/static/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-compact-vs-full.png new file mode 100644 index 000000000..fb2bd0505 Binary files /dev/null and b/static/img/releases/2022-05-24-mondoo-6.0.0-is-out/mondoo6-compact-vs-full.png differ diff --git a/static/img/releases/2022-06-02-mondoo-6.1.1-is-out/k8s_customresource.png b/static/img/releases/2022-06-02-mondoo-6.1.1-is-out/k8s_customresource.png new file mode 100644 index 000000000..956d41b60 Binary files /dev/null and b/static/img/releases/2022-06-02-mondoo-6.1.1-is-out/k8s_customresource.png differ diff --git a/static/img/releases/2022-06-02-mondoo-6.1.1-is-out/region_switcher.png b/static/img/releases/2022-06-02-mondoo-6.1.1-is-out/region_switcher.png new file mode 100644 index 000000000..fe42892a8 Binary files /dev/null and b/static/img/releases/2022-06-02-mondoo-6.1.1-is-out/region_switcher.png differ diff --git a/static/img/releases/2022-06-14-mondoo-6.2-is-out/container_scan.png b/static/img/releases/2022-06-14-mondoo-6.2-is-out/container_scan.png new file mode 100644 index 000000000..746cf9ae2 Binary files /dev/null and b/static/img/releases/2022-06-14-mondoo-6.2-is-out/container_scan.png differ diff --git a/static/img/releases/2022-06-23-mondoo-6.3-is-out/integrations.jpg b/static/img/releases/2022-06-23-mondoo-6.3-is-out/integrations.jpg new file mode 100644 index 000000000..543d641c1 Binary files /dev/null and b/static/img/releases/2022-06-23-mondoo-6.3-is-out/integrations.jpg differ diff --git a/static/img/releases/2022-06-23-mondoo-6.3-is-out/overview.jpg b/static/img/releases/2022-06-23-mondoo-6.3-is-out/overview.jpg new file mode 100644 index 000000000..4d81119aa Binary files /dev/null and b/static/img/releases/2022-06-23-mondoo-6.3-is-out/overview.jpg differ diff --git a/static/img/releases/2022-07-05-mondoo-6.5-is-out/integrations.png b/static/img/releases/2022-07-05-mondoo-6.5-is-out/integrations.png new file mode 100644 index 000000000..12787a647 Binary files /dev/null and b/static/img/releases/2022-07-05-mondoo-6.5-is-out/integrations.png differ diff --git a/static/img/releases/2022-07-12-mondoo-6.6-is-out/circleci.jpg b/static/img/releases/2022-07-12-mondoo-6.6-is-out/circleci.jpg new file mode 100644 index 000000000..2147ef306 Binary files /dev/null and b/static/img/releases/2022-07-12-mondoo-6.6-is-out/circleci.jpg differ diff --git a/static/img/releases/2022-07-12-mondoo-6.6-is-out/copy_mrn.png b/static/img/releases/2022-07-12-mondoo-6.6-is-out/copy_mrn.png new file mode 100644 index 000000000..627a5e6f8 Binary files /dev/null and b/static/img/releases/2022-07-12-mondoo-6.6-is-out/copy_mrn.png differ diff --git a/static/img/releases/2022-07-12-mondoo-6.6-is-out/multi_line_shell.gif b/static/img/releases/2022-07-12-mondoo-6.6-is-out/multi_line_shell.gif new file mode 100644 index 000000000..7bbf0472d Binary files /dev/null and b/static/img/releases/2022-07-12-mondoo-6.6-is-out/multi_line_shell.gif differ diff --git a/static/img/releases/2022-07-19-mondoo-6.7-is-out/summary.png b/static/img/releases/2022-07-19-mondoo-6.7-is-out/summary.png new file mode 100644 index 000000000..dc81dcd21 Binary files /dev/null and b/static/img/releases/2022-07-19-mondoo-6.7-is-out/summary.png differ diff --git a/static/img/releases/2022-07-26-mondoo-6.8-is-out/ci_setup_window.png b/static/img/releases/2022-07-26-mondoo-6.8-is-out/ci_setup_window.png new file mode 100644 index 000000000..15b15afcf Binary files /dev/null and b/static/img/releases/2022-07-26-mondoo-6.8-is-out/ci_setup_window.png differ diff --git a/static/img/releases/2022-07-26-mondoo-6.8-is-out/cluster_scan_results.png b/static/img/releases/2022-07-26-mondoo-6.8-is-out/cluster_scan_results.png new file mode 100644 index 000000000..9396d4252 Binary files /dev/null and b/static/img/releases/2022-07-26-mondoo-6.8-is-out/cluster_scan_results.png differ diff --git a/static/img/releases/2022-07-26-mondoo-6.8-is-out/container_cves.png b/static/img/releases/2022-07-26-mondoo-6.8-is-out/container_cves.png new file mode 100644 index 000000000..d27a6c5cc Binary files /dev/null and b/static/img/releases/2022-07-26-mondoo-6.8-is-out/container_cves.png differ diff --git a/static/img/releases/2022-08-02-mondoo-6.9-is-out/asset_deletion.png b/static/img/releases/2022-08-02-mondoo-6.9-is-out/asset_deletion.png new file mode 100644 index 000000000..44d805033 Binary files /dev/null and b/static/img/releases/2022-08-02-mondoo-6.9-is-out/asset_deletion.png differ diff --git a/static/img/releases/2022-08-02-mondoo-6.9-is-out/mondoo_shell.png b/static/img/releases/2022-08-02-mondoo-6.9-is-out/mondoo_shell.png new file mode 100644 index 000000000..a9c3c58a3 Binary files /dev/null and b/static/img/releases/2022-08-02-mondoo-6.9-is-out/mondoo_shell.png differ diff --git a/static/img/releases/2022-08-02-mondoo-6.9-is-out/platform_vulnerabilities.png b/static/img/releases/2022-08-02-mondoo-6.9-is-out/platform_vulnerabilities.png new file mode 100644 index 000000000..4cb3b9d63 Binary files /dev/null and b/static/img/releases/2022-08-02-mondoo-6.9-is-out/platform_vulnerabilities.png differ diff --git a/static/img/releases/2022-08-02-mondoo-6.9-is-out/pod_asset.png b/static/img/releases/2022-08-02-mondoo-6.9-is-out/pod_asset.png new file mode 100644 index 000000000..8bbbc9ccd Binary files /dev/null and b/static/img/releases/2022-08-02-mondoo-6.9-is-out/pod_asset.png differ diff --git a/static/img/releases/2022-08-02-mondoo-6.9-is-out/policy_indication.png b/static/img/releases/2022-08-02-mondoo-6.9-is-out/policy_indication.png new file mode 100644 index 000000000..32ba0b441 Binary files /dev/null and b/static/img/releases/2022-08-02-mondoo-6.9-is-out/policy_indication.png differ diff --git a/static/img/releases/2022-08-02-mondoo-6.9-is-out/skip_warnings.png b/static/img/releases/2022-08-02-mondoo-6.9-is-out/skip_warnings.png new file mode 100644 index 000000000..649d02af4 Binary files /dev/null and b/static/img/releases/2022-08-02-mondoo-6.9-is-out/skip_warnings.png differ diff --git a/static/img/releases/2022-08-09-mondoo-6.10-is-out/filtering.png b/static/img/releases/2022-08-09-mondoo-6.10-is-out/filtering.png new file mode 100644 index 000000000..21d28d164 Binary files /dev/null and b/static/img/releases/2022-08-09-mondoo-6.10-is-out/filtering.png differ diff --git a/static/img/releases/2022-08-09-mondoo-6.10-is-out/fleet.png b/static/img/releases/2022-08-09-mondoo-6.10-is-out/fleet.png new file mode 100644 index 000000000..d9d2327ca Binary files /dev/null and b/static/img/releases/2022-08-09-mondoo-6.10-is-out/fleet.png differ diff --git a/static/img/releases/2022-08-09-mondoo-6.10-is-out/gcos.png b/static/img/releases/2022-08-09-mondoo-6.10-is-out/gcos.png new file mode 100644 index 000000000..fbf6b9c53 Binary files /dev/null and b/static/img/releases/2022-08-09-mondoo-6.10-is-out/gcos.png differ diff --git a/static/img/releases/2022-08-09-mondoo-6.10-is-out/initcontainer.png b/static/img/releases/2022-08-09-mondoo-6.10-is-out/initcontainer.png new file mode 100644 index 000000000..46626d050 Binary files /dev/null and b/static/img/releases/2022-08-09-mondoo-6.10-is-out/initcontainer.png differ diff --git a/static/img/releases/2022-08-09-mondoo-6.10-is-out/pod.png b/static/img/releases/2022-08-09-mondoo-6.10-is-out/pod.png new file mode 100644 index 000000000..c1c1381b4 Binary files /dev/null and b/static/img/releases/2022-08-09-mondoo-6.10-is-out/pod.png differ diff --git a/static/img/releases/2022-08-09-mondoo-6.10-is-out/scan_results.png b/static/img/releases/2022-08-09-mondoo-6.10-is-out/scan_results.png new file mode 100644 index 000000000..fb0571176 Binary files /dev/null and b/static/img/releases/2022-08-09-mondoo-6.10-is-out/scan_results.png differ diff --git a/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/aws_best_practices.png b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/aws_best_practices.png new file mode 100644 index 000000000..0ef18da9d Binary files /dev/null and b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/aws_best_practices.png differ diff --git a/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/busybox.png b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/busybox.png new file mode 100644 index 000000000..42a90ff03 Binary files /dev/null and b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/busybox.png differ diff --git a/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/cluster_name.png b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/cluster_name.png new file mode 100644 index 000000000..eaac54522 Binary files /dev/null and b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/cluster_name.png differ diff --git a/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/download.png b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/download.png new file mode 100644 index 000000000..91222d712 Binary files /dev/null and b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/download.png differ diff --git a/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/platform_titles.png b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/platform_titles.png new file mode 100644 index 000000000..34c1e99b0 Binary files /dev/null and b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/platform_titles.png differ diff --git a/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/supplychain.png b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/supplychain.png new file mode 100644 index 000000000..cc16d1eac Binary files /dev/null and b/static/img/releases/2022-08-17-mondoo-6.11.1-is-out/supplychain.png differ diff --git a/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/ci.png b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/ci.png new file mode 100644 index 000000000..9c54b5461 Binary files /dev/null and b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/ci.png differ diff --git a/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/image.png b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/image.png new file mode 100644 index 000000000..fc1f3a7dc Binary files /dev/null and b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/image.png differ diff --git a/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/navigation.png b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/navigation.png new file mode 100644 index 000000000..c8a29f8de Binary files /dev/null and b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/navigation.png differ diff --git a/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/scan.png b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/scan.png new file mode 100644 index 000000000..30097067d Binary files /dev/null and b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/scan.png differ diff --git a/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/workloads.png b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/workloads.png new file mode 100644 index 000000000..b6bed81e5 Binary files /dev/null and b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/workloads.png differ diff --git a/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/workstation.png b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/workstation.png new file mode 100644 index 000000000..1ff21770a Binary files /dev/null and b/static/img/releases/2022-08-25-mondoo-6.12.2-is-out/workstation.png differ diff --git a/static/img/releases/2022-08-30-mondoo-6.13.1-is-out/action.png b/static/img/releases/2022-08-30-mondoo-6.13.1-is-out/action.png new file mode 100644 index 000000000..4d96cc943 Binary files /dev/null and b/static/img/releases/2022-08-30-mondoo-6.13.1-is-out/action.png differ diff --git a/static/img/releases/2022-08-30-mondoo-6.13.1-is-out/eks.png b/static/img/releases/2022-08-30-mondoo-6.13.1-is-out/eks.png new file mode 100644 index 000000000..395dbb433 Binary files /dev/null and b/static/img/releases/2022-08-30-mondoo-6.13.1-is-out/eks.png differ diff --git a/static/img/releases/2022-09-06-mondoo-6.14-is-out/control_scan.png b/static/img/releases/2022-09-06-mondoo-6.14-is-out/control_scan.png new file mode 100644 index 000000000..2644a5de4 Binary files /dev/null and b/static/img/releases/2022-09-06-mondoo-6.14-is-out/control_scan.png differ diff --git a/static/img/releases/2022-09-06-mondoo-6.14-is-out/filtering.png b/static/img/releases/2022-09-06-mondoo-6.14-is-out/filtering.png new file mode 100644 index 000000000..d78713836 Binary files /dev/null and b/static/img/releases/2022-09-06-mondoo-6.14-is-out/filtering.png differ diff --git a/static/img/releases/2022-09-06-mondoo-6.14-is-out/workstation.png b/static/img/releases/2022-09-06-mondoo-6.14-is-out/workstation.png new file mode 100644 index 000000000..26bdef6cb Binary files /dev/null and b/static/img/releases/2022-09-06-mondoo-6.14-is-out/workstation.png differ diff --git a/static/img/releases/2022-09-13-mondoo-6.15-is-out/fleet_ui.png b/static/img/releases/2022-09-13-mondoo-6.15-is-out/fleet_ui.png new file mode 100644 index 000000000..f7a774cd4 Binary files /dev/null and b/static/img/releases/2022-09-13-mondoo-6.15-is-out/fleet_ui.png differ diff --git a/static/img/releases/2022-09-13-mondoo-6.15-is-out/integration.png b/static/img/releases/2022-09-13-mondoo-6.15-is-out/integration.png new file mode 100644 index 000000000..ae20fc1e6 Binary files /dev/null and b/static/img/releases/2022-09-13-mondoo-6.15-is-out/integration.png differ diff --git a/static/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-discover-all.png b/static/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-discover-all.png new file mode 100644 index 000000000..880c47d07 Binary files /dev/null and b/static/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-discover-all.png differ diff --git a/static/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-transport.png b/static/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-transport.png new file mode 100644 index 000000000..e86add65d Binary files /dev/null and b/static/img/releases/2022-09-13-mondoo-6.15-is-out/mondoo-transport.png differ diff --git a/static/img/releases/2022-09-13-mondoo-6.15-is-out/policies.png b/static/img/releases/2022-09-13-mondoo-6.15-is-out/policies.png new file mode 100644 index 000000000..e69f09125 Binary files /dev/null and b/static/img/releases/2022-09-13-mondoo-6.15-is-out/policies.png differ diff --git a/static/img/releases/2022-09-13-mondoo-6.15-is-out/priorities.png b/static/img/releases/2022-09-13-mondoo-6.15-is-out/priorities.png new file mode 100644 index 000000000..c837b693a Binary files /dev/null and b/static/img/releases/2022-09-13-mondoo-6.15-is-out/priorities.png differ diff --git a/static/img/releases/2022-09-21-mondoo-6.16-is-out/asseterror.png b/static/img/releases/2022-09-21-mondoo-6.16-is-out/asseterror.png new file mode 100644 index 000000000..4d493d96a Binary files /dev/null and b/static/img/releases/2022-09-21-mondoo-6.16-is-out/asseterror.png differ diff --git a/static/img/releases/2022-09-21-mondoo-6.16-is-out/controls.png b/static/img/releases/2022-09-21-mondoo-6.16-is-out/controls.png new file mode 100644 index 000000000..09ed652e0 Binary files /dev/null and b/static/img/releases/2022-09-21-mondoo-6.16-is-out/controls.png differ diff --git a/static/img/releases/2022-09-21-mondoo-6.16-is-out/top5.png b/static/img/releases/2022-09-21-mondoo-6.16-is-out/top5.png new file mode 100644 index 000000000..bf896bbe3 Binary files /dev/null and b/static/img/releases/2022-09-21-mondoo-6.16-is-out/top5.png differ diff --git a/static/img/releases/2022-09-27-mondoo-6.17-is-out/bsi.png b/static/img/releases/2022-09-27-mondoo-6.17-is-out/bsi.png new file mode 100644 index 000000000..c9e921cb5 Binary files /dev/null and b/static/img/releases/2022-09-27-mondoo-6.17-is-out/bsi.png differ diff --git a/static/img/releases/2022-09-27-mondoo-6.17-is-out/explorer.png b/static/img/releases/2022-09-27-mondoo-6.17-is-out/explorer.png new file mode 100644 index 000000000..073545217 Binary files /dev/null and b/static/img/releases/2022-09-27-mondoo-6.17-is-out/explorer.png differ diff --git a/static/img/releases/2022-10-04-mondoo-6.18-is-out/assets.png b/static/img/releases/2022-10-04-mondoo-6.18-is-out/assets.png new file mode 100644 index 000000000..6f49b0271 Binary files /dev/null and b/static/img/releases/2022-10-04-mondoo-6.18-is-out/assets.png differ diff --git a/static/img/releases/2022-10-04-mondoo-6.18-is-out/nist.png b/static/img/releases/2022-10-04-mondoo-6.18-is-out/nist.png new file mode 100644 index 000000000..9af797dec Binary files /dev/null and b/static/img/releases/2022-10-04-mondoo-6.18-is-out/nist.png differ diff --git a/static/img/releases/2022-10-11-mondoo-6.19-is-out/controls.png b/static/img/releases/2022-10-11-mondoo-6.19-is-out/controls.png new file mode 100644 index 000000000..518de26af Binary files /dev/null and b/static/img/releases/2022-10-11-mondoo-6.19-is-out/controls.png differ diff --git a/static/img/releases/2022-10-11-mondoo-6.19-is-out/hover_over.png b/static/img/releases/2022-10-11-mondoo-6.19-is-out/hover_over.png new file mode 100644 index 000000000..800aa3dd5 Binary files /dev/null and b/static/img/releases/2022-10-11-mondoo-6.19-is-out/hover_over.png differ diff --git a/static/img/releases/2022-10-11-mondoo-6.19-is-out/service_accounts.png b/static/img/releases/2022-10-11-mondoo-6.19-is-out/service_accounts.png new file mode 100644 index 000000000..bb534ccbc Binary files /dev/null and b/static/img/releases/2022-10-11-mondoo-6.19-is-out/service_accounts.png differ diff --git a/static/img/releases/2022-10-11-mondoo-6.19-is-out/tokens.png b/static/img/releases/2022-10-11-mondoo-6.19-is-out/tokens.png new file mode 100644 index 000000000..bef094344 Binary files /dev/null and b/static/img/releases/2022-10-11-mondoo-6.19-is-out/tokens.png differ diff --git a/static/img/releases/2022-10-18-mondoo-7.0-is-out/ci_setup.png b/static/img/releases/2022-10-18-mondoo-7.0-is-out/ci_setup.png new file mode 100644 index 000000000..bd0a9b74a Binary files /dev/null and b/static/img/releases/2022-10-18-mondoo-7.0-is-out/ci_setup.png differ diff --git a/static/img/releases/2022-10-25-mondoo-7.1-is-out/batch_delete.png b/static/img/releases/2022-10-25-mondoo-7.1-is-out/batch_delete.png new file mode 100644 index 000000000..69cac43ad Binary files /dev/null and b/static/img/releases/2022-10-25-mondoo-7.1-is-out/batch_delete.png differ diff --git a/static/img/releases/2022-10-25-mondoo-7.1-is-out/ci_examples.png b/static/img/releases/2022-10-25-mondoo-7.1-is-out/ci_examples.png new file mode 100644 index 000000000..e46275c31 Binary files /dev/null and b/static/img/releases/2022-10-25-mondoo-7.1-is-out/ci_examples.png differ diff --git a/static/img/releases/2022-10-25-mondoo-7.1-is-out/ci_jobs.png b/static/img/releases/2022-10-25-mondoo-7.1-is-out/ci_jobs.png new file mode 100644 index 000000000..351e7dd70 Binary files /dev/null and b/static/img/releases/2022-10-25-mondoo-7.1-is-out/ci_jobs.png differ diff --git a/static/img/releases/2022-10-25-mondoo-7.1-is-out/namespaces.png b/static/img/releases/2022-10-25-mondoo-7.1-is-out/namespaces.png new file mode 100644 index 000000000..09472dfe9 Binary files /dev/null and b/static/img/releases/2022-10-25-mondoo-7.1-is-out/namespaces.png differ diff --git a/static/img/releases/2022-10-25-mondoo-7.1-is-out/nsa_policy.png b/static/img/releases/2022-10-25-mondoo-7.1-is-out/nsa_policy.png new file mode 100644 index 000000000..5baf0c373 Binary files /dev/null and b/static/img/releases/2022-10-25-mondoo-7.1-is-out/nsa_policy.png differ diff --git a/static/img/releases/2022-10-25-mondoo-7.1-is-out/short_image_name.png b/static/img/releases/2022-10-25-mondoo-7.1-is-out/short_image_name.png new file mode 100644 index 000000000..04dd54a76 Binary files /dev/null and b/static/img/releases/2022-10-25-mondoo-7.1-is-out/short_image_name.png differ diff --git a/static/img/releases/2022-10-25-mondoo-7.1-is-out/time.png b/static/img/releases/2022-10-25-mondoo-7.1-is-out/time.png new file mode 100644 index 000000000..4d0c0d7b0 Binary files /dev/null and b/static/img/releases/2022-10-25-mondoo-7.1-is-out/time.png differ diff --git a/static/img/releases/2022-11-01-mondoo-7.2-is-out/cve_scan.png b/static/img/releases/2022-11-01-mondoo-7.2-is-out/cve_scan.png new file mode 100644 index 000000000..6c42d4f69 Binary files /dev/null and b/static/img/releases/2022-11-01-mondoo-7.2-is-out/cve_scan.png differ diff --git a/static/img/releases/2022-11-08-mondoo-7.3-is-out/multiple_subs.png b/static/img/releases/2022-11-08-mondoo-7.3-is-out/multiple_subs.png new file mode 100644 index 000000000..18e2c7bc0 Binary files /dev/null and b/static/img/releases/2022-11-08-mondoo-7.3-is-out/multiple_subs.png differ diff --git a/static/img/releases/2022-11-08-mondoo-7.3-is-out/tabs.png b/static/img/releases/2022-11-08-mondoo-7.3-is-out/tabs.png new file mode 100644 index 000000000..9d2668481 Binary files /dev/null and b/static/img/releases/2022-11-08-mondoo-7.3-is-out/tabs.png differ diff --git a/static/img/releases/2022-12-06-mondoo-7.7-is-out/asset.png b/static/img/releases/2022-12-06-mondoo-7.7-is-out/asset.png new file mode 100644 index 000000000..5cd18eadd Binary files /dev/null and b/static/img/releases/2022-12-06-mondoo-7.7-is-out/asset.png differ diff --git a/static/img/releases/2022-12-06-mondoo-7.7-is-out/indexed_results.png b/static/img/releases/2022-12-06-mondoo-7.7-is-out/indexed_results.png new file mode 100644 index 000000000..93e851431 Binary files /dev/null and b/static/img/releases/2022-12-06-mondoo-7.7-is-out/indexed_results.png differ diff --git a/static/img/releases/2022-12-06-mondoo-7.7-is-out/k8s_integration.png b/static/img/releases/2022-12-06-mondoo-7.7-is-out/k8s_integration.png new file mode 100644 index 000000000..421bfd6bc Binary files /dev/null and b/static/img/releases/2022-12-06-mondoo-7.7-is-out/k8s_integration.png differ diff --git a/static/img/releases/2022-12-06-mondoo-7.7-is-out/update_vs_scanned.png b/static/img/releases/2022-12-06-mondoo-7.7-is-out/update_vs_scanned.png new file mode 100644 index 000000000..d4e5f95e5 Binary files /dev/null and b/static/img/releases/2022-12-06-mondoo-7.7-is-out/update_vs_scanned.png differ diff --git a/static/img/releases/2022-12-27-mondoo-7.10-is-out/k8s.png b/static/img/releases/2022-12-27-mondoo-7.10-is-out/k8s.png new file mode 100644 index 000000000..c90474b8c Binary files /dev/null and b/static/img/releases/2022-12-27-mondoo-7.10-is-out/k8s.png differ diff --git a/static/img/releases/2023-01-03-mondoo-7.11-is-out/annotation.png b/static/img/releases/2023-01-03-mondoo-7.11-is-out/annotation.png new file mode 100644 index 000000000..5f2eaf686 Binary files /dev/null and b/static/img/releases/2023-01-03-mondoo-7.11-is-out/annotation.png differ diff --git a/static/img/releases/2023-01-03-mondoo-7.11-is-out/cnspec_bundle_lint.png b/static/img/releases/2023-01-03-mondoo-7.11-is-out/cnspec_bundle_lint.png new file mode 100644 index 000000000..9257b41c6 Binary files /dev/null and b/static/img/releases/2023-01-03-mondoo-7.11-is-out/cnspec_bundle_lint.png differ diff --git a/static/img/releases/2023-01-03-mondoo-7.11-is-out/code_scanning.png b/static/img/releases/2023-01-03-mondoo-7.11-is-out/code_scanning.png new file mode 100644 index 000000000..b03a91645 Binary files /dev/null and b/static/img/releases/2023-01-03-mondoo-7.11-is-out/code_scanning.png differ diff --git a/static/img/releases/2023-01-03-mondoo-7.11-is-out/integrations.png b/static/img/releases/2023-01-03-mondoo-7.11-is-out/integrations.png new file mode 100644 index 000000000..c119a6900 Binary files /dev/null and b/static/img/releases/2023-01-03-mondoo-7.11-is-out/integrations.png differ diff --git a/static/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_install.png b/static/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_install.png new file mode 100644 index 000000000..1558867f9 Binary files /dev/null and b/static/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_install.png differ diff --git a/static/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_version.png b/static/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_version.png new file mode 100644 index 000000000..5a8fe5c9a Binary files /dev/null and b/static/img/releases/2023-01-03-mondoo-7.11-is-out/pwsh_module_version.png differ diff --git a/static/img/releases/2023-01-10-mondoo-7.12-is-out/accounts.png b/static/img/releases/2023-01-10-mondoo-7.12-is-out/accounts.png new file mode 100644 index 000000000..d1bf59613 Binary files /dev/null and b/static/img/releases/2023-01-10-mondoo-7.12-is-out/accounts.png differ diff --git a/static/img/releases/2023-01-10-mondoo-7.12-is-out/ecs.png b/static/img/releases/2023-01-10-mondoo-7.12-is-out/ecs.png new file mode 100644 index 000000000..63c93967c Binary files /dev/null and b/static/img/releases/2023-01-10-mondoo-7.12-is-out/ecs.png differ diff --git a/static/img/releases/2023-01-10-mondoo-7.12-is-out/integrations.png b/static/img/releases/2023-01-10-mondoo-7.12-is-out/integrations.png new file mode 100644 index 000000000..4ddcac0e8 Binary files /dev/null and b/static/img/releases/2023-01-10-mondoo-7.12-is-out/integrations.png differ diff --git a/static/img/releases/2023-01-25-mondoo-7.14-is-out/aws_integration.png b/static/img/releases/2023-01-25-mondoo-7.14-is-out/aws_integration.png new file mode 100644 index 000000000..118d978eb Binary files /dev/null and b/static/img/releases/2023-01-25-mondoo-7.14-is-out/aws_integration.png differ diff --git a/static/img/releases/2023-01-25-mondoo-7.14-is-out/cli_scan.png b/static/img/releases/2023-01-25-mondoo-7.14-is-out/cli_scan.png new file mode 100644 index 000000000..dfde5f908 Binary files /dev/null and b/static/img/releases/2023-01-25-mondoo-7.14-is-out/cli_scan.png differ diff --git a/static/img/releases/2023-01-25-mondoo-7.14-is-out/multi_role.png b/static/img/releases/2023-01-25-mondoo-7.14-is-out/multi_role.png new file mode 100644 index 000000000..f6b221a80 Binary files /dev/null and b/static/img/releases/2023-01-25-mondoo-7.14-is-out/multi_role.png differ diff --git a/static/img/releases/2023-01-25-mondoo-7.14-is-out/namespace_filtering.png b/static/img/releases/2023-01-25-mondoo-7.14-is-out/namespace_filtering.png new file mode 100644 index 000000000..44cab6d23 Binary files /dev/null and b/static/img/releases/2023-01-25-mondoo-7.14-is-out/namespace_filtering.png differ diff --git a/static/img/releases/2023-01-25-mondoo-7.14-is-out/scan_now.png b/static/img/releases/2023-01-25-mondoo-7.14-is-out/scan_now.png new file mode 100644 index 000000000..5ef796f8f Binary files /dev/null and b/static/img/releases/2023-01-25-mondoo-7.14-is-out/scan_now.png differ diff --git a/static/img/releases/2023-01-25-mondoo-7.14-is-out/shell_github_repos.png b/static/img/releases/2023-01-25-mondoo-7.14-is-out/shell_github_repos.png new file mode 100644 index 000000000..2c0ac21fa Binary files /dev/null and b/static/img/releases/2023-01-25-mondoo-7.14-is-out/shell_github_repos.png differ diff --git a/static/img/releases/2023-01-31-mondoo-7.15-is-out/cli.gif b/static/img/releases/2023-01-31-mondoo-7.15-is-out/cli.gif new file mode 100644 index 000000000..4189c29c0 Binary files /dev/null and b/static/img/releases/2023-01-31-mondoo-7.15-is-out/cli.gif differ diff --git a/static/img/releases/2023-01-31-mondoo-7.15-is-out/csv.png b/static/img/releases/2023-01-31-mondoo-7.15-is-out/csv.png new file mode 100644 index 000000000..e541ca763 Binary files /dev/null and b/static/img/releases/2023-01-31-mondoo-7.15-is-out/csv.png differ diff --git a/static/img/releases/2023-01-31-mondoo-7.15-is-out/orgs.png b/static/img/releases/2023-01-31-mondoo-7.15-is-out/orgs.png new file mode 100644 index 000000000..0a81e3672 Binary files /dev/null and b/static/img/releases/2023-01-31-mondoo-7.15-is-out/orgs.png differ diff --git a/static/img/releases/2023-01-31-mondoo-7.15-is-out/terraform.png b/static/img/releases/2023-01-31-mondoo-7.15-is-out/terraform.png new file mode 100644 index 000000000..dfaa24961 Binary files /dev/null and b/static/img/releases/2023-01-31-mondoo-7.15-is-out/terraform.png differ diff --git a/static/img/releases/2023-02-07-mondoo-7.16-is-out/integrations.png b/static/img/releases/2023-02-07-mondoo-7.16-is-out/integrations.png new file mode 100644 index 000000000..97101e4f6 Binary files /dev/null and b/static/img/releases/2023-02-07-mondoo-7.16-is-out/integrations.png differ diff --git a/static/img/releases/2023-02-07-mondoo-7.16-is-out/mvd.png b/static/img/releases/2023-02-07-mondoo-7.16-is-out/mvd.png new file mode 100644 index 000000000..abf50c409 Binary files /dev/null and b/static/img/releases/2023-02-07-mondoo-7.16-is-out/mvd.png differ diff --git a/static/img/releases/2023-02-07-mondoo-7.16-is-out/new_ui.png b/static/img/releases/2023-02-07-mondoo-7.16-is-out/new_ui.png new file mode 100644 index 000000000..5a311ef9c Binary files /dev/null and b/static/img/releases/2023-02-07-mondoo-7.16-is-out/new_ui.png differ diff --git a/static/img/releases/2023-02-07-mondoo-7.16-is-out/policy.png b/static/img/releases/2023-02-07-mondoo-7.16-is-out/policy.png new file mode 100644 index 000000000..41c9708d6 Binary files /dev/null and b/static/img/releases/2023-02-07-mondoo-7.16-is-out/policy.png differ diff --git a/static/img/releases/2023-02-14-mondoo-7.17-is-out/cve.png b/static/img/releases/2023-02-14-mondoo-7.17-is-out/cve.png new file mode 100644 index 000000000..3f9fbd1c1 Binary files /dev/null and b/static/img/releases/2023-02-14-mondoo-7.17-is-out/cve.png differ diff --git a/static/img/releases/2023-02-14-mondoo-7.17-is-out/ecr_ecs.png b/static/img/releases/2023-02-14-mondoo-7.17-is-out/ecr_ecs.png new file mode 100644 index 000000000..5e5fb45b6 Binary files /dev/null and b/static/img/releases/2023-02-14-mondoo-7.17-is-out/ecr_ecs.png differ diff --git a/static/img/releases/2023-02-14-mondoo-7.17-is-out/fleet.png b/static/img/releases/2023-02-14-mondoo-7.17-is-out/fleet.png new file mode 100644 index 000000000..4e9d6191f Binary files /dev/null and b/static/img/releases/2023-02-14-mondoo-7.17-is-out/fleet.png differ diff --git a/static/img/releases/2023-02-14-mondoo-7.17-is-out/integrations.png b/static/img/releases/2023-02-14-mondoo-7.17-is-out/integrations.png new file mode 100644 index 000000000..a1a9f3206 Binary files /dev/null and b/static/img/releases/2023-02-14-mondoo-7.17-is-out/integrations.png differ diff --git a/static/img/releases/2023-02-14-mondoo-7.17-is-out/scratch.png b/static/img/releases/2023-02-14-mondoo-7.17-is-out/scratch.png new file mode 100644 index 000000000..a5d282ff5 Binary files /dev/null and b/static/img/releases/2023-02-14-mondoo-7.17-is-out/scratch.png differ diff --git a/static/img/releases/2023-02-14-mondoo-7.17-is-out/validation.png b/static/img/releases/2023-02-14-mondoo-7.17-is-out/validation.png new file mode 100644 index 000000000..df7b54058 Binary files /dev/null and b/static/img/releases/2023-02-14-mondoo-7.17-is-out/validation.png differ diff --git a/static/img/releases/2023-03-08-mondoo-8.0-is-out/better_errors.png b/static/img/releases/2023-03-08-mondoo-8.0-is-out/better_errors.png new file mode 100644 index 000000000..cdeeb1a8e Binary files /dev/null and b/static/img/releases/2023-03-08-mondoo-8.0-is-out/better_errors.png differ diff --git a/static/img/releases/2023-03-08-mondoo-8.0-is-out/integrations.png b/static/img/releases/2023-03-08-mondoo-8.0-is-out/integrations.png new file mode 100644 index 000000000..7d1cf60a3 Binary files /dev/null and b/static/img/releases/2023-03-08-mondoo-8.0-is-out/integrations.png differ diff --git a/static/img/releases/2023-03-08-mondoo-8.0-is-out/new_login.png b/static/img/releases/2023-03-08-mondoo-8.0-is-out/new_login.png new file mode 100644 index 000000000..bb9acb57c Binary files /dev/null and b/static/img/releases/2023-03-08-mondoo-8.0-is-out/new_login.png differ diff --git a/static/img/releases/2023-03-08-mondoo-8.0-is-out/sorted_spaces.png b/static/img/releases/2023-03-08-mondoo-8.0-is-out/sorted_spaces.png new file mode 100644 index 000000000..8a0229e1c Binary files /dev/null and b/static/img/releases/2023-03-08-mondoo-8.0-is-out/sorted_spaces.png differ diff --git a/static/img/releases/2023-03-14-mondoo-8.1-is-out/windows_workstation_policy.png b/static/img/releases/2023-03-14-mondoo-8.1-is-out/windows_workstation_policy.png new file mode 100644 index 000000000..2c0749429 Binary files /dev/null and b/static/img/releases/2023-03-14-mondoo-8.1-is-out/windows_workstation_policy.png differ diff --git a/static/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_data.png b/static/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_data.png new file mode 100644 index 000000000..f335dd528 Binary files /dev/null and b/static/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_data.png differ diff --git a/static/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_setup.png b/static/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_setup.png new file mode 100644 index 000000000..c51a98c0c Binary files /dev/null and b/static/img/releases/2023-03-21-mondoo-8.2-is-out/bigquery_setup.png differ diff --git a/static/img/releases/2023-03-21-mondoo-8.2-is-out/homebrew-install.gif b/static/img/releases/2023-03-21-mondoo-8.2-is-out/homebrew-install.gif new file mode 100644 index 000000000..bfc98d6be Binary files /dev/null and b/static/img/releases/2023-03-21-mondoo-8.2-is-out/homebrew-install.gif differ diff --git a/static/img/releases/2023-03-28-mondoo-8.3-is-out/affected_assets.png b/static/img/releases/2023-03-28-mondoo-8.3-is-out/affected_assets.png new file mode 100644 index 000000000..79a6ca89b Binary files /dev/null and b/static/img/releases/2023-03-28-mondoo-8.3-is-out/affected_assets.png differ diff --git a/static/img/releases/2023-03-28-mondoo-8.3-is-out/cves_page.png b/static/img/releases/2023-03-28-mondoo-8.3-is-out/cves_page.png new file mode 100644 index 000000000..64d679d17 Binary files /dev/null and b/static/img/releases/2023-03-28-mondoo-8.3-is-out/cves_page.png differ diff --git a/static/img/releases/2023-03-28-mondoo-8.3-is-out/ms365_fleet.png b/static/img/releases/2023-03-28-mondoo-8.3-is-out/ms365_fleet.png new file mode 100644 index 000000000..2e27c9ad3 Binary files /dev/null and b/static/img/releases/2023-03-28-mondoo-8.3-is-out/ms365_fleet.png differ diff --git a/static/img/releases/2023-03-28-mondoo-8.3-is-out/mvd.png b/static/img/releases/2023-03-28-mondoo-8.3-is-out/mvd.png new file mode 100644 index 000000000..fcff848a8 Binary files /dev/null and b/static/img/releases/2023-03-28-mondoo-8.3-is-out/mvd.png differ diff --git a/static/img/releases/2023-03-28-mondoo-8.3-is-out/vulns_menu.png b/static/img/releases/2023-03-28-mondoo-8.3-is-out/vulns_menu.png new file mode 100644 index 000000000..3150b647b Binary files /dev/null and b/static/img/releases/2023-03-28-mondoo-8.3-is-out/vulns_menu.png differ diff --git a/static/img/releases/2023-04-04-mondoo-8.4-is-out/asset_explorer.png b/static/img/releases/2023-04-04-mondoo-8.4-is-out/asset_explorer.png new file mode 100644 index 000000000..124ca705f Binary files /dev/null and b/static/img/releases/2023-04-04-mondoo-8.4-is-out/asset_explorer.png differ diff --git a/static/img/releases/2023-04-04-mondoo-8.4-is-out/ingress_asset.png b/static/img/releases/2023-04-04-mondoo-8.4-is-out/ingress_asset.png new file mode 100644 index 000000000..4e3e2c8bd Binary files /dev/null and b/static/img/releases/2023-04-04-mondoo-8.4-is-out/ingress_asset.png differ diff --git a/static/img/releases/2023-04-04-mondoo-8.4-is-out/query_packs.png b/static/img/releases/2023-04-04-mondoo-8.4-is-out/query_packs.png new file mode 100644 index 000000000..11c0bf2c5 Binary files /dev/null and b/static/img/releases/2023-04-04-mondoo-8.4-is-out/query_packs.png differ diff --git a/static/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_data.png b/static/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_data.png new file mode 100644 index 000000000..3f01e0674 Binary files /dev/null and b/static/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_data.png differ diff --git a/static/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_setup.png b/static/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_setup.png new file mode 100644 index 000000000..3e76211f2 Binary files /dev/null and b/static/img/releases/2023-04-04-mondoo-8.4-is-out/snowflake_setup.png differ diff --git a/static/img/releases/2023-04-11-mondoo-8.5-is-out/policy_page.png b/static/img/releases/2023-04-11-mondoo-8.5-is-out/policy_page.png new file mode 100644 index 000000000..2936cda17 Binary files /dev/null and b/static/img/releases/2023-04-11-mondoo-8.5-is-out/policy_page.png differ diff --git a/static/img/releases/2023-04-11-mondoo-8.5-is-out/policy_view.png b/static/img/releases/2023-04-11-mondoo-8.5-is-out/policy_view.png new file mode 100644 index 000000000..af7be88b3 Binary files /dev/null and b/static/img/releases/2023-04-11-mondoo-8.5-is-out/policy_view.png differ diff --git a/static/img/releases/2023-04-11-mondoo-8.5-is-out/properties.png b/static/img/releases/2023-04-11-mondoo-8.5-is-out/properties.png new file mode 100644 index 000000000..8c6ffecd1 Binary files /dev/null and b/static/img/releases/2023-04-11-mondoo-8.5-is-out/properties.png differ diff --git a/static/img/releases/2023-04-11-mondoo-8.5-is-out/s3.png b/static/img/releases/2023-04-11-mondoo-8.5-is-out/s3.png new file mode 100644 index 000000000..dd073c73b Binary files /dev/null and b/static/img/releases/2023-04-11-mondoo-8.5-is-out/s3.png differ diff --git a/static/img/releases/2023-04-11-mondoo-8.5-is-out/security_dashboard.png b/static/img/releases/2023-04-11-mondoo-8.5-is-out/security_dashboard.png new file mode 100644 index 000000000..db4e2aaf2 Binary files /dev/null and b/static/img/releases/2023-04-11-mondoo-8.5-is-out/security_dashboard.png differ diff --git a/static/img/releases/2023-04-11-mondoo-8.5-is-out/security_registry.png b/static/img/releases/2023-04-11-mondoo-8.5-is-out/security_registry.png new file mode 100644 index 000000000..98fb2b390 Binary files /dev/null and b/static/img/releases/2023-04-11-mondoo-8.5-is-out/security_registry.png differ diff --git a/static/img/releases/2023-04-11-mondoo-8.5-is-out/vuln_dashboard.png b/static/img/releases/2023-04-11-mondoo-8.5-is-out/vuln_dashboard.png new file mode 100644 index 000000000..bb062205e Binary files /dev/null and b/static/img/releases/2023-04-11-mondoo-8.5-is-out/vuln_dashboard.png differ diff --git a/static/img/releases/2023-04-18-mondoo-8.6-is-out/org_dashboard.png b/static/img/releases/2023-04-18-mondoo-8.6-is-out/org_dashboard.png new file mode 100644 index 000000000..e701daca7 Binary files /dev/null and b/static/img/releases/2023-04-18-mondoo-8.6-is-out/org_dashboard.png differ diff --git a/static/img/releases/2023-04-18-mondoo-8.6-is-out/overview_vulnerabilities_modal.png b/static/img/releases/2023-04-18-mondoo-8.6-is-out/overview_vulnerabilities_modal.png new file mode 100644 index 000000000..7b6876e23 Binary files /dev/null and b/static/img/releases/2023-04-18-mondoo-8.6-is-out/overview_vulnerabilities_modal.png differ diff --git a/static/img/releases/2023-04-18-mondoo-8.6-is-out/policy_with_preview.png b/static/img/releases/2023-04-18-mondoo-8.6-is-out/policy_with_preview.png new file mode 100644 index 000000000..91838761a Binary files /dev/null and b/static/img/releases/2023-04-18-mondoo-8.6-is-out/policy_with_preview.png differ diff --git a/static/img/releases/2023-04-18-mondoo-8.6-is-out/previewed_policy.png b/static/img/releases/2023-04-18-mondoo-8.6-is-out/previewed_policy.png new file mode 100644 index 000000000..8ed3cda62 Binary files /dev/null and b/static/img/releases/2023-04-18-mondoo-8.6-is-out/previewed_policy.png differ diff --git a/static/img/releases/2023-04-18-mondoo-8.6-is-out/properties_edit.png b/static/img/releases/2023-04-18-mondoo-8.6-is-out/properties_edit.png new file mode 100644 index 000000000..a4e0b8076 Binary files /dev/null and b/static/img/releases/2023-04-18-mondoo-8.6-is-out/properties_edit.png differ diff --git a/static/img/releases/2023-04-18-mondoo-8.6-is-out/registry_with_preview.png b/static/img/releases/2023-04-18-mondoo-8.6-is-out/registry_with_preview.png new file mode 100644 index 000000000..04dcc707a Binary files /dev/null and b/static/img/releases/2023-04-18-mondoo-8.6-is-out/registry_with_preview.png differ diff --git a/static/img/releases/2023-04-25-mondoo-8.7-is-out/filtering.png b/static/img/releases/2023-04-25-mondoo-8.7-is-out/filtering.png new file mode 100644 index 000000000..e8d6e9112 Binary files /dev/null and b/static/img/releases/2023-04-25-mondoo-8.7-is-out/filtering.png differ diff --git a/static/img/releases/2023-04-25-mondoo-8.7-is-out/report.png b/static/img/releases/2023-04-25-mondoo-8.7-is-out/report.png new file mode 100644 index 000000000..32898deb7 Binary files /dev/null and b/static/img/releases/2023-04-25-mondoo-8.7-is-out/report.png differ diff --git a/static/img/releases/2023-04-25-mondoo-8.7-is-out/scan_summary.png b/static/img/releases/2023-04-25-mondoo-8.7-is-out/scan_summary.png new file mode 100644 index 000000000..0affddb7a Binary files /dev/null and b/static/img/releases/2023-04-25-mondoo-8.7-is-out/scan_summary.png differ diff --git a/static/img/releases/2023-05-02-mondoo-8.8-is-out/azure.png b/static/img/releases/2023-05-02-mondoo-8.8-is-out/azure.png new file mode 100644 index 000000000..615c424f4 Binary files /dev/null and b/static/img/releases/2023-05-02-mondoo-8.8-is-out/azure.png differ diff --git a/static/img/releases/2023-05-02-mondoo-8.8-is-out/gcos.png b/static/img/releases/2023-05-02-mondoo-8.8-is-out/gcos.png new file mode 100644 index 000000000..a3fb4f61e Binary files /dev/null and b/static/img/releases/2023-05-02-mondoo-8.8-is-out/gcos.png differ diff --git a/static/img/releases/2023-05-09-mondoo-8.9-is-out/query_page.png b/static/img/releases/2023-05-09-mondoo-8.9-is-out/query_page.png new file mode 100644 index 000000000..1b92ca1c1 Binary files /dev/null and b/static/img/releases/2023-05-09-mondoo-8.9-is-out/query_page.png differ diff --git a/static/img/releases/2023-05-16-mondoo-8.10-is-out/delete_all_assets.png b/static/img/releases/2023-05-16-mondoo-8.10-is-out/delete_all_assets.png new file mode 100644 index 000000000..01bf7f5cb Binary files /dev/null and b/static/img/releases/2023-05-16-mondoo-8.10-is-out/delete_all_assets.png differ diff --git a/static/img/releases/2023-05-16-mondoo-8.10-is-out/impacted_assets.png b/static/img/releases/2023-05-16-mondoo-8.10-is-out/impacted_assets.png new file mode 100644 index 000000000..664b5c3d6 Binary files /dev/null and b/static/img/releases/2023-05-16-mondoo-8.10-is-out/impacted_assets.png differ diff --git a/static/img/releases/2023-05-16-mondoo-8.10-is-out/pause_integrations.png b/static/img/releases/2023-05-16-mondoo-8.10-is-out/pause_integrations.png new file mode 100644 index 000000000..4396e297d Binary files /dev/null and b/static/img/releases/2023-05-16-mondoo-8.10-is-out/pause_integrations.png differ diff --git a/static/img/releases/2023-05-16-mondoo-8.10-is-out/saas_integrations.png b/static/img/releases/2023-05-16-mondoo-8.10-is-out/saas_integrations.png new file mode 100644 index 000000000..3e2e7fd71 Binary files /dev/null and b/static/img/releases/2023-05-16-mondoo-8.10-is-out/saas_integrations.png differ diff --git a/static/img/releases/2023-05-16-mondoo-8.10-is-out/space_settings.png b/static/img/releases/2023-05-16-mondoo-8.10-is-out/space_settings.png new file mode 100644 index 000000000..ca9909325 Binary files /dev/null and b/static/img/releases/2023-05-16-mondoo-8.10-is-out/space_settings.png differ diff --git a/static/img/releases/2023-05-23-mondoo-8.11-is-out/asset_cleanup.png b/static/img/releases/2023-05-23-mondoo-8.11-is-out/asset_cleanup.png new file mode 100644 index 000000000..d2434b526 Binary files /dev/null and b/static/img/releases/2023-05-23-mondoo-8.11-is-out/asset_cleanup.png differ diff --git a/static/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions.png b/static/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions.png new file mode 100644 index 000000000..4d5566f03 Binary files /dev/null and b/static/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions.png differ diff --git a/static/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions2.png b/static/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions2.png new file mode 100644 index 000000000..3ddf45f10 Binary files /dev/null and b/static/img/releases/2023-05-23-mondoo-8.11-is-out/risk_actions2.png differ diff --git a/static/img/releases/2023-05-30-mondoo-8.12-is-out/status.png b/static/img/releases/2023-05-30-mondoo-8.12-is-out/status.png new file mode 100644 index 000000000..8c7947392 Binary files /dev/null and b/static/img/releases/2023-05-30-mondoo-8.12-is-out/status.png differ diff --git a/static/img/releases/2023-06-06-mondoo-8.13-is-out/gcs_export.png b/static/img/releases/2023-06-06-mondoo-8.13-is-out/gcs_export.png new file mode 100644 index 000000000..00d75504a Binary files /dev/null and b/static/img/releases/2023-06-06-mondoo-8.13-is-out/gcs_export.png differ diff --git a/static/img/releases/2023-06-06-mondoo-8.13-is-out/postgresql_export.png b/static/img/releases/2023-06-06-mondoo-8.13-is-out/postgresql_export.png new file mode 100644 index 000000000..4cad6317a Binary files /dev/null and b/static/img/releases/2023-06-06-mondoo-8.13-is-out/postgresql_export.png differ diff --git a/static/img/releases/2023-06-27-mondoo-8.16-is-out/default_integration_name.png b/static/img/releases/2023-06-27-mondoo-8.16-is-out/default_integration_name.png new file mode 100644 index 000000000..66032d94d Binary files /dev/null and b/static/img/releases/2023-06-27-mondoo-8.16-is-out/default_integration_name.png differ diff --git a/static/img/releases/2023-07-04-mondoo-8.17-is-out/azure_vms.png b/static/img/releases/2023-07-04-mondoo-8.17-is-out/azure_vms.png new file mode 100644 index 000000000..695f47659 Binary files /dev/null and b/static/img/releases/2023-07-04-mondoo-8.17-is-out/azure_vms.png differ diff --git a/static/img/releases/2023-07-04-mondoo-8.17-is-out/create_jira_ticket.png b/static/img/releases/2023-07-04-mondoo-8.17-is-out/create_jira_ticket.png new file mode 100644 index 000000000..c1fd0208e Binary files /dev/null and b/static/img/releases/2023-07-04-mondoo-8.17-is-out/create_jira_ticket.png differ diff --git a/static/img/releases/2023-07-04-mondoo-8.17-is-out/jira_project.png b/static/img/releases/2023-07-04-mondoo-8.17-is-out/jira_project.png new file mode 100644 index 000000000..718f8491c Binary files /dev/null and b/static/img/releases/2023-07-04-mondoo-8.17-is-out/jira_project.png differ diff --git a/static/img/releases/2023-07-04-mondoo-8.17-is-out/scan_vms.png b/static/img/releases/2023-07-04-mondoo-8.17-is-out/scan_vms.png new file mode 100644 index 000000000..7340685df Binary files /dev/null and b/static/img/releases/2023-07-04-mondoo-8.17-is-out/scan_vms.png differ diff --git a/static/img/releases/2023-07-11-mondoo-8.18-is-out/api_tokens.png b/static/img/releases/2023-07-11-mondoo-8.18-is-out/api_tokens.png new file mode 100644 index 000000000..38b24be6b Binary files /dev/null and b/static/img/releases/2023-07-11-mondoo-8.18-is-out/api_tokens.png differ diff --git a/static/img/releases/2023-07-18-mondoo-8.19-is-out/github_benchmark.png b/static/img/releases/2023-07-18-mondoo-8.19-is-out/github_benchmark.png new file mode 100644 index 000000000..e97d11f06 Binary files /dev/null and b/static/img/releases/2023-07-18-mondoo-8.19-is-out/github_benchmark.png differ diff --git a/static/img/releases/2023-07-18-mondoo-8.19-is-out/oci_list.png b/static/img/releases/2023-07-18-mondoo-8.19-is-out/oci_list.png new file mode 100644 index 000000000..16a99c65f Binary files /dev/null and b/static/img/releases/2023-07-18-mondoo-8.19-is-out/oci_list.png differ diff --git a/static/img/releases/2023-07-18-mondoo-8.19-is-out/service_account.png b/static/img/releases/2023-07-18-mondoo-8.19-is-out/service_account.png new file mode 100644 index 000000000..be0981082 Binary files /dev/null and b/static/img/releases/2023-07-18-mondoo-8.19-is-out/service_account.png differ diff --git a/static/img/releases/2023-07-25-mondoo-8.20-is-out/azure.png b/static/img/releases/2023-07-25-mondoo-8.20-is-out/azure.png new file mode 100644 index 000000000..08c51ed9c Binary files /dev/null and b/static/img/releases/2023-07-25-mondoo-8.20-is-out/azure.png differ diff --git a/static/img/releases/2023-08-07-mondoo-8.22-is-out/cloud_asset.png b/static/img/releases/2023-08-07-mondoo-8.22-is-out/cloud_asset.png new file mode 100644 index 000000000..10bb8930e Binary files /dev/null and b/static/img/releases/2023-08-07-mondoo-8.22-is-out/cloud_asset.png differ diff --git a/static/img/releases/2023-08-07-mondoo-8.22-is-out/integration.png b/static/img/releases/2023-08-07-mondoo-8.22-is-out/integration.png new file mode 100644 index 000000000..166a0b675 Binary files /dev/null and b/static/img/releases/2023-08-07-mondoo-8.22-is-out/integration.png differ diff --git a/static/img/releases/2023-08-07-mondoo-8.22-is-out/laptop_asset.png b/static/img/releases/2023-08-07-mondoo-8.22-is-out/laptop_asset.png new file mode 100644 index 000000000..f354858f7 Binary files /dev/null and b/static/img/releases/2023-08-07-mondoo-8.22-is-out/laptop_asset.png differ diff --git a/static/img/releases/2023-08-22-mondoo-8.24-is-out/gcp-project-configuration.png b/static/img/releases/2023-08-22-mondoo-8.24-is-out/gcp-project-configuration.png new file mode 100644 index 000000000..5562b3fcf Binary files /dev/null and b/static/img/releases/2023-08-22-mondoo-8.24-is-out/gcp-project-configuration.png differ diff --git a/static/img/releases/2023-08-22-mondoo-8.24-is-out/nist800-171.png b/static/img/releases/2023-08-22-mondoo-8.24-is-out/nist800-171.png new file mode 100644 index 000000000..4aa0c31f6 Binary files /dev/null and b/static/img/releases/2023-08-22-mondoo-8.24-is-out/nist800-171.png differ diff --git a/static/img/releases/2023-09-06-mondoo-8.26-is-out/asset_groups.png b/static/img/releases/2023-09-06-mondoo-8.26-is-out/asset_groups.png new file mode 100644 index 000000000..76771dc2d Binary files /dev/null and b/static/img/releases/2023-09-06-mondoo-8.26-is-out/asset_groups.png differ diff --git a/static/img/releases/2023-09-06-mondoo-8.26-is-out/compliance.png b/static/img/releases/2023-09-06-mondoo-8.26-is-out/compliance.png new file mode 100644 index 000000000..7545986b4 Binary files /dev/null and b/static/img/releases/2023-09-06-mondoo-8.26-is-out/compliance.png differ diff --git a/static/img/releases/2023-09-06-mondoo-8.26-is-out/oci.png b/static/img/releases/2023-09-06-mondoo-8.26-is-out/oci.png new file mode 100644 index 000000000..d4302d42c Binary files /dev/null and b/static/img/releases/2023-09-06-mondoo-8.26-is-out/oci.png differ diff --git a/static/img/releases/2023-09-12-mondoo-8.27-is-out/advanced_search.png b/static/img/releases/2023-09-12-mondoo-8.27-is-out/advanced_search.png new file mode 100644 index 000000000..729d58cf6 Binary files /dev/null and b/static/img/releases/2023-09-12-mondoo-8.27-is-out/advanced_search.png differ diff --git a/static/img/releases/2023-09-12-mondoo-8.27-is-out/org_vs_space.png b/static/img/releases/2023-09-12-mondoo-8.27-is-out/org_vs_space.png new file mode 100644 index 000000000..99c16d516 Binary files /dev/null and b/static/img/releases/2023-09-12-mondoo-8.27-is-out/org_vs_space.png differ diff --git a/static/img/releases/2023-09-12-mondoo-8.27-is-out/search.png b/static/img/releases/2023-09-12-mondoo-8.27-is-out/search.png new file mode 100644 index 000000000..7a3cf0b59 Binary files /dev/null and b/static/img/releases/2023-09-12-mondoo-8.27-is-out/search.png differ diff --git a/static/img/releases/2023-09-26-mondoo-8.29-is-out/controls.png b/static/img/releases/2023-09-26-mondoo-8.29-is-out/controls.png new file mode 100644 index 000000000..91a2c5312 Binary files /dev/null and b/static/img/releases/2023-09-26-mondoo-8.29-is-out/controls.png differ diff --git a/static/img/releases/2023-09-26-mondoo-8.29-is-out/nav.png b/static/img/releases/2023-09-26-mondoo-8.29-is-out/nav.png new file mode 100644 index 000000000..589908f5f Binary files /dev/null and b/static/img/releases/2023-09-26-mondoo-8.29-is-out/nav.png differ diff --git a/static/img/releases/2023-09-26-mondoo-8.29-is-out/table.png b/static/img/releases/2023-09-26-mondoo-8.29-is-out/table.png new file mode 100644 index 000000000..4f453496d Binary files /dev/null and b/static/img/releases/2023-09-26-mondoo-8.29-is-out/table.png differ diff --git a/static/img/releases/2023-10-05-mondoo-9.0-is-out/annotations.png b/static/img/releases/2023-10-05-mondoo-9.0-is-out/annotations.png new file mode 100644 index 000000000..668b35019 Binary files /dev/null and b/static/img/releases/2023-10-05-mondoo-9.0-is-out/annotations.png differ diff --git a/static/img/releases/2023-10-05-mondoo-9.0-is-out/gitlab.png b/static/img/releases/2023-10-05-mondoo-9.0-is-out/gitlab.png new file mode 100644 index 000000000..cccb43447 Binary files /dev/null and b/static/img/releases/2023-10-05-mondoo-9.0-is-out/gitlab.png differ diff --git a/static/img/releases/2023-10-12-mondoo-9.1-is-out/pagination.png b/static/img/releases/2023-10-12-mondoo-9.1-is-out/pagination.png new file mode 100644 index 000000000..9500f0e0f Binary files /dev/null and b/static/img/releases/2023-10-12-mondoo-9.1-is-out/pagination.png differ diff --git a/static/img/releases/2023-11-01-mondoo-9.5-is-out/copy.gif b/static/img/releases/2023-11-01-mondoo-9.5-is-out/copy.gif new file mode 100644 index 000000000..280132310 Binary files /dev/null and b/static/img/releases/2023-11-01-mondoo-9.5-is-out/copy.gif differ diff --git a/static/img/releases/2023-11-07-mondoo-9.6.0-is-out/asset_data_queries.png b/static/img/releases/2023-11-07-mondoo-9.6.0-is-out/asset_data_queries.png new file mode 100644 index 000000000..6b42c01ba Binary files /dev/null and b/static/img/releases/2023-11-07-mondoo-9.6.0-is-out/asset_data_queries.png differ diff --git a/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/active_exception_state.png b/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/active_exception_state.png new file mode 100644 index 000000000..5bfe0e7a1 Binary files /dev/null and b/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/active_exception_state.png differ diff --git a/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/atlassian.png b/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/atlassian.png new file mode 100644 index 000000000..98c617bd1 Binary files /dev/null and b/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/atlassian.png differ diff --git a/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/set_exception.png b/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/set_exception.png new file mode 100644 index 000000000..cc7920dad Binary files /dev/null and b/static/img/releases/2023-11-14-mondoo-9.7.0-is-out/set_exception.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/aix_asset.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/aix_asset.png new file mode 100644 index 000000000..9d8f86a8c Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/aix_asset.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/cve.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/cve.png new file mode 100644 index 000000000..eee99f518 Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/cve.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/data_query.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/data_query.png new file mode 100644 index 000000000..9e6f2bbf4 Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/data_query.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/policies.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/policies.png new file mode 100644 index 000000000..4a7153347 Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/policies.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/policy_changes.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/policy_changes.png new file mode 100644 index 000000000..f4f62483d Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/policy_changes.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/score_cards.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/score_cards.png new file mode 100644 index 000000000..1b0ac6174 Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/score_cards.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_example.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_example.png new file mode 100644 index 000000000..08fc26845 Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_example.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_overview.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_overview.png new file mode 100644 index 000000000..4ae1ad5f3 Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/scoring_overview.png differ diff --git a/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/soc2_control.png b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/soc2_control.png new file mode 100644 index 000000000..fba959476 Binary files /dev/null and b/static/img/releases/2023-11-21-mondoo-9.8.0-is-out/soc2_control.png differ diff --git a/static/img/releases/2023-12-05-mondoo-9.10-is-out/generate.png b/static/img/releases/2023-12-05-mondoo-9.10-is-out/generate.png new file mode 100644 index 000000000..a6f7780ba Binary files /dev/null and b/static/img/releases/2023-12-05-mondoo-9.10-is-out/generate.png differ diff --git a/static/img/releases/2023-12-05-mondoo-9.10-is-out/granularity.png b/static/img/releases/2023-12-05-mondoo-9.10-is-out/granularity.png new file mode 100644 index 000000000..24cdd43ad Binary files /dev/null and b/static/img/releases/2023-12-05-mondoo-9.10-is-out/granularity.png differ diff --git a/static/img/releases/2023-12-05-mondoo-9.10-is-out/store.png b/static/img/releases/2023-12-05-mondoo-9.10-is-out/store.png new file mode 100644 index 000000000..a0297a62b Binary files /dev/null and b/static/img/releases/2023-12-05-mondoo-9.10-is-out/store.png differ diff --git a/static/img/releases/2023-12-05-mondoo-9.10-is-out/view.png b/static/img/releases/2023-12-05-mondoo-9.10-is-out/view.png new file mode 100644 index 000000000..815a9e129 Binary files /dev/null and b/static/img/releases/2023-12-05-mondoo-9.10-is-out/view.png differ diff --git a/static/img/releases/2023-12-05-mondoo-9.10-is-out/visibility.png b/static/img/releases/2023-12-05-mondoo-9.10-is-out/visibility.png new file mode 100644 index 000000000..771be6a18 Binary files /dev/null and b/static/img/releases/2023-12-05-mondoo-9.10-is-out/visibility.png differ diff --git a/static/img/releases/2023-12-12-mondoo-9.11-is-out/domain_integration.png b/static/img/releases/2023-12-12-mondoo-9.11-is-out/domain_integration.png new file mode 100644 index 000000000..6fb536d5d Binary files /dev/null and b/static/img/releases/2023-12-12-mondoo-9.11-is-out/domain_integration.png differ diff --git a/static/img/releases/2023-12-12-mondoo-9.11-is-out/domain_scan.png b/static/img/releases/2023-12-12-mondoo-9.11-is-out/domain_scan.png new file mode 100644 index 000000000..331fa5922 Binary files /dev/null and b/static/img/releases/2023-12-12-mondoo-9.11-is-out/domain_scan.png differ diff --git a/static/img/releases/2023-12-19-mondoo-9.12-is-out/check_overview.png b/static/img/releases/2023-12-19-mondoo-9.12-is-out/check_overview.png new file mode 100644 index 000000000..2cdcf71bb Binary files /dev/null and b/static/img/releases/2023-12-19-mondoo-9.12-is-out/check_overview.png differ diff --git a/static/img/releases/2023-12-19-mondoo-9.12-is-out/email.png b/static/img/releases/2023-12-19-mondoo-9.12-is-out/email.png new file mode 100644 index 000000000..056a874f5 Binary files /dev/null and b/static/img/releases/2023-12-19-mondoo-9.12-is-out/email.png differ diff --git a/static/img/releases/2023-12-19-mondoo-9.12-is-out/exceptions.png b/static/img/releases/2023-12-19-mondoo-9.12-is-out/exceptions.png new file mode 100644 index 000000000..89fb0540b Binary files /dev/null and b/static/img/releases/2023-12-19-mondoo-9.12-is-out/exceptions.png differ diff --git a/static/img/releases/2024-01-03-mondoo-9.13-is-out/advisory.png b/static/img/releases/2024-01-03-mondoo-9.13-is-out/advisory.png new file mode 100644 index 000000000..fa26bdbb2 Binary files /dev/null and b/static/img/releases/2024-01-03-mondoo-9.13-is-out/advisory.png differ diff --git a/static/img/releases/2024-01-03-mondoo-9.13-is-out/exceptions.png b/static/img/releases/2024-01-03-mondoo-9.13-is-out/exceptions.png new file mode 100644 index 000000000..06bcf2d63 Binary files /dev/null and b/static/img/releases/2024-01-03-mondoo-9.13-is-out/exceptions.png differ diff --git a/static/img/releases/2024-01-03-mondoo-9.13-is-out/scoping.png b/static/img/releases/2024-01-03-mondoo-9.13-is-out/scoping.png new file mode 100644 index 000000000..4fba1daa6 Binary files /dev/null and b/static/img/releases/2024-01-03-mondoo-9.13-is-out/scoping.png differ diff --git a/static/img/releases/2024-01-09-mondoo-9.14-is-out/email_checks.png b/static/img/releases/2024-01-09-mondoo-9.14-is-out/email_checks.png new file mode 100644 index 000000000..d3b2c9bf2 Binary files /dev/null and b/static/img/releases/2024-01-09-mondoo-9.14-is-out/email_checks.png differ diff --git a/static/img/releases/2024-01-09-mondoo-9.14-is-out/tf_state.png b/static/img/releases/2024-01-09-mondoo-9.14-is-out/tf_state.png new file mode 100644 index 000000000..c61f5c022 Binary files /dev/null and b/static/img/releases/2024-01-09-mondoo-9.14-is-out/tf_state.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/advisory_architecture.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/advisory_architecture.png new file mode 100644 index 000000000..e5999efbf Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/advisory_architecture.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/cves_page.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/cves_page.png new file mode 100644 index 000000000..5a7804af5 Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/cves_page.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/enable_lightmode.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/enable_lightmode.png new file mode 100644 index 000000000..616af5a94 Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/enable_lightmode.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/epss.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/epss.png new file mode 100644 index 000000000..cebc7883a Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/epss.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/exploitable.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/exploitable.png new file mode 100644 index 000000000..4d3fbb5d0 Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/exploitable.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/lightmode.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/lightmode.png new file mode 100644 index 000000000..dce35d04a Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/lightmode.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/mac_overview.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/mac_overview.png new file mode 100644 index 000000000..67d2e9910 Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/mac_overview.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/policies.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/policies.png new file mode 100644 index 000000000..6ca3f813a Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/policies.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/policy_overview.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/policy_overview.png new file mode 100644 index 000000000..feb074cfd Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/policy_overview.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/powershell_remediation.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/powershell_remediation.png new file mode 100644 index 000000000..e99a0adb9 Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/powershell_remediation.png differ diff --git a/static/img/releases/2024-01-23-mondoo-10.0-is-out/spaces_search.png b/static/img/releases/2024-01-23-mondoo-10.0-is-out/spaces_search.png new file mode 100644 index 000000000..6ba54665b Binary files /dev/null and b/static/img/releases/2024-01-23-mondoo-10.0-is-out/spaces_search.png differ diff --git a/static/img/releases/2024-01-30-mondoo-10.1-is-out/advisories.png b/static/img/releases/2024-01-30-mondoo-10.1-is-out/advisories.png new file mode 100644 index 000000000..96f677a47 Binary files /dev/null and b/static/img/releases/2024-01-30-mondoo-10.1-is-out/advisories.png differ diff --git a/static/img/releases/2024-01-30-mondoo-10.1-is-out/asset_overview.png b/static/img/releases/2024-01-30-mondoo-10.1-is-out/asset_overview.png new file mode 100644 index 000000000..9ba4c5844 Binary files /dev/null and b/static/img/releases/2024-01-30-mondoo-10.1-is-out/asset_overview.png differ diff --git a/static/img/releases/2024-01-30-mondoo-10.1-is-out/software_vulns.png b/static/img/releases/2024-01-30-mondoo-10.1-is-out/software_vulns.png new file mode 100644 index 000000000..9e9f3d361 Binary files /dev/null and b/static/img/releases/2024-01-30-mondoo-10.1-is-out/software_vulns.png differ diff --git a/static/img/releases/2024-02-06-mondoo-10.2-is-out/cve_with_metasploit.png b/static/img/releases/2024-02-06-mondoo-10.2-is-out/cve_with_metasploit.png new file mode 100644 index 000000000..f5d7e1c33 Binary files /dev/null and b/static/img/releases/2024-02-06-mondoo-10.2-is-out/cve_with_metasploit.png differ diff --git a/static/img/releases/2024-02-06-mondoo-10.2-is-out/space_overview.png b/static/img/releases/2024-02-06-mondoo-10.2-is-out/space_overview.png new file mode 100644 index 000000000..ca1fc5f72 Binary files /dev/null and b/static/img/releases/2024-02-06-mondoo-10.2-is-out/space_overview.png differ diff --git a/static/img/releases/2024-02-13-mondoo-10.3-is-out/ms_edge.png b/static/img/releases/2024-02-13-mondoo-10.3-is-out/ms_edge.png new file mode 100644 index 000000000..bfe0f0fef Binary files /dev/null and b/static/img/releases/2024-02-13-mondoo-10.3-is-out/ms_edge.png differ diff --git a/static/img/releases/2024-02-20-mondoo-10.4-is-out/vmware.png b/static/img/releases/2024-02-20-mondoo-10.4-is-out/vmware.png new file mode 100644 index 000000000..def3bfc61 Binary files /dev/null and b/static/img/releases/2024-02-20-mondoo-10.4-is-out/vmware.png differ diff --git a/static/img/releases/2024-02-27-mondoo-10.5-is-out/filter.png b/static/img/releases/2024-02-27-mondoo-10.5-is-out/filter.png new file mode 100644 index 000000000..373528686 Binary files /dev/null and b/static/img/releases/2024-02-27-mondoo-10.5-is-out/filter.png differ diff --git a/static/videos/aws-ec2-scan.gif b/static/videos/aws-ec2-scan.gif new file mode 100644 index 000000000..ab2da5e66 Binary files /dev/null and b/static/videos/aws-ec2-scan.gif differ diff --git a/static/videos/azure-acr-scan.gif b/static/videos/azure-acr-scan.gif new file mode 100644 index 000000000..4ee8a0cd0 Binary files /dev/null and b/static/videos/azure-acr-scan.gif differ diff --git a/static/videos/azure-compute-scan.gif b/static/videos/azure-compute-scan.gif new file mode 100644 index 000000000..0252a02b6 Binary files /dev/null and b/static/videos/azure-compute-scan.gif differ diff --git a/static/videos/docker-hub-scan.gif b/static/videos/docker-hub-scan.gif new file mode 100644 index 000000000..c8829c7b6 Binary files /dev/null and b/static/videos/docker-hub-scan.gif differ diff --git a/static/videos/gcp-compute-scan.gif b/static/videos/gcp-compute-scan.gif new file mode 100644 index 000000000..4ef7431b6 Binary files /dev/null and b/static/videos/gcp-compute-scan.gif differ diff --git a/static/videos/gcp-gcr-scan.gif b/static/videos/gcp-gcr-scan.gif new file mode 100644 index 000000000..be0224ff0 Binary files /dev/null and b/static/videos/gcp-gcr-scan.gif differ diff --git a/static/videos/harbor-scan.gif b/static/videos/harbor-scan.gif new file mode 100644 index 000000000..017ff1bb0 Binary files /dev/null and b/static/videos/harbor-scan.gif differ diff --git a/static/videos/k8s-scan.gif b/static/videos/k8s-scan.gif new file mode 100644 index 000000000..c653dd66b Binary files /dev/null and b/static/videos/k8s-scan.gif differ diff --git a/static/videos/mondoo-download.gif b/static/videos/mondoo-download.gif new file mode 100644 index 000000000..0a1381e9e Binary files /dev/null and b/static/videos/mondoo-download.gif differ diff --git a/static/videos/mondoo-ec2-cloudinit-cli.gif b/static/videos/mondoo-ec2-cloudinit-cli.gif new file mode 100644 index 000000000..8b7ebdce5 Binary files /dev/null and b/static/videos/mondoo-ec2-cloudinit-cli.gif differ diff --git a/static/videos/mondoo-install.gif b/static/videos/mondoo-install.gif new file mode 100644 index 000000000..90437e9b2 Binary files /dev/null and b/static/videos/mondoo-install.gif differ diff --git a/static/videos/mondoo-setup-macos.gif b/static/videos/mondoo-setup-macos.gif new file mode 100644 index 000000000..e41b918ee Binary files /dev/null and b/static/videos/mondoo-setup-macos.gif differ diff --git a/tapes/README.md b/tapes/README.md new file mode 100644 index 000000000..18233f3ac --- /dev/null +++ b/tapes/README.md @@ -0,0 +1,45 @@ +# VHS Tapes for .gif generation + +This directory contains VHS `.tape` files used to generate .gif files in the docs site programmatically. These files are used by the [VHS project](https://github.com/charmbracelet/vhs), which allows you to define steps for automatically generating .gif files. + +## Wait. What? + +.gif files are a massive pain to create by hand. You need to install tools on your workstation, record just the right window, carefully type the correct commands, and then process the whole thing into a .gif file. Updating dozens of gifs can be an all-day task no one wants to do. We can define a script for each .gif file with VHS and update them all in minutes. + +## First ask yourself: Is an animated .gif really the best approach? + +.gif files of CLIs, especially .gifs that scroll, don't do very well in documentation usability studies. Why do you want an animated .gif instead of static results? Do you just think it's cool? Or is there something that only the animation can show that is important to understanding our product? Usually statically presented commands and results are the better choice. + +## Using these files + +Install VHS: + +```bash +brew install vhs +``` + +Generate a .gif file with a VHS tape: + +```bash +vhs < k8s_scan.tape +``` + +## Example .tape file + +This file runs kubectl and then runs mondoo to scan a Kubernetes cluster: + +```text +Output k8s-scan.gif +Set Shell bash +Set FontSize 16 +Set Width 1000 +Set Height 500 +Type "kubectl get pods -n luna" +Sleep 500ms +Enter +Sleep 2s +Type "cnspec scan k8s --namespace luna" +Sleep 500ms +Enter +Sleep 18 +``` diff --git a/tapes/k8s_scan.tape b/tapes/k8s_scan.tape new file mode 100644 index 000000000..7285e3b18 --- /dev/null +++ b/tapes/k8s_scan.tape @@ -0,0 +1,18 @@ +Output ../static/videos/k8s-scan.gif +Set Shell bash +Set FontSize 16 +Set Width 1000 +Set Height 500 +Hide +Type "clear" +Enter +Sleep 1s +Show +Type "kubectl get pods -n luna" +Sleep 500ms +Enter +Sleep 2s +Type "cnspec scan k8s --namespace luna" +Sleep 500ms +Enter +Sleep 25 diff --git a/tapes/mondoo-agent-install-mac.tape b/tapes/mondoo-agent-install-mac.tape new file mode 100644 index 000000000..c702b015a --- /dev/null +++ b/tapes/mondoo-agent-install-mac.tape @@ -0,0 +1,14 @@ +Output ../static/img/platform/installation/mondoo-agent-install-mac.gif +Set Shell bash +Set FontSize 16 +Set Width 1000 +Set Height 500 +Hide +Type "brew uninstall mondoo; clear" +Enter +Sleep 6s +Show +Type 'bash -c "$(curl -sSL https://install.mondoo.com/sh/mondoo)"' +Sleep 1.5s +Enter +Sleep 18s diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..f94d064a4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "jsx": "react" + }, + "extends": "@tsconfig/docusaurus/tsconfig.json", + "include": ["src/"] +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..0def80413 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8670 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" + integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-plugin-algolia-insights@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" + integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-preset-algolia@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" + integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-shared@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" + integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== + +"@algolia/cache-browser-local-storage@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz#14b6dc9abc9e3a304a5fffb063d15f30af1032d1" + integrity sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/cache-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.22.1.tgz#c625dff4bc2a74e79f9aed67b4e053b0ef1b3ec1" + integrity sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA== + +"@algolia/cache-in-memory@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz#858a3d887f521362e87d04f3943e2810226a0d71" + integrity sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/client-account@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.22.1.tgz#a7fb8b66b9a4f0a428e1426b2561144267d76d43" + integrity sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-analytics@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.22.1.tgz#506558740b4d49b1b1e3393861f729a8ce921851" + integrity sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.22.1.tgz#042b19c1b6157c485fa1b551349ab313944d2b05" + integrity sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ== + dependencies: + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-personalization@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.22.1.tgz#ff088d797648224fb582e9fe5828f8087835fa3d" + integrity sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-search@4.22.1", "@algolia/client-search@^4.22.0": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.22.1.tgz#508cc6ab3d1f4e9c02735a630d4dff6fbb8514a2" + integrity sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/events@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== + +"@algolia/logger-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.22.1.tgz#79cf4cd295de0377a94582c6aaac59b1ded731d9" + integrity sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg== + +"@algolia/logger-console@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.22.1.tgz#0355345f6940f67aaa78ae9b81c06e44e49f2336" + integrity sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA== + dependencies: + "@algolia/logger-common" "4.22.1" + +"@algolia/requester-browser-xhr@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz#f04df6fe9690a071b267c77d26b83a3be9280361" + integrity sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/requester-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.22.1.tgz#27be35f3718aafcb6b388ff9c3aa2defabd559ff" + integrity sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg== + +"@algolia/requester-node-http@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz#589a6fa828ad0f325e727a6fcaf4e1a2343cc62b" + integrity sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/transporter@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.22.1.tgz#8843841b857dc021668f31647aa557ff19cd9cb1" + integrity sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ== + dependencies: + "@algolia/cache-common" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.8.3": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + +"@babel/core@^7.19.6", "@babel/core@^7.21.3", "@babel/core@^7.23.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.3", "@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6": + version "7.23.10" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz#25d55fafbaea31fd0e723820bb6cc3df72edf7ea" + integrity sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" + integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.22.7", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" + integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" + integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" + integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" + integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.23.8": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" + integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.15" + +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" + integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" + integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" + integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" + integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" + integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" + integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" + integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" + +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + +"@babel/plugin-transform-optional-catch-binding@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" + integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-constant-elements@^7.18.12", "@babel/plugin-transform-react-constant-elements@^7.21.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz#5efc001d07ef0f7da0d73c3a86c132f73d28e43c" + integrity sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.22.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" + integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" + integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" + +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.19.4", "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" + integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.9" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.8" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.6" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.9" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.18.6", "@babel/preset-react@^7.22.5": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.23.3" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" + +"@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime-corejs3@^7.22.6": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.9.tgz#1b43062a13ecb60158aecdd81bc3fab4108b7cbc" + integrity sha512-oeOFTrYWdWXCvXGB5orvMTJ6gCZ9I6FBjR+M38iKNXCsPxr4xT0RTdg5uz1H7QP8pp74IzPtwritEr+JscqHXQ== + dependencies: + core-js-pure "^3.30.2" + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.8.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/traverse@^7.22.8", "@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.20.0", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.4.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@docsearch/css@3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.5.2.tgz#610f47b48814ca94041df969d9fcc47b91fc5aac" + integrity sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA== + +"@docsearch/react@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.5.2.tgz#2e6bbee00eb67333b64906352734da6aef1232b9" + integrity sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng== + dependencies: + "@algolia/autocomplete-core" "1.9.3" + "@algolia/autocomplete-preset-algolia" "1.9.3" + "@docsearch/css" "3.5.2" + algoliasearch "^4.19.1" + +"@docusaurus/core@3.1.1", "@docusaurus/core@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.1.tgz#29ce8df7a3d3d12ee8962d6d86133b87235ff17b" + integrity sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ== + dependencies: + "@babel/core" "^7.23.3" + "@babel/generator" "^7.23.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.22.9" + "@babel/preset-env" "^7.22.9" + "@babel/preset-react" "^7.22.5" + "@babel/preset-typescript" "^7.22.5" + "@babel/runtime" "^7.22.6" + "@babel/runtime-corejs3" "^7.22.6" + "@babel/traverse" "^7.22.8" + "@docusaurus/cssnano-preset" "3.1.1" + "@docusaurus/logger" "3.1.1" + "@docusaurus/mdx-loader" "3.1.1" + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-common" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + "@slorber/static-site-generator-webpack-plugin" "^4.0.7" + "@svgr/webpack" "^6.5.1" + autoprefixer "^10.4.14" + babel-loader "^9.1.3" + babel-plugin-dynamic-import-node "^2.3.3" + boxen "^6.2.1" + chalk "^4.1.2" + chokidar "^3.5.3" + clean-css "^5.3.2" + cli-table3 "^0.6.3" + combine-promises "^1.1.0" + commander "^5.1.0" + copy-webpack-plugin "^11.0.0" + core-js "^3.31.1" + css-loader "^6.8.1" + css-minimizer-webpack-plugin "^4.2.2" + cssnano "^5.1.15" + del "^6.1.1" + detect-port "^1.5.1" + escape-html "^1.0.3" + eta "^2.2.0" + file-loader "^6.2.0" + fs-extra "^11.1.1" + html-minifier-terser "^7.2.0" + html-tags "^3.3.1" + html-webpack-plugin "^5.5.3" + leven "^3.1.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.7.6" + postcss "^8.4.26" + postcss-loader "^7.3.3" + prompts "^2.4.2" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + react-loadable-ssr-addon-v5-slorber "^1.0.1" + react-router "^5.3.4" + react-router-config "^5.1.1" + react-router-dom "^5.3.4" + rtl-detect "^1.0.4" + semver "^7.5.4" + serve-handler "^6.1.5" + shelljs "^0.8.5" + terser-webpack-plugin "^5.3.9" + tslib "^2.6.0" + update-notifier "^6.0.2" + url-loader "^4.1.1" + webpack "^5.88.1" + webpack-bundle-analyzer "^4.9.0" + webpack-dev-server "^4.15.1" + webpack-merge "^5.9.0" + webpackbar "^5.0.2" + +"@docusaurus/cssnano-preset@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.1.tgz#03a4cb8e6d41654d7ff5ed79fddd73fd224feea4" + integrity sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g== + dependencies: + cssnano-preset-advanced "^5.3.10" + postcss "^8.4.26" + postcss-sort-media-queries "^4.4.1" + tslib "^2.6.0" + +"@docusaurus/logger@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.1.tgz#423e8270c00a57b1b3a0cc8a3ee0a4c522a68387" + integrity sha512-BjkNDpQzewcTnST8trx4idSoAla6zZ3w22NqM/UMcFtvYJgmoE4layuTzlfql3VFPNuivvj7BOExa/+21y4X2Q== + dependencies: + chalk "^4.1.2" + tslib "^2.6.0" + +"@docusaurus/mdx-loader@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.1.tgz#f79290abc5044bef1d7ecac4eccec887058b8e03" + integrity sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA== + dependencies: + "@babel/parser" "^7.22.7" + "@babel/traverse" "^7.22.8" + "@docusaurus/logger" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + "@mdx-js/mdx" "^3.0.0" + "@slorber/remark-comment" "^1.0.0" + escape-html "^1.0.3" + estree-util-value-to-estree "^3.0.1" + file-loader "^6.2.0" + fs-extra "^11.1.1" + image-size "^1.0.2" + mdast-util-mdx "^3.0.0" + mdast-util-to-string "^4.0.0" + rehype-raw "^7.0.0" + remark-directive "^3.0.0" + remark-emoji "^4.0.0" + remark-frontmatter "^5.0.0" + remark-gfm "^4.0.0" + stringify-object "^3.3.0" + tslib "^2.6.0" + unified "^11.0.3" + unist-util-visit "^5.0.0" + url-loader "^4.1.1" + vfile "^6.0.1" + webpack "^5.88.1" + +"@docusaurus/module-type-aliases@3.1.1", "@docusaurus/module-type-aliases@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.1.tgz#b304402b0535a13ebd4c0db1c368d2604d54d02f" + integrity sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A== + dependencies: + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/types" "3.1.1" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + +"@docusaurus/plugin-client-redirects@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.1.1.tgz#73feb15c2f3fe292d618f8a81e5194142f982ddb" + integrity sha512-J/1Z75XkO+BmUXHW17FrCIYZQ3b0IKaJECH6yCxW5RQ8NMMJ+SZCtPtx5oYoAd0VHersNiUu+ZAxfOqbsn1jKQ== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/logger" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-common" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + eta "^2.2.0" + fs-extra "^11.1.1" + lodash "^4.17.21" + tslib "^2.6.0" + +"@docusaurus/plugin-content-blog@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.1.tgz#16f4fd723227b2158461bba6b9bcc18c1926f7ea" + integrity sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/logger" "3.1.1" + "@docusaurus/mdx-loader" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-common" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + cheerio "^1.0.0-rc.12" + feed "^4.2.2" + fs-extra "^11.1.1" + lodash "^4.17.21" + reading-time "^1.5.0" + srcset "^4.0.0" + tslib "^2.6.0" + unist-util-visit "^5.0.0" + utility-types "^3.10.0" + webpack "^5.88.1" + +"@docusaurus/plugin-content-docs@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.1.tgz#f2eddebf351dd8dd504a2c26061165c519e1f964" + integrity sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/logger" "3.1.1" + "@docusaurus/mdx-loader" "3.1.1" + "@docusaurus/module-type-aliases" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + "@types/react-router-config" "^5.0.7" + combine-promises "^1.1.0" + fs-extra "^11.1.1" + js-yaml "^4.1.0" + lodash "^4.17.21" + tslib "^2.6.0" + utility-types "^3.10.0" + webpack "^5.88.1" + +"@docusaurus/plugin-content-pages@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.1.tgz#05aec68c2abeac2140c7a16d4c5b506bf4d19fb2" + integrity sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/mdx-loader" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + fs-extra "^11.1.1" + tslib "^2.6.0" + webpack "^5.88.1" + +"@docusaurus/plugin-debug@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.1.tgz#cee5aae1fef288fb93f68894db79a2612e313d3f" + integrity sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils" "3.1.1" + fs-extra "^11.1.1" + react-json-view-lite "^1.2.0" + tslib "^2.6.0" + +"@docusaurus/plugin-google-analytics@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.1.tgz#bfc58205b4fcaf3222e04f9c3542f3bef9804887" + integrity sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + tslib "^2.6.0" + +"@docusaurus/plugin-google-gtag@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.1.tgz#7e8b5aa6847a12461c104a65a335f4a45dae2f28" + integrity sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + "@types/gtag.js" "^0.0.12" + tslib "^2.6.0" + +"@docusaurus/plugin-google-tag-manager@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.1.tgz#e1aae4d821e786d133386b4ae6e6fe66a4bc0089" + integrity sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + tslib "^2.6.0" + +"@docusaurus/plugin-sitemap@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.1.tgz#8828bf5e2922273aad207a35189f22913e6a0dfd" + integrity sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/logger" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-common" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + fs-extra "^11.1.1" + sitemap "^7.1.1" + tslib "^2.6.0" + +"@docusaurus/preset-classic@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.1.tgz#15fd80012529dafd7e01cc0bce59d39ee6ad6bf5" + integrity sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/plugin-content-blog" "3.1.1" + "@docusaurus/plugin-content-docs" "3.1.1" + "@docusaurus/plugin-content-pages" "3.1.1" + "@docusaurus/plugin-debug" "3.1.1" + "@docusaurus/plugin-google-analytics" "3.1.1" + "@docusaurus/plugin-google-gtag" "3.1.1" + "@docusaurus/plugin-google-tag-manager" "3.1.1" + "@docusaurus/plugin-sitemap" "3.1.1" + "@docusaurus/theme-classic" "3.1.1" + "@docusaurus/theme-common" "3.1.1" + "@docusaurus/theme-search-algolia" "3.1.1" + "@docusaurus/types" "3.1.1" + +"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" + integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== + dependencies: + "@types/react" "*" + prop-types "^15.6.2" + +"@docusaurus/theme-classic@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.1.tgz#0a188c787fc4bf2bb525cc30c7aa34e555ee96b8" + integrity sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q== + dependencies: + "@docusaurus/core" "3.1.1" + "@docusaurus/mdx-loader" "3.1.1" + "@docusaurus/module-type-aliases" "3.1.1" + "@docusaurus/plugin-content-blog" "3.1.1" + "@docusaurus/plugin-content-docs" "3.1.1" + "@docusaurus/plugin-content-pages" "3.1.1" + "@docusaurus/theme-common" "3.1.1" + "@docusaurus/theme-translations" "3.1.1" + "@docusaurus/types" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-common" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + "@mdx-js/react" "^3.0.0" + clsx "^2.0.0" + copy-text-to-clipboard "^3.2.0" + infima "0.2.0-alpha.43" + lodash "^4.17.21" + nprogress "^0.2.0" + postcss "^8.4.26" + prism-react-renderer "^2.3.0" + prismjs "^1.29.0" + react-router-dom "^5.3.4" + rtlcss "^4.1.0" + tslib "^2.6.0" + utility-types "^3.10.0" + +"@docusaurus/theme-common@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.1.tgz#5a16893928b8379c9e83aef01d753e7e142459e2" + integrity sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg== + dependencies: + "@docusaurus/mdx-loader" "3.1.1" + "@docusaurus/module-type-aliases" "3.1.1" + "@docusaurus/plugin-content-blog" "3.1.1" + "@docusaurus/plugin-content-docs" "3.1.1" + "@docusaurus/plugin-content-pages" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-common" "3.1.1" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + clsx "^2.0.0" + parse-numeric-range "^1.3.0" + prism-react-renderer "^2.3.0" + tslib "^2.6.0" + utility-types "^3.10.0" + +"@docusaurus/theme-search-algolia@3.1.1", "@docusaurus/theme-search-algolia@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.1.tgz#5170cd68cc59d150416b070bdc6d15c363ddf5e1" + integrity sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g== + dependencies: + "@docsearch/react" "^3.5.2" + "@docusaurus/core" "3.1.1" + "@docusaurus/logger" "3.1.1" + "@docusaurus/plugin-content-docs" "3.1.1" + "@docusaurus/theme-common" "3.1.1" + "@docusaurus/theme-translations" "3.1.1" + "@docusaurus/utils" "3.1.1" + "@docusaurus/utils-validation" "3.1.1" + algoliasearch "^4.18.0" + algoliasearch-helper "^3.13.3" + clsx "^2.0.0" + eta "^2.2.0" + fs-extra "^11.1.1" + lodash "^4.17.21" + tslib "^2.6.0" + utility-types "^3.10.0" + +"@docusaurus/theme-translations@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.1.tgz#117e91ba5e3a8178cb59f3028bf41de165a508c1" + integrity sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg== + dependencies: + fs-extra "^11.1.1" + tslib "^2.6.0" + +"@docusaurus/types@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.1.tgz#747c9dee8cf7c3b0e5ee7351bac5e9c4fdc7f259" + integrity sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg== + dependencies: + "@mdx-js/mdx" "^3.0.0" + "@types/history" "^4.7.11" + "@types/react" "*" + commander "^5.1.0" + joi "^17.9.2" + react-helmet-async "^1.3.0" + utility-types "^3.10.0" + webpack "^5.88.1" + webpack-merge "^5.9.0" + +"@docusaurus/utils-common@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.1.tgz#b48fade63523fd40f3adb67b47c3371e5183c20b" + integrity sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg== + dependencies: + tslib "^2.6.0" + +"@docusaurus/utils-validation@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.1.tgz#3a747349ed05aee0e4d543552b41f3c9467ee731" + integrity sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA== + dependencies: + "@docusaurus/logger" "3.1.1" + "@docusaurus/utils" "3.1.1" + joi "^17.9.2" + js-yaml "^4.1.0" + tslib "^2.6.0" + +"@docusaurus/utils@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.1.tgz#e822d14704e4b3bb451ca464a7cc56aea9b55a45" + integrity sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg== + dependencies: + "@docusaurus/logger" "3.1.1" + "@svgr/webpack" "^6.5.1" + escape-string-regexp "^4.0.0" + file-loader "^6.2.0" + fs-extra "^11.1.1" + github-slugger "^1.5.0" + globby "^11.1.0" + gray-matter "^4.0.3" + jiti "^1.20.0" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.5" + resolve-pathname "^3.0.0" + shelljs "^0.8.5" + tslib "^2.6.0" + url-loader "^4.1.1" + webpack "^5.88.1" + +"@fontsource/roboto@^5.0.7": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-5.0.8.tgz#613b477a56f21b5705db1a67e995c033ef317f76" + integrity sha512-XxPltXs5R31D6UZeLIV1td3wTXU3jzd3f2DLsXI8tytMGBkIsGcc9sIyiupRtA8y73HAhuSCeweOoBqf6DbWCA== + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz#9b18145d26cf33d08576cf4c7665b28554480ed7" + integrity sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.23" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz#afc96847f3f07841477f303eed687707a5aacd80" + integrity sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@mdx-js/mdx@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-3.0.1.tgz#617bd2629ae561fdca1bb88e3badd947f5a82191" + integrity sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA== + dependencies: + "@types/estree" "^1.0.0" + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdx" "^2.0.0" + collapse-white-space "^2.0.0" + devlop "^1.0.0" + estree-util-build-jsx "^3.0.0" + estree-util-is-identifier-name "^3.0.0" + estree-util-to-js "^2.0.0" + estree-walker "^3.0.0" + hast-util-to-estree "^3.0.0" + hast-util-to-jsx-runtime "^2.0.0" + markdown-extensions "^2.0.0" + periscopic "^3.0.0" + remark-mdx "^3.0.0" + remark-parse "^11.0.0" + remark-rehype "^11.0.0" + source-map "^0.7.0" + unified "^11.0.0" + unist-util-position-from-estree "^2.0.0" + unist-util-stringify-position "^4.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +"@mdx-js/react@^3.0.0", "@mdx-js/react@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.0.1.tgz#997a19b3a5b783d936c75ae7c47cfe62f967f746" + integrity sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A== + dependencies: + "@types/mdx" "^2.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.24" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.24.tgz#58601079e11784d20f82d0585865bb42305c4df3" + integrity sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ== + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@sindresorhus/is@^5.2.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" + integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== + +"@slorber/remark-comment@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@slorber/remark-comment/-/remark-comment-1.0.0.tgz#2a020b3f4579c89dec0361673206c28d67e08f5a" + integrity sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.1.0" + micromark-util-symbol "^1.0.1" + +"@slorber/static-site-generator-webpack-plugin@^4.0.7": + version "4.0.7" + resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3" + integrity sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA== + dependencies: + eval "^0.1.8" + p-map "^4.0.0" + webpack-sources "^3.2.2" + +"@stackql/docusaurus-plugin-hubspot@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@stackql/docusaurus-plugin-hubspot/-/docusaurus-plugin-hubspot-1.1.0.tgz#2549c521e7cb162ec3c20352cbe3a458da988b6c" + integrity sha512-pQIF3WkzJ0Ng8gjc3cpG72GwNu5AHc9/jIpyvOO8kYNAzSTcKDMFJGOGGSz8dG3j6M0ZZp1TciLbZod2cFpSQQ== + +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + +"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" + integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== + +"@svgr/babel-plugin-remove-jsx-attribute@*", "@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@*", "@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" + integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" + integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" + integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" + integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-plugin-transform-svg-component@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" + integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/babel-preset@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" + integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute" "*" + "@svgr/babel-plugin-remove-jsx-empty-expression" "*" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" + "@svgr/babel-plugin-transform-svg-component" "^6.5.1" + +"@svgr/core@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/core@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" + integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + camelcase "^6.2.0" + cosmiconfig "^7.0.1" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/hast-util-to-babel-ast@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" + integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== + dependencies: + "@babel/types" "^7.20.0" + entities "^4.4.0" + +"@svgr/plugin-jsx@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@svgr/plugin-jsx@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" + integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/hast-util-to-babel-ast" "^6.5.1" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== + dependencies: + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" + +"@svgr/plugin-svgo@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" + integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== + dependencies: + cosmiconfig "^7.0.1" + deepmerge "^4.2.2" + svgo "^2.8.0" + +"@svgr/webpack@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" + integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== + dependencies: + "@babel/core" "^7.19.6" + "@babel/plugin-transform-react-constant-elements" "^7.18.12" + "@babel/preset-env" "^7.19.4" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@svgr/core" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + "@svgr/plugin-svgo" "^6.5.1" + +"@svgr/webpack@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsconfig/docusaurus@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-2.0.2.tgz#f96c7453ce9969ef938284eac74441e2d646efd7" + integrity sha512-12HWfYmgUl4M2o76/TFufGtI68wl2k/b8qPrIrG7ci9YJLrpAtadpy897Bz5v29Mlkr7a1Hq4KHdQTKtU+2rhQ== + +"@types/acorn@^4.0.0": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" + integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== + dependencies: + "@types/estree" "*" + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/debug@^4.0.0": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.56.4" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.4.tgz#1ce772b385cf23982d048c3ddadba6ff5787c761" + integrity sha512-lG1GLUnL5vuRBGb3MgWUWLdGMH2Hps+pERuyQXCfWozuGKdnhf9Pbg4pkcrVUHjKrU7Rl+GCZ/299ObBXZFAxg== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree-jsx@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz#858a88ea20f34fe65111f005a689fa1ebf70dc18" + integrity sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg== + dependencies: + "@types/estree" "*" + +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.43" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54" + integrity sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/gtag.js@^0.0.12": + version "0.0.12" + resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.12.tgz#095122edca896689bdfcdd73b057e23064d23572" + integrity sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg== + +"@types/hast@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + +"@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-cache-semantics@^4.0.2": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/http-proxy@^1.17.8": + version "1.17.14" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mdast@^4.0.0", "@types/mdast@^4.0.2": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.3.tgz#1e011ff013566e919a4232d1701ad30d70cab333" + integrity sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== + dependencies: + "@types/unist" "*" + +"@types/mdx@^2.0.0": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.11.tgz#21f4c166ed0e0a3a733869ba04cd8daea9834b8e" + integrity sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw== + +"@types/mime@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" + integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/ms@*": + version "0.7.34" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "20.11.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.20.tgz#f0a2aee575215149a62784210ad88b3a34843659" + integrity sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg== + dependencies: + undici-types "~5.26.4" + +"@types/node@^17.0.5": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prismjs@^1.26.0": + version "1.26.3" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.3.tgz#47fe8e784c2dee24fe636cab82e090d3da9b7dec" + integrity sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw== + +"@types/prop-types@*": + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + +"@types/qs@*": + version "6.9.12" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.12.tgz#afa96b383a3a6fdc859453a1892d41b607fc7756" + integrity sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/react-helmet@^6.1.11": + version "6.1.11" + resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.11.tgz#8cafcafff38f75361f451563ba7b406b0c5d3907" + integrity sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g== + dependencies: + "@types/react" "*" + +"@types/react-router-config@*", "@types/react-router-config@^5.0.7": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.11.tgz#2761a23acc7905a66a94419ee40294a65aaa483a" + integrity sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "^5.1.0" + +"@types/react-router-dom@*", "@types/react-router-dom@^5.1.7": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*", "@types/react-router@^5.1.0": + version "5.1.20" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react@*", "@types/react@^18.2.60": + version "18.2.60" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.60.tgz#df026eaef1100b6dafe420f36fecb1d209a8cee1" + integrity sha512-dfiPj9+k20jJrLGOu9Nf6eqxm2EyJRrq2NvwOFsfbb7sFExZ9WELPs67UImHj3Ayxg8ruTtKtNnbjaF8olPq0A== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/sax@^1.2.1": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.7.tgz#ba5fe7df9aa9c89b6dff7688a19023dd2963091d" + integrity sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A== + dependencies: + "@types/node" "*" + +"@types/scheduler@*": + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" + integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== + +"@types/unist@^2.0.0": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" + integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== + +"@types/ws@^8.5.5": + version "8.5.10" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@ungap/structured-clone@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.0.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.0.0, acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +address@^1.0.1, address@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.2, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +algoliasearch-helper@^3.13.3: + version "3.16.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.16.2.tgz#edb8744d6ffe52e731387092fef7324d59214e2f" + integrity sha512-Yl/Gu5Cq4Z5s/AJ0jR37OPI1H3+z7PHz657ibyaXgMOaWvPlZ3OACN13N+7HCLPUlB0BN+8BtmrG/CqTilowBA== + dependencies: + "@algolia/events" "^4.0.1" + +algoliasearch@^4.18.0, algoliasearch@^4.19.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.22.1.tgz#f10fbecdc7654639ec20d62f109c1b3a46bc6afc" + integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== + dependencies: + "@algolia/cache-browser-local-storage" "4.22.1" + "@algolia/cache-common" "4.22.1" + "@algolia/cache-in-memory" "4.22.1" + "@algolia/client-account" "4.22.1" + "@algolia/client-analytics" "4.22.1" + "@algolia/client-common" "4.22.1" + "@algolia/client-personalization" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/logger-console" "4.22.1" + "@algolia/requester-browser-xhr" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/requester-node-http" "4.22.1" + "@algolia/transporter" "4.22.1" + +ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +astring@^1.8.0: + version "1.8.6" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" + integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.4.12, autoprefixer@^10.4.14: + version "10.4.17" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" + integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== + dependencies: + browserslist "^4.22.2" + caniuse-lite "^1.0.30001578" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +babel-loader@^9.1.3: + version "9.1.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" + integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== + dependencies: + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-polyfill-corejs2@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" + integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.5.0" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" + integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.5.0" + core-js-compat "^3.34.0" + +babel-plugin-polyfill-regenerator@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" + integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.5.0" + +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" + integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boxen@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== + dependencies: + ansi-align "^3.0.1" + camelcase "^6.2.0" + chalk "^4.1.2" + cli-boxes "^3.0.0" + string-width "^5.0.1" + type-fest "^2.5.0" + widest-line "^4.0.1" + wrap-ansi "^8.0.1" + +boxen@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + dependencies: + ansi-align "^3.0.1" + camelcase "^7.0.1" + chalk "^5.2.0" + cli-boxes "^3.0.0" + string-width "^5.1.2" + type-fest "^2.13.0" + widest-line "^4.0.1" + wrap-ansi "^8.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.22.3: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.8: + version "10.2.14" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" + integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== + dependencies: + "@types/http-cache-semantics" "^4.0.2" + get-stream "^6.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.3" + mimic-response "^4.0.0" + normalize-url "^8.0.0" + responselike "^3.0.0" + +call-bind@^1.0.5, call-bind@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001587: + version "1.0.30001591" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz#16745e50263edc9f395895a7cd468b9f3767cf33" + integrity sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.0.1, chalk@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@^1.0.0-rc.12: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +clean-css@^5.2.2, clean-css@^5.3.2, clean-css@~5.3.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-table3@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clsx@^2.0.0, clsx@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" + integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + +collapse-white-space@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz#640257174f9f42c740b40f3b55ee752924feefca" + integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combine-promises@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a" + integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== + +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +consola@^2.15.3: + version "2.15.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copy-text-to-clipboard@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz#0202b2d9bdae30a49a53f898626dcc3b49ad960b" + integrity sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== + +copy-webpack-plugin@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== + dependencies: + fast-glob "^3.2.11" + glob-parent "^6.0.1" + globby "^13.1.1" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +core-js-compat@^3.31.0, core-js-compat@^3.34.0: + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" + integrity sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== + dependencies: + browserslist "^4.22.3" + +core-js-pure@^3.30.2: + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.36.0.tgz#ffb34330b14e594d6a9835cf5843b4123f1d95db" + integrity sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ== + +core-js@^3.31.1: + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.0.tgz#e752fa0b0b462a0787d56e9d73f80b0f7c0dde68" + integrity sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-loader@^6.8.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" + integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.4" + postcss-modules-scope "^3.1.1" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-minimizer-webpack-plugin@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35" + integrity sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA== + dependencies: + cssnano "^5.1.8" + jest-worker "^29.1.2" + postcss "^8.4.17" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-advanced@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef" + integrity sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ== + dependencies: + autoprefixer "^10.4.12" + cssnano-preset-default "^5.2.14" + postcss-discard-unused "^5.1.0" + postcss-merge-idents "^5.1.1" + postcss-reduce-idents "^5.2.0" + postcss-zindex "^5.1.0" + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.1.15, cssnano@^5.1.8: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +debounce@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +debug@2.6.9, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.2.2, deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1, define-data-property@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +del@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detect-port@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + +devlop@^1.0.0, devlop@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +docusaurus-gtm-plugin@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/docusaurus-gtm-plugin/-/docusaurus-gtm-plugin-0.0.2.tgz#f39864b54ca594e3281902c23b6df0763761602b" + integrity sha512-Xx/df0Ppd5SultlzUj9qlQk2lX9mNVfTb41juyBUPZ1Nc/5dNx+uN0VuLyF4JEObkDRrUY1EFo9fEUDo8I6QOQ== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.668: + version "1.4.683" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.683.tgz#b68167ed66dbea01feb86915aca92c09bc1b651a" + integrity sha512-FmopjiJjkUzqa5F5Sv+wxd8KimtCxyLFOFgRPwEeMLVmP+vHH/GjNGCuIYrCIchbMSiOe+nG/OPBbR/XoExBNA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojilib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" + integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +emoticon@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-4.0.1.tgz#2d2bbbf231ce3a5909e185bbb64a9da703a1e749" + integrity sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +enhanced-resolve@^5.15.0: + version "5.15.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz#384391e025f099e67b4b00bfd7f0906a408214e1" + integrity sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" + integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== + +escape-html@^1.0.3, escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-util-attach-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d" + integrity sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw== + dependencies: + "@types/estree" "^1.0.0" + +estree-util-build-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz#b6d0bced1dcc4f06f25cf0ceda2b2dcaf98168f1" + integrity sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ== + dependencies: + "@types/estree-jsx" "^1.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + estree-walker "^3.0.0" + +estree-util-is-identifier-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" + integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== + +estree-util-to-js@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz#10a6fb924814e6abb62becf0d2bc4dea51d04f17" + integrity sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg== + dependencies: + "@types/estree-jsx" "^1.0.0" + astring "^1.8.0" + source-map "^0.7.0" + +estree-util-value-to-estree@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz#0b7b5d6b6a4aaad5c60999ffbc265a985df98ac5" + integrity sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA== + dependencies: + "@types/estree" "^1.0.0" + is-plain-obj "^4.0.0" + +estree-util-visit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz#13a9a9f40ff50ed0c022f831ddf4b58d05446feb" + integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/unist" "^3.0.0" + +estree-walker@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eta@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eta/-/eta-2.2.0.tgz#eb8b5f8c4e8b6306561a455e62cd7492fe3a9b8a" + integrity sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eval@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== + dependencies: + "@types/node" "*" + require-like ">= 0.1.1" + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-url-parser@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fault@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" + integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== + dependencies: + format "^0.2.0" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +feed@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" + integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== + dependencies: + xml-js "^1.6.11" + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== + dependencies: + common-path-prefix "^3.0.0" + pkg-dir "^7.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.0.0: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data-encoder@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" + integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== + +format@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^11.1.1: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +github-slugger@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== + dependencies: + ini "2.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^13.1.1: + version "13.2.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.3.0" + ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^12.1.0: + version "12.6.1" + resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" + integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +got@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/got/-/got-13.0.0.tgz#a2402862cef27a5d0d1b07c0fb25d12b58175422" + integrity sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-yarn@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" + integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== + +hasown@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + dependencies: + function-bind "^1.1.2" + +hast-util-from-parse5@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz#654a5676a41211e14ee80d1b1758c399a0327651" + integrity sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + hastscript "^8.0.0" + property-information "^6.0.0" + vfile "^6.0.0" + vfile-location "^5.0.0" + web-namespaces "^2.0.0" + +hast-util-parse-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" + integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-raw@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.2.tgz#39b4a4886bd9f0a5dd42e86d02c966c2c152884c" + integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + hast-util-from-parse5 "^8.0.0" + hast-util-to-parse5 "^8.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + parse5 "^7.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-to-estree@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz#f2afe5e869ddf0cf690c75f9fc699f3180b51b19" + integrity sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw== + dependencies: + "@types/estree" "^1.0.0" + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + estree-util-attach-comments "^3.0.0" + estree-util-is-identifier-name "^3.0.0" + hast-util-whitespace "^3.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.4.0" + unist-util-position "^5.0.0" + zwitch "^2.0.0" + +hast-util-to-jsx-runtime@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz#3ed27caf8dc175080117706bf7269404a0aa4f7c" + integrity sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== + dependencies: + "@types/estree" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + hast-util-whitespace "^3.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^1.0.0" + unist-util-position "^5.0.0" + vfile-message "^4.0.0" + +hast-util-to-parse5@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed" + integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" + +hastscript@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-8.0.0.tgz#4ef795ec8dee867101b9f23cc830d4baf4fd781a" + integrity sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^4.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hoist-non-react-statics@^3.1.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + +html-escaper@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-minifier-terser@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#18752e23a2f0ed4b0f550f217bb41693e975b942" + integrity sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== + dependencies: + camel-case "^4.1.2" + clean-css "~5.3.2" + commander "^10.0.0" + entities "^4.4.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.15.1" + +html-tags@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + +html-webpack-plugin@^5.5.3: + version "5.6.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +image-size@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" + +immer@^9.0.7: + version "9.0.21" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infima@0.2.0-alpha.43: + version "0.2.0-alpha.43" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.43.tgz#f7aa1d7b30b6c08afef441c726bac6150228cbe0" + integrity sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +inline-style-parser@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz#d498b4e6de0373458fc610ff793f6b14ebf45633" + integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ== + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +is-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + +is-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-ci@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-npm@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" + integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-reference@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c" + integrity sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== + dependencies: + "@types/estree" "*" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-yarn-global@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" + integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.1.2: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jiti@^1.20.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + +joi@^17.9.2: + version "17.12.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.2.tgz#283a664dabb80c7e52943c557aab82faea09f521" + integrity sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.1.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== + dependencies: + package-json "^8.1.0" + +launch-editor@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lilconfig@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +markdown-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" + integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== + +markdown-table@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" + integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== + +mdast-util-directive@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz#3fb1764e705bbdf0afb0d3f889e4404c3e82561f" + integrity sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + parse-entities "^4.0.0" + stringify-entities "^4.0.0" + unist-util-visit-parents "^6.0.0" + +mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0" + integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== + dependencies: + "@types/mdast" "^4.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + +mdast-util-from-markdown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz#52f14815ec291ed061f2922fd14d6689c810cb88" + integrity sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + mdast-util-to-string "^4.0.0" + micromark "^4.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-decode-string "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-stringify-position "^4.0.0" + +mdast-util-frontmatter@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz#f5f929eb1eb36c8a7737475c7eb438261f964ee8" + integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + escape-string-regexp "^5.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-extension-frontmatter "^2.0.0" + +mdast-util-gfm-autolink-literal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz#5baf35407421310a08e68c15e5d8821e8898ba2a" + integrity sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg== + dependencies: + "@types/mdast" "^4.0.0" + ccount "^2.0.0" + devlop "^1.0.0" + mdast-util-find-and-replace "^3.0.0" + micromark-util-character "^2.0.0" + +mdast-util-gfm-footnote@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" + integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + +mdast-util-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-task-list-item@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" + integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-gfm-autolink-literal "^2.0.0" + mdast-util-gfm-footnote "^2.0.0" + mdast-util-gfm-strikethrough "^2.0.0" + mdast-util-gfm-table "^2.0.0" + mdast-util-gfm-task-list-item "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-mdx-expression@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz#4968b73724d320a379110d853e943a501bfd9d87" + integrity sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-mdx-jsx@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.0.tgz#5f7f204cf3f380cba1a8441142406eede1bc7660" + integrity sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + parse-entities "^4.0.0" + stringify-entities "^4.0.0" + unist-util-remove-position "^5.0.0" + unist-util-stringify-position "^4.0.0" + vfile-message "^4.0.0" + +mdast-util-mdx@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz#792f9cf0361b46bee1fdf1ef36beac424a099c41" + integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-mdxjs-esm@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" + integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-phrasing@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" + integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== + dependencies: + "@types/mdast" "^4.0.0" + unist-util-is "^6.0.0" + +mdast-util-to-hast@^13.0.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz#1ae54d903150a10fe04d59f03b2b95fd210b2124" + integrity sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" + trim-lines "^3.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +mdast-util-to-markdown@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz#9813f1d6e0cdaac7c244ec8c6dabfdb2102ea2b4" + integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + longest-streak "^3.0.0" + mdast-util-phrasing "^4.0.0" + mdast-util-to-string "^4.0.0" + micromark-util-decode-string "^2.0.0" + unist-util-visit "^5.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" + integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== + dependencies: + "@types/mdast" "^4.0.0" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.1.2, memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromark-core-commonmark@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3" + integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA== + dependencies: + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-directive@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz#527869de497a6de9024138479091bc885dae076b" + integrity sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + parse-entities "^4.0.0" + +micromark-extension-frontmatter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz#651c52ffa5d7a8eeed687c513cd869885882d67a" + integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg== + dependencies: + fault "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-autolink-literal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz#f1e50b42e67d441528f39a67133eddde2bbabfd9" + integrity sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-footnote@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz#91afad310065a94b636ab1e9dab2c60d1aab953c" + integrity sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg== + dependencies: + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz#6917db8e320da70e39ffbf97abdbff83e6783e61" + integrity sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz#2cf3fe352d9e089b7ef5fff003bdfe0da29649b7" + integrity sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-tagfilter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-extension-gfm-task-list-item@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz#ee8b208f1ced1eb9fb11c19a23666e59d86d4838" + integrity sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== + dependencies: + micromark-extension-gfm-autolink-literal "^2.0.0" + micromark-extension-gfm-footnote "^2.0.0" + micromark-extension-gfm-strikethrough "^2.0.0" + micromark-extension-gfm-table "^2.0.0" + micromark-extension-gfm-tagfilter "^2.0.0" + micromark-extension-gfm-task-list-item "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-mdx-expression@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz#1407b9ce69916cf5e03a196ad9586889df25302a" + integrity sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-factory-mdx-expression "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-mdx-jsx@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz#4aba0797c25efb2366a3fd2d367c6b1c1159f4f5" + integrity sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w== + dependencies: + "@types/acorn" "^4.0.0" + "@types/estree" "^1.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + micromark-factory-mdx-expression "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + vfile-message "^4.0.0" + +micromark-extension-mdx-md@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz#1d252881ea35d74698423ab44917e1f5b197b92d" + integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== + dependencies: + micromark-util-types "^2.0.0" + +micromark-extension-mdxjs-esm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz#de21b2b045fd2059bd00d36746081de38390d54a" + integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-position-from-estree "^2.0.0" + vfile-message "^4.0.0" + +micromark-extension-mdxjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz#b5a2e0ed449288f3f6f6c544358159557549de18" + integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== + dependencies: + acorn "^8.0.0" + acorn-jsx "^5.0.0" + micromark-extension-mdx-expression "^3.0.0" + micromark-extension-mdx-jsx "^3.0.0" + micromark-extension-mdx-md "^2.0.0" + micromark-extension-mdxjs-esm "^3.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-destination@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07" + integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-label@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a" + integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== + dependencies: + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-mdx-expression@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz#f2a9724ce174f1751173beb2c1f88062d3373b1b" + integrity sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-position-from-estree "^2.0.0" + vfile-message "^4.0.0" + +micromark-factory-space@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-space@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030" + integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-title@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95" + integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-whitespace@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763" + integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-character@^1.0.0, micromark-util-character@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.0.tgz#31320ace16b4644316f6bf057531689c71e2aee1" + integrity sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-chunked@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89" + integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-classify-character@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34" + integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-combine-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5" + integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== + dependencies: + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5" + integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-decode-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a" + integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1" + integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== + +micromark-util-events-to-acorn@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz#4275834f5453c088bd29cd72dfbf80e3327cec07" + integrity sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA== + dependencies: + "@types/acorn" "^4.0.0" + "@types/estree" "^1.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + estree-util-visit "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + vfile-message "^4.0.0" + +micromark-util-html-tag-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4" + integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== + +micromark-util-normalize-identifier@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b" + integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-resolve-all@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364" + integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== + dependencies: + micromark-util-types "^2.0.0" + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de" + integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-subtokenize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581" + integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-symbol@^1.0.0, micromark-util-symbol@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== + +micromark-util-symbol@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044" + integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== + +micromark-util-types@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== + +micromark-util-types@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e" + integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== + +micromark@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249" + integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +mime-types@2.1.18: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== + dependencies: + mime-db "~1.33.0" + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + +mini-css-extract-plugin@^2.7.6: + version "2.8.1" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz#75245f3f30ce3a56dbdd478084df6fe475f02dc7" + integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mrmime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-emoji@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.3.tgz#93cfabb5cc7c3653aa52f29d6ffb7927d8047c06" + integrity sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA== + dependencies: + "@sindresorhus/is" "^4.6.0" + char-regex "^1.0.2" + emojilib "^2.4.0" + skin-tone "^2.0.0" + +node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +normalize-url@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" + integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== + dependencies: + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-entities@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.1.tgz#4e2a01111fb1c986549b944af39eeda258fc9e4e" + integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== + dependencies: + "@types/unist" "^2.0.0" + character-entities "^2.0.0" + character-entities-legacy "^3.0.0" + character-reference-invalid "^2.0.0" + decode-named-character-reference "^1.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-numeric-range@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== + +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-to-regexp@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" + integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +periscopic@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a" + integrity sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^3.0.0" + is-reference "^3.0.0" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-discard-unused@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" + integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-loader@^7.3.3: + version "7.3.4" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" + integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== + dependencies: + cosmiconfig "^8.3.5" + jiti "^1.20.0" + semver "^7.5.4" + +postcss-merge-idents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" + integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" + integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-idents@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-sort-media-queries@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz#04a5a78db3921eb78f28a1a781a2e68e65258128" + integrity sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw== + dependencies: + sort-css-media-queries "2.1.0" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-zindex@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" + integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== + +postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.33: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prettier@3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +prism-react-renderer@^2.3.0, prism-react-renderer@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz#e59e5450052ede17488f6bc85de1553f584ff8d5" + integrity sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw== + dependencies: + "@types/prismjs" "^1.26.0" + clsx "^2.0.0" + +prismjs@^1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-information@^6.0.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac" + integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pupa@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" + integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== + dependencies: + escape-goat "^4.0.0" + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^18.0.1: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== + +react-fast-compare@^3.2.0, react-fast-compare@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +react-helmet-async@*: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-2.0.4.tgz#50a4377778f380ed1d0136303916b38eff1bf153" + integrity sha512-yxjQMWposw+akRfvpl5+8xejl4JtUlHnEBcji6u8/e6oc7ozT+P9PNTWMhCbz2y9tc5zPegw2BvKjQA+NwdEjQ== + dependencies: + invariant "^2.2.4" + react-fast-compare "^3.2.2" + shallowequal "^1.1.0" + +react-helmet-async@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" + integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== + dependencies: + "@babel/runtime" "^7.12.5" + invariant "^2.2.4" + prop-types "^15.7.2" + react-fast-compare "^3.2.0" + shallowequal "^1.1.0" + +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-json-view-lite@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.2.1.tgz#c59a0bea4ede394db331d482ee02e293d38f8218" + integrity sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ== + +react-loadable-ssr-addon-v5-slorber@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" + integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== + dependencies: + "@babel/runtime" "^7.10.3" + +react-loadable@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/react-loadable/-/react-loadable-5.5.0.tgz#582251679d3da86c32aae2c8e689c59f1196d8c4" + integrity sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg== + dependencies: + prop-types "^15.5.0" + +react-router-config@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" + integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== + dependencies: + "@babel/runtime" "^7.1.2" + +react-router-dom@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.3.4" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.3.4, react-router@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react@^18.0.1: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reading-time@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" + integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +registry-auth-token@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== + dependencies: + "@pnpm/npm-conf" "^2.1.0" + +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +rehype-raw@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4" + integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== + dependencies: + "@types/hast" "^3.0.0" + hast-util-raw "^9.0.0" + vfile "^6.0.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +remark-directive@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remark-directive/-/remark-directive-3.0.0.tgz#34452d951b37e6207d2e2a4f830dc33442923268" + integrity sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-directive "^3.0.0" + micromark-extension-directive "^3.0.0" + unified "^11.0.0" + +remark-emoji@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-4.0.1.tgz#671bfda668047689e26b2078c7356540da299f04" + integrity sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg== + dependencies: + "@types/mdast" "^4.0.2" + emoticon "^4.0.1" + mdast-util-find-and-replace "^3.0.1" + node-emoji "^2.1.0" + unified "^11.0.4" + +remark-frontmatter@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz#b68d61552a421ec412c76f4f66c344627dc187a2" + integrity sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-frontmatter "^2.0.0" + micromark-extension-frontmatter "^2.0.0" + unified "^11.0.0" + +remark-gfm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" + integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-gfm "^3.0.0" + micromark-extension-gfm "^3.0.0" + remark-parse "^11.0.0" + remark-stringify "^11.0.0" + unified "^11.0.0" + +remark-mdx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-3.0.1.tgz#8f73dd635c1874e44426e243f72c0977cf60e212" + integrity sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA== + dependencies: + mdast-util-mdx "^3.0.0" + micromark-extension-mdxjs "^3.0.0" + +remark-parse@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" + integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + micromark-util-types "^2.0.0" + unified "^11.0.0" + +remark-rehype@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.0.tgz#d5f264f42bcbd4d300f030975609d01a1697ccdc" + integrity sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + mdast-util-to-hast "^13.0.0" + unified "^11.0.0" + vfile "^6.0.0" + +remark-stringify@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-to-markdown "^2.0.0" + unified "^11.0.0" + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +"require-like@>= 0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve@^1.1.6, resolve@^1.14.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rtl-detect@^1.0.4: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.1.2.tgz#ca7f0330af5c6bb626c15675c642ba85ad6273c6" + integrity sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ== + +rtlcss@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-4.1.1.tgz#f20409fcc197e47d1925996372be196fee900c0c" + integrity sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + postcss "^8.4.21" + strip-json-comments "^3.1.1" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +search-insights@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/search-insights/-/search-insights-2.13.0.tgz#a79fdcf4b5dad2fba8975b06f2ebc37a865032b7" + integrity sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw== + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== + dependencies: + semver "^7.3.5" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-handler@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" + integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== + dependencies: + bytes "3.0.0" + content-disposition "0.5.2" + fast-url-parser "1.1.3" + mime-types "2.1.18" + minimatch "3.1.2" + path-is-inside "1.0.2" + path-to-regexp "2.2.1" + range-parser "1.2.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + dependencies: + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3, shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b" + integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sirv@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +sitemap@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" + integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== + dependencies: + "@types/node" "^17.0.5" + "@types/sax" "^1.2.1" + arg "^5.0.0" + sax "^1.2.4" + +skin-tone@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/skin-tone/-/skin-tone-2.0.0.tgz#4e3933ab45c0d4f4f781745d64b9f4c208e41237" + integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== + dependencies: + unicode-emoji-modifier-base "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sort-css-media-queries@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce" + integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA== + +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.0: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +srcset@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" + integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +std-env@^3.0.1: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" + integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +style-to-object@^0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.4.tgz#266e3dfd56391a7eefb7770423612d043c3f33ec" + integrity sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== + dependencies: + inline-style-parser "0.1.1" + +style-to-object@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.5.tgz#5e918349bc3a39eee3a804497d97fcbbf2f0d7c0" + integrity sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ== + dependencies: + inline-style-parser "0.2.2" + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^2.7.0, svgo@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +svgo@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d" + integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.0.0" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@5.28.1, terser@^5.10.0, terser@^5.15.1, terser@^5.26.0: + version "5.28.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.28.1.tgz#bf00f7537fd3a798c352c2d67d67d65c915d1b28" + integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tiny-invariant@^1.0.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + +tiny-warning@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +trim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-1.0.1.tgz#68e78f6178ccab9687a610752f4f5e5a7022ee8c" + integrity sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w== + +trough@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" + integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== + +tslib@^2.0.3, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-fest@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.13.0, type-fest@^2.5.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^5.3.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-emoji-modifier-base@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459" + integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unified@^11.0.0, unified@^11.0.3, unified@^11.0.4: + version "11.0.4" + resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015" + integrity sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ== + dependencies: + "@types/unist" "^3.0.0" + bail "^2.0.0" + devlop "^1.0.0" + extend "^3.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^6.0.0" + +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== + dependencies: + crypto-random-string "^4.0.0" + +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position-from-estree@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz#d94da4df596529d1faa3de506202f0c9a23f2200" + integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-remove-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz#fea68a25658409c9460408bc6b4991b965b52163" + integrity sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q== + dependencies: + "@types/unist" "^3.0.0" + unist-util-visit "^5.0.0" + +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-notifier@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" + integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== + dependencies: + boxen "^7.0.0" + chalk "^5.0.1" + configstore "^6.0.0" + has-yarn "^3.0.0" + import-lazy "^4.0.0" + is-ci "^3.0.1" + is-installed-globally "^0.4.0" + is-npm "^6.0.0" + is-yarn-global "^0.4.0" + latest-version "^7.0.0" + pupa "^3.1.0" + semver "^7.3.7" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utility-types@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vfile-location@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.2.tgz#220d9ca1ab6f8b2504a4db398f7ebc149f9cb464" + integrity sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== + dependencies: + "@types/unist" "^3.0.0" + vfile "^6.0.0" + +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + +vfile@^6.0.0, vfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536" + integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + vfile-message "^4.0.0" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + +web-streams-polyfill@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-bundle-analyzer@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" + integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + debounce "^1.2.1" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + html-escaper "^2.0.2" + is-plain-object "^5.0.0" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.15.1: + version "4.15.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" + +webpack-merge@^5.9.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.2.2, webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.88.1, webpack@^5.90.3: + version "5.90.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" + integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +webpackbar@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" + integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== + dependencies: + chalk "^4.1.0" + consola "^2.15.3" + pretty-time "^1.1.0" + std-env "^3.0.1" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0, ws@^8.16.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== + +xml-js@^1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + +zwitch@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==