mirror of
https://github.com/anchore/syft.git
synced 2026-02-12 10:36:45 +01:00
update readme with private registry section (#610)
This commit is contained in:
parent
8ec3f1d102
commit
3e20edee55
86
README.md
86
README.md
@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://user-images.githubusercontent.com/5199289/136844524-1527b09f-c5cb-4aa9-be54-5aa92a6086c1.png" width="271">
|
<img src="https://user-images.githubusercontent.com/5199289/136844524-1527b09f-c5cb-4aa9-be54-5aa92a6086c1.png" width="271" alt="Cute pink owl syft logo">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
[](https://github.com/anchore/syft/actions/workflows/validations.yaml)
|
[](https://github.com/anchore/syft/actions/workflows/validations.yaml)
|
||||||
@ -94,7 +94,7 @@ The output format for Syft is configurable as well:
|
|||||||
syft packages <image> -o <format>
|
syft packages <image> -o <format>
|
||||||
```
|
```
|
||||||
|
|
||||||
Where the `format`s available are:
|
Where the `formats` available are:
|
||||||
- `json`: Use this to get as much information out of Syft as possible!
|
- `json`: Use this to get as much information out of Syft as possible!
|
||||||
- `text`: A row-oriented, human-and-machine-friendly output.
|
- `text`: A row-oriented, human-and-machine-friendly output.
|
||||||
- `cyclonedx`: A XML report conforming to the [CycloneDX 1.2 specification](https://cyclonedx.org/specification/overview/).
|
- `cyclonedx`: A XML report conforming to the [CycloneDX 1.2 specification](https://cyclonedx.org/specification/overview/).
|
||||||
@ -102,6 +102,88 @@ Where the `format`s available are:
|
|||||||
- `spdx-json`: A JSON report conforming to the [SPDX 2.2 JSON Schema](https://github.com/spdx/spdx-spec/blob/v2.2/schemas/spdx-schema.json).
|
- `spdx-json`: A JSON report conforming to the [SPDX 2.2 JSON Schema](https://github.com/spdx/spdx-spec/blob/v2.2/schemas/spdx-schema.json).
|
||||||
- `table`: A columnar summary (default).
|
- `table`: A columnar summary (default).
|
||||||
|
|
||||||
|
## Private Registry Authentication
|
||||||
|
|
||||||
|
### Local Docker Credentials
|
||||||
|
When a container runtime is not present, Syft can still utilize credentials configured in common credential sources (such as `~/.docker/config.json`).
|
||||||
|
It will pull images from private registries using these credentials. The config file is where your credentials are stored when authenticating with private registries via some command like `docker login`.
|
||||||
|
For more information see the `go-containerregistry` [documentation](https://github.com/google/go-containerregistry/tree/main/pkg/authn).
|
||||||
|
|
||||||
|
|
||||||
|
An example `config.json` looks something like this:
|
||||||
|
```
|
||||||
|
// config.json
|
||||||
|
{
|
||||||
|
"auths": {
|
||||||
|
"registry.example.com": {
|
||||||
|
"username": "AzureDiamond",
|
||||||
|
"password": "hunter2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can run the following command as an example. It details the mount/environment configuration a container needs to access a private registry:
|
||||||
|
|
||||||
|
`docker run -v ./config.json:/config/config.json -e "DOCKER_CONFIG=/config" anchore/syft:latest <private_image>`
|
||||||
|
|
||||||
|
|
||||||
|
### Docker Credentials in Kubernetes
|
||||||
|
The below section shows a simple workflow on how to mount this config file as a secret into a container on kubernetes.
|
||||||
|
1. Create a secret. The value of `config.json` is important. It refers to the specification detailed [here](https://github.com/google/go-containerregistry/tree/main/pkg/authn#the-config-file).
|
||||||
|
Below this section is the `secret.yaml` file that the pod configuration will consume as a volume.
|
||||||
|
The key `config.json` is important. It will end up being the name of the file when mounted into the pod.
|
||||||
|
```
|
||||||
|
# secret.yaml
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: registry-config
|
||||||
|
namespace: syft
|
||||||
|
data:
|
||||||
|
config.json: <base64 encoded config.json>
|
||||||
|
```
|
||||||
|
|
||||||
|
`kubectl apply -f secret.yaml`
|
||||||
|
|
||||||
|
|
||||||
|
2. Create your pod running syft. The env `DOCKER_CONFIG` is important because it advertises where to look for the credential file.
|
||||||
|
In the below example, setting `DOCKER_CONFIG=/config` informs syft that credentials can be found at `/config/config.json`.
|
||||||
|
This is why we used `config.json` as the key for our secret. When mounted into containers the secrets' key is used as the filename.
|
||||||
|
The `volumeMounts` section mounts our secret to `/config`. The `volumes` section names our volume and leverages the secret we created in step one.
|
||||||
|
```
|
||||||
|
# pod.yaml
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: anchore/syft:latest
|
||||||
|
name: syft-private-registry-demo
|
||||||
|
env:
|
||||||
|
- name: DOCKER_CONFIG
|
||||||
|
value: /config
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: registry-config
|
||||||
|
readOnly: true
|
||||||
|
args:
|
||||||
|
- <private_image>
|
||||||
|
volumes:
|
||||||
|
- name: registry-config
|
||||||
|
secret:
|
||||||
|
secretName: registry-config
|
||||||
|
```
|
||||||
|
|
||||||
|
`kubectl apply -f pod.yaml`
|
||||||
|
|
||||||
|
|
||||||
|
3. The user can now run `kubectl logs syft-private-registry-demo`. The logs should show the syft analysis for the `<private_image>` provided in the pod configuration.
|
||||||
|
|
||||||
|
Using the above information, users should be able to configure private registry access without having to do so in the `grype` or `syft` configuration files.
|
||||||
|
They will also not be dependent on a docker daemon, (or some other runtime software) for registry configuration and access.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
Configuration search paths:
|
Configuration search paths:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user