New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
k8s: Restrict configuring reserved:init policy via CNP #28007
Merged
Merged
+176
−12
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Change the expected test for policies that apply to reserved:init pod to assume that CCNP is used to configure this type of policy. Signed-off-by: Joe Stringer <joe@cilium.io>
Typically if the policy target EndpointSelector does not include a namespace, parsing will inject the namespace to ensure that only Pods within the same namespace can be selected. Furthermore, for peer EndpointSelectors there is a similar behaviour where ingress or egress is allowed only to the current namespace unless the user specifies which namespace the peer exists in. However, these defaults did not previously apply to policies that select the reserved:init Identity, since this Identity is not inherently namespaced, and hence automatically injecting the namespace would cause the policy to no longer match this Identity. The reserved:init Identity was introduced in order to allow a different policy to apply to Pods as they start up, iff the full Identity of those workloads cannot be determined when they are first connecting to the Cilium network (CNI ADD). In order to support this special reserved:init Identity, various exceptions were introduced into CiliumNetworkPolicy parser that removed the automatic insertion of namespace into the policies when there were label matches for the reserved:init namespace. The awkward part about this abstraction early on was that there was no way to directly associate the reserved:init Identity to any specific Kubernetes namespace, and yet CiliumNetworkPolicy was always inherently tied to a specific namespace. Since the introduction of the reserved:init Identity, CiliumClusterwideNetworkPolicy was also introduced, which is a much better fit for the ability to select endpoints that are not inherently namespaced. This patch deprecates support for applying network policies for the reserved:init Identity via CiliumNetworkPolicy in favour of CiliumClusterwideNetworkPolicy. As a benefit, this allows us to simplify the logic that applies the namespaces into the policies and reduce the likelihood of misconfigurations. Signed-off-by: Joe Stringer <joe@cilium.io>
joestringer
added
release-note/bug
This PR fixes an issue in a previous release of Cilium.
sig/policy
Impacts whether traffic is allowed or denied based on user-defined policies.
needs-backport/1.12
needs-backport/1.13
This PR / issue needs backporting to the v1.13 branch
needs-backport/1.14
This PR / issue needs backporting to the v1.14 branch
labels
Sep 7, 2023
maintainer-s-little-helper
bot
added
the
dont-merge/needs-release-note-label
The author needs to describe the release impact of these changes.
label
Sep 7, 2023
maintainer-s-little-helper
bot
removed
the
dont-merge/needs-release-note-label
The author needs to describe the release impact of these changes.
label
Sep 7, 2023
Extend the CNP validation (including preflight checks) to warn users that they are using a policy configuration that is no longer supported. Signed-off-by: Joe Stringer <joe@cilium.io>
/test |
joestringer
added
the
backport/author
The backport will be carried out by the author of the PR.
label
Sep 8, 2023
lambdanis
approved these changes
Sep 8, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
docs ok
ferozsalam
added
release-blocker/1.12
This issue will prevent the release of the next version of Cilium.
release-blocker/1.13
This issue will prevent the release of the next version of Cilium.
release-blocker/1.14
This issue will prevent the release of the next version of Cilium.
labels
Sep 8, 2023
aanm
approved these changes
Sep 8, 2023
1 task
This was referenced Sep 8, 2023
joestringer
added
backport-pending/1.14
The backport for Cilium 1.14.x for this PR is in progress.
and removed
needs-backport/1.14
This PR / issue needs backporting to the v1.14 branch
labels
Sep 8, 2023
maintainer-s-little-helper
bot
moved this from Needs backport from main
to Backport pending to v1.14
in 1.14.2
Sep 8, 2023
joestringer
added
backport-pending/1.13
The backport for Cilium 1.13.x for this PR is in progress.
and removed
needs-backport/1.13
This PR / issue needs backporting to the v1.13 branch
labels
Sep 8, 2023
maintainer-s-little-helper
bot
moved this from Needs backport from main
to Backport pending to v1.13
in 1.13.7
Sep 8, 2023
maintainer-s-little-helper
bot
moved this from Needs backport from main
to Backport pending to v1.12
in 1.12.14
Sep 8, 2023
maintainer-s-little-helper
bot
moved this from Backport pending to v1.12
to Needs backport from main
in 1.12.14
Sep 8, 2023
maintainer-s-little-helper
bot
moved this from Needs backport from main
to Backport pending to v1.12
in 1.12.14
Sep 8, 2023
joestringer
added
backport-done/1.14
The backport for Cilium 1.14.x for this PR is done.
and removed
backport-pending/1.14
The backport for Cilium 1.14.x for this PR is in progress.
labels
Sep 8, 2023
maintainer-s-little-helper
bot
moved this from Backport pending to v1.14
to Backport done to v1.14
in 1.14.2
Sep 8, 2023
joestringer
added
backport-done/1.13
The backport for Cilium 1.13.x for this PR is done.
and removed
backport-pending/1.13
The backport for Cilium 1.13.x for this PR is in progress.
labels
Sep 9, 2023
maintainer-s-little-helper
bot
moved this from Backport pending to v1.13
to Backport done to v1.13
in 1.13.7
Sep 9, 2023
maintainer-s-little-helper
bot
moved this from Backport pending to v1.13
to Backport done to v1.13
in 1.13.7
Sep 9, 2023
joestringer
added
backport-done/1.12
The backport for Cilium 1.12.x for this PR is done.
and removed
backport-pending/1.12
labels
Sep 9, 2023
maintainer-s-little-helper
bot
moved this from Backport pending to v1.12
to Backport done to v1.12
in 1.12.14
Sep 9, 2023
This was referenced Sep 9, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
backport/author
The backport will be carried out by the author of the PR.
backport-done/1.12
The backport for Cilium 1.12.x for this PR is done.
backport-done/1.13
The backport for Cilium 1.13.x for this PR is done.
backport-done/1.14
The backport for Cilium 1.14.x for this PR is done.
release-blocker/1.12
This issue will prevent the release of the next version of Cilium.
release-blocker/1.13
This issue will prevent the release of the next version of Cilium.
release-blocker/1.14
This issue will prevent the release of the next version of Cilium.
release-note/bug
This PR fixes an issue in a previous release of Cilium.
sig/policy
Impacts whether traffic is allowed or denied based on user-defined policies.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Typically if the policy target EndpointSelector does not include a
namespace, parsing will inject the namespace to ensure that only Pods
within the same namespace can be selected. Furthermore, for peer
EndpointSelectors there is a similar behaviour where ingress or egress
is allowed only to the current namespace unless the user specifies which
namespace the peer exists in. However, these defaults did not previously
apply to policies that select the reserved:init Identity, since this
Identity is not inherently namespaced. Automatically injecting the
namespace would cause the policy to no longer match this Identity.
The reserved:init Identity was introduced in order to allow a different
policy to apply to Pods as they start up, iff the full Identity of those
workloads cannot be determined when they are first connecting to the
Cilium network (CNI ADD). In order to support this special reserved:init
Identity, various exceptions were introduced into CiliumNetworkPolicy
parser that removed the automatic insertion of namespace into the
policies when there were label matches for the reserved:init namespace.
The awkward part about this abstraction early on was that there was no
way to directly associate the reserved:init Identity to any specific
Kubernetes namespace, and yet CiliumNetworkPolicy was always inherently
tied to a specific namespace. Since the introduction of the
reserved:init Identity, CiliumClusterwideNetworkPolicy was also
introduced, which is a much better fit for the ability to select
endpoints that are not inherently namespaced. This is because CCNP is
also not restricted to any specific namespace, it applies to Endpoints
in all namespaces. This patch proposes to even extend that policy to
apply to Endpoints that are not inside a namespace, such as Endpoints
with the
reserved:init
Identity.This patch removes support for applying network policies for the
reserved:init Identity via CiliumNetworkPolicy in favour of
CiliumClusterwideNetworkPolicy. As a benefit, this allows us to simplify
the logic that applies the namespaces into the policies and reduce the
likelihood of misconfigurations.