From 5b177da2f8df11998835dae1ab74aceb32c1ec0a Mon Sep 17 00:00:00 2001 From: Wang Yan Date: Wed, 13 May 2020 18:16:58 +0800 Subject: [PATCH] update document of tag immutability for v2.0.0 (#11893) Signed-off-by: wang yan --- docs/img/tag-immutability.png | Bin 20218 -> 30870 bytes .../create-tag-immutability-rules.md | 22 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/img/tag-immutability.png b/docs/img/tag-immutability.png index 1c58ef1ef7e367c80871cf1f3e0752181cdaa706..86eeb114a1adb7f8f525306c26a551ad99c8bbfb 100644 GIT binary patch literal 30870 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 F{tu{+NdN!< diff --git a/docs/working-with-projects/working-with-images/create-tag-immutability-rules.md b/docs/working-with-projects/working-with-images/create-tag-immutability-rules.md index 031732829..76bc2eac8 100644 --- a/docs/working-with-projects/working-with-images/create-tag-immutability-rules.md +++ b/docs/working-with-projects/working-with-images/create-tag-immutability-rules.md @@ -3,29 +3,29 @@ title: Tag Immutability Rules weight: 85 --- -By default, users can repeatedly push an image with the same tag to repositories in Harbor. This causes the previous image to effectively be overwritten with each push, in that the tag now points to a different image and the image that previously used the tag now becomes tagless. This is due to the Docker implementation, that does not enforce the mapping between an image tag and the image digest. This can be undesirable in certain cases, because the tag can no longer be trusted to identify the image version. The sha256 digest remains reliable and always points to the same build, but it is not rendered in a human-readable format. +By default, users can repeatedly push an artifact with the same tag to a repository in Harbor. This causes the tag to migrate across the artifacts and every artifact that has its tag taken away becomes tagless. This is due to Docker distribution upstream which does not enforce the mapping between an image tag and the image digest. This can be undesirable in certain cases, because the tag can no longer be trusted to identify the image version. The sha256 digest remains reliable and always points to the same build, but it is not rendered in a human-readable format. -Moreover, the Docker implementation requires that deleting a tag results in the deletion of all other tags that point to the same digest, causing unwanted image deletions. - -To prevent this, Harbor allows you to configure tag immutability at the project level, so that images with certain tags cannot be pushed into Harbor if their tags match existing tags. This prevents existing images from being overwritten. Tag immutability guarantees that an immutable tagged image cannot be deleted, and cannot be altered through repushing, retagging, or replication. +To prevent this, Harbor allows you to configure tag immutability at the project level, so that artifacts with certain tags cannot be pushed into Harbor if their tags match existing tags. This prevents existing artifacts from being overwritten. Tag immutability guarantees that an immutable tagged artifact cannot be deleted, and also cannot be altered in any way such as through re-pushing, re-tagging, or replication from another target registry. Immutability rules use `OR` logic, so if you set multiple rules and a tag is matched by any of those rules, it is marked as immutable. ## How Immutable Tags Prevent Tag Deletion -Tags that share a common digest cannot be deleted even if only a single tag is configured as immutable. For example: +Since v2.0, you can delete any tag of an artifact without deleting the artifact itself. Therefore, you can lock down a particular tag by configuring an immutability rule matching this tag which means the artifact holding the tag also cannot be overwritten or deleted. However you can still delete other tags associated with this immutable artifact. Consider the follow example: -1. In a project, set an immutable tag rule that matches the image and tag `hello-world:v1`. -1. In the Docker client, pull `hello-world:v1` and retag it to `hello-world:v2`. -1. Push `hello-world:v2` to the same project. -1. In the Harbor interface, attempt to delete `hello-world:v2`. +1. In the Docker client, push `hello-world:v1` into a project. +1. In the project, set an immutable tag rule in this project that matches the image and tag `hello-world:v1`. +1. Push `hello-world:v1` to the project. +1. In your local env, retag `hello-world:v1` to `hello-world:v2`. +1. Push `hello-world:v2` to the project. +1. In the Harbor interface, attempt to delete tag `v1` and `v2` of `hello-world` sequentially. -In this case, you cannot delete `hello-world:v2` because it shares the sha256 digest with `hello-world:v1`, and `hello-world:v1` is an immutable tag. +In this case, you cannot delete tag `v1` as it's an immutable tag and you cannot delete the artifact `hello-world` holding this tag. But you can delete tag `v2` even it shares the sha256 digest with `v1`. ## Create a Tag Immutability Rule 1. Log in to the Harbor interface with an account that has at least project administrator privileges. -1. Go to **Projects**, select a project, and select **Tag Immutability**. +1. Go to **Projects**, select a project, select policy, and select **Tag Immutability**. ![Add an immutability rule](../../../img/tag-immutability.png)