Skip to content

Commit 48a3cfd

Browse files
Merge branch 'main' into ci/scorecard-hardening
Signed-off-by: myasnikovdaniil <[email protected]>
2 parents a3f97e5 + e60ec04 commit 48a3cfd

116 files changed

Lines changed: 10596 additions & 4086 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/CODEOWNERS‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
# This file encodes the area-scoped Reviewer role from the Contributor Ladder
2+
# (CONTRIBUTOR_LADDER.md): the handles below have review authority over the
3+
# matching paths. This is intentionally a different set from the governance
4+
# roster in MAINTAINERS.md — a Reviewer owns a specific code area, while a
5+
# Maintainer is responsible for the whole project. The two overlap but are not
6+
# identical by design. Security reports are NOT routed through this file; see
7+
# SECURITY.md (GitHub Private Vulnerability Reporting + MAINTAINERS.md).
8+
19
* @kvaps @lllamnyp @lexfrei @androndo @IvanHunters @sircthulhu @myasnikovdaniil
210

311
# The API review gate must not be editable without an API-owner review, or a

‎.github/workflows/build-main.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ jobs:
8787
# isolated buildkit so it never contends with PR builds on the shared one.
8888
- name: Set up Buildx (docker-container driver)
8989
id: buildx
90-
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
90+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
9191
with:
9292
driver: docker-container
9393
env:

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,4 @@ packages/core/platform/.build-revision
9393
examples/backups/*/.bucket-info.env
9494
examples/backups/*/.sentinel.env
9595
examples/backups/*/.backup-name.env
96+
packages/core/platform/images/migrations/etcd-operator-crds/

‎SECURITY.md‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ Supported versions may change over time as new release lines are cut. The author
2626

2727
Please do **not** report security vulnerabilities through public GitHub issues, discussions, pull requests, Telegram, Slack, or other public community channels.
2828

29-
At the moment, this repository does not publish a dedicated private security mailbox in-tree. If you need to report a vulnerability:
29+
Please report vulnerabilities privately through one of the following channels, in order of preference:
3030

31-
1. Contact one of the project maintainers listed in `CODEOWNERS` using an existing private channel you already have.
32-
2. If you do not already have a private maintainer contact, use a public community channel only to request a private contact path, without disclosing any vulnerability details.
31+
1. **GitHub Private Vulnerability Reporting** — the preferred channel. Open the repository's **Security** tab, then **Advisories** → **Report a vulnerability** (<https://github.com/cozystack/cozystack/security/advisories/new>). This creates a confidential advisory visible only to you and the maintainers, and is the CNCF-recommended path for coordinated disclosure.
32+
2. **Contact a maintainer** listed in [`MAINTAINERS.md`](MAINTAINERS.md) through an existing private channel you already have.
33+
3. If you have neither, use a public community channel only to request a private contact path, without disclosing any vulnerability details.
3334

3435
Please do not include exploit details, credentials, tokens, private keys, customer data, or other sensitive material in any public message.
3536

@@ -54,6 +55,21 @@ The maintainers will aim to:
5455

5556
Resolution timelines depend on severity, complexity, release branch applicability, and whether coordination with upstream projects is required.
5657

58+
### Disclosure timeline
59+
60+
The project follows a coordinated-disclosure window of **up to 90 days** from acknowledgement. If a fix or mitigation is not available within that window, the maintainers may publish the advisory (via GitHub Security Advisories) with the available details and any known workarounds, so that users are not left uninformed indefinitely. The window may be extended only by mutual agreement with the reporter, typically for issues that require coordination with upstream projects.
61+
62+
Target remediation timelines are guided by CVSS v3.1 severity:
63+
64+
| Severity (CVSS v3.1) | Target time to fix or mitigation |
65+
| --- | --- |
66+
| Critical (9.0–10.0) | ~14 days |
67+
| High (7.0–8.9) | ~30 days |
68+
| Medium (4.0–6.9) | ~90 days |
69+
| Low (0.1–3.9) | next scheduled release |
70+
71+
These are targets, not guarantees; complex or upstream-coordinated issues may take longer.
72+
5773
## Disclosure Process
5874

5975
The Cozystack project follows a coordinated disclosure model.

‎api/apps/v1alpha1/kubernetes/types.go‎

Lines changed: 44 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎api/apps/v1alpha1/kubernetes/zz_generated.deepcopy.go‎

Lines changed: 68 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎api/backups/strategy/v1alpha1/etcd_types.go‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ const (
2929
// +kubebuilder:resource:scope=Cluster
3030

3131
// Etcd defines a backup strategy that delegates execution to the
32-
// etcd-operator (etcd.aenix.io). The strategy carries a templated backup
33-
// destination configuration; the driver materialises one
34-
// etcd.aenix.io/v1alpha1 EtcdBackup per Cozystack BackupJob and surfaces
32+
// etcd-operator (etcd-operator.cozystack.io). The strategy carries a templated
33+
// backup destination configuration; the driver materialises one
34+
// etcd-operator.cozystack.io/v1alpha2 EtcdSnapshot per Cozystack BackupJob and surfaces
3535
// it as a Cozystack Backup artefact.
3636
//
3737
// Restore is in-place only: the driver suspends the source Etcd
3838
// HelmRelease, snapshots the live EtcdCluster spec, deletes it, and
3939
// re-creates the EtcdCluster with spec.bootstrap.restore.source
4040
// pointing at the Backup's S3 coordinates, then resumes the HR after
41-
// the cluster reaches Ready.
41+
// the cluster becomes Available.
4242
//
4343
// To-copy restore is NOT supported: RestoreJob.spec.targetApplicationRef
4444
// is a TypedLocalObjectReference (no namespace field), so there is no
@@ -68,7 +68,7 @@ type EtcdList struct {
6868

6969
// EtcdSpec specifies the desired etcd-operator-driven backup strategy.
7070
type EtcdSpec struct {
71-
// Template carries the templated EtcdBackup destination configuration
71+
// Template carries the templated EtcdSnapshot destination configuration
7272
// applied per BackupJob (and re-rendered against the same
7373
// .Application / .Parameters at restore time). String fields support
7474
// Helm-style Go templating with two top-level values:
@@ -80,19 +80,19 @@ type EtcdSpec struct {
8080
Template EtcdTemplate `json:"template"`
8181
}
8282

83-
// EtcdTemplate describes the templated EtcdBackup-shaped configuration the
83+
// EtcdTemplate describes the templated EtcdSnapshot-shaped configuration the
8484
// driver renders per BackupJob (and on the restore path stamps onto
8585
// EtcdCluster.spec.bootstrap.restore.source).
8686
type EtcdTemplate struct {
8787
// Destination defines where the etcd snapshot will be stored. Field
88-
// semantics mirror etcd.aenix.io/v1alpha1 EtcdBackup.spec.destination.
88+
// semantics mirror etcd-operator.cozystack.io/v1alpha2 EtcdSnapshot.spec.destination.
8989
Destination EtcdDestinationTemplate `json:"destination"`
9090
}
9191

92-
// EtcdDestinationTemplate mirrors etcd.aenix.io/v1alpha1
93-
// EtcdBackup.spec.destination, RESTRICTED to S3.
92+
// EtcdDestinationTemplate mirrors etcd-operator.cozystack.io/v1alpha2
93+
// EtcdSnapshot.spec.destination, RESTRICTED to S3.
9494
//
95-
// The upstream etcd-operator EtcdBackup.spec.destination accepts either
95+
// The upstream etcd-operator EtcdSnapshot.spec.destination accepts either
9696
// S3 or PVC, but the operator's filename convention is asymmetric
9797
// between backup and restore on the PVC path:
9898
//
@@ -118,7 +118,7 @@ type EtcdDestinationTemplate struct {
118118
}
119119

120120
// EtcdS3Template is a typed, kubebuilder-validated mirror of
121-
// etcd.aenix.io/v1alpha1 EtcdBackup.spec.destination.s3. Restores reuse
121+
// etcd-operator.cozystack.io/v1alpha2 EtcdSnapshot.spec.destination.s3. Restores reuse
122122
// the same shape: the driver re-renders the strategy and stamps the
123123
// resulting block onto EtcdCluster.spec.bootstrap.restore.source.s3 of the
124124
// target Etcd application.

0 commit comments

Comments
 (0)