ABC αž“αŸƒαžŸαž“αŸ’αžαž·αžŸαž»αžαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes: αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž αžŸαžœαž“αž€αž˜αŸ’αž˜

ABC αž“αŸƒαžŸαž“αŸ’αžαž·αžŸαž»αžαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes: αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž αžŸαžœαž“αž€αž˜αŸ’αž˜

αž˜αž·αž“αž™αžΌαžšαž˜αž·αž“αž†αžΆαž”αŸ‹ αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŽαžΆαž˜αž½αž™ αž”αž‰αŸ’αž αžΆαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž€αžΎαžαž‘αžΎαž„αŸ– αž€αžΆαžšαž’αžΆαž“αžΆαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹ αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€αžŸαž·αž‘αŸ’αž’αž· αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαžœαž“αž€αž˜αŸ’αž˜ αž“αž·αž„αž€αž·αž…αŸ’αž…αž€αžΆαžšαž•αŸ’αžŸαŸαž„αŸ—αž‘αŸ€αžαŸ” αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ’αž›αžΆαŸ†αž„... αžŸαž˜αŸ’αž—αžΆαžšαŸˆαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž§αž‘αŸ’αž‘αž·αžŸαžŠαž›αŸ‹αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž™αž“αŸ’αžαž€αžΆαžšαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž“αŸƒ K8s αŸ” αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžœαžΆαž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αž‚αžΆαž›αŸ‹ Kubernetes - αž‡αžΆαž…αŸ†αžŽαž»αž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ”

αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ

αž˜αžΆαž“αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αžΈαžšαž”αŸ’αžšαž—αŸαž‘αž“αŸ…αž€αŸ’αž“αž»αž„ KubernetesαŸ–

  • αž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ - αž‚αžŽαž“αžΈαžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™ Kubernetes API;
  • αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ - αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ "αž’αž˜αŸ’αž˜αžαžΆ" αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž―αž€αžšαžΆαž‡αŸ’αž™αžαžΆαž„αž€αŸ’αžšαŸ…αŸ”

αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžŸαŸ†αžαžΆαž“αŸ‹αžšαžœαžΆαž„αž”αŸ’αžšαž—αŸαž‘αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαžαžΆ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΆαž“αžœαžαŸ’αžαž»αž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes API (αž–αž½αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ - ServiceAccounts) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž“αžΉαž„ namespace αž“αž·αž„αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„ cluster αž“αŸ…αž€αŸ’αž“αž»αž„ objects αž“αŸƒαž”αŸ’αžšαž—αŸαž‘ SecretsαŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ‚αž”αž“αŸαŸ‡ (αž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜) αž˜αžΆαž“αž‚αŸ„αž›αž”αŸ†αžŽαž„αž‡αžΆαž…αž˜αŸ’αž”αž„αžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹ Kubernetes API αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αŸ”

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž˜αŸ’αž˜αžαžΆαž˜αž·αž“αž˜αžΆαž“αž’αžΆαžαž»αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes API αž‘αŸαŸ– αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αž™αž“αŸ’αžαž€αžΆαžšαžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž–αž½αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž“αž»αžŸαŸ’αžŸ αž¬αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αžšαžŸαŸ‹αž“αŸ…αž€αŸ’αžšαŸ…αž…αž„αŸ’αž€αŸ„αž˜αŸ”

αžŸαŸ†αžŽαžΎ API αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž¬αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαž’αž“αžΆαž˜αž·αž€αŸ”

αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž½αž˜αž˜αžΆαž“:

  • αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ - αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ (αž”αŸ’αžšαž€αžΆαž“αŸ‹αž’αž€αŸ’αžŸαžšαžαžΌαž…αž’αŸ†!);
  • αž™αžΌαžŒαžΈ - αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž’αžΆαž“αžŠαŸ„αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž› "αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆ αž“αž·αž„αž”αŸ’αž›αŸ‚αž€αž‡αžΆαž„αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹" αŸ”
  • αž€αŸ’αžšαž»αž˜ - αž”αž‰αŸ’αž‡αžΈαž€αŸ’αžšαž»αž˜αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·;
  • αž”αž“αŸ’αžαŸ‚αž˜ - αžœαžΆαž›αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž™αž“αŸ’αžαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαŸ”

Kubernetes αž’αžΆαž…αž”αŸ’αžšαžΎαž™αž“αŸ’αžαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αŸ– αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš X509, Bearer tokens, αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ, HTTP Basic AuthαŸ” αžŠαŸ„αž™αž”αŸ’αžšαžΎαž™αž“αŸ’αžαž€αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž‚αž˜αŸ’αžšαŸ„αž„αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αŸ– αž–αžΈαž―αž€αžŸαžΆαžšαž‹αž·αžαž·αžœαž“αŸ’αžαžŠαŸ‚αž›αž˜αžΆαž“αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αŸ… OpenID OAuth2 αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžœαžΆαž’αžΆαž…αž”αŸ’αžšαžΎαž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαŸ” αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž…αž„αŸ’αž€αŸ„αž˜αž”αŸ’αžšαžΎαŸ–

  • αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜;
  • X509 - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

αžŸαŸ†αžŽαž½αžšαž’αŸ†αž–αžΈαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‚αžΊαž αž½αžŸαž–αžΈαžœαž·αžŸαžΆαž›αž—αžΆαž–αž“αŸƒαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αž„αŸ‹αžŸαŸ’αž‚αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž―αž„αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž›αž˜αŸ’αž’αž·αž αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™ αž‘αŸ†αž–αŸαžšαž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžš. αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸƒαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš X509 αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αŸαžαŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ (X.509)

αžœαž·αž’αžΈαž”αž»αžšαžΆαžŽαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αŸ–

  • αž‡αŸ†αž“αžΆαž“αŸ‹αž‚αž“αŸ’αž›αžΉαŸ‡αŸ–
    mkdir -p ~/mynewuser/.certs/
    openssl genrsa -out ~/.certs/mynewuser.key 2048
  • αž”αž„αŸ’αž€αžΎαžαžŸαŸ†αžŽαžΎαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαŸ–
    openssl req -new -key ~/.certs/mynewuser.key -out ~/.certs/mynewuser.csr -subj "/CN=mynewuser/O=company"
  • αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαžΎαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΌαž“αžŸαŸ„ Kubernetes cluster CA αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ (αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžšαžΎαž‚αžŽαž“αžΈαžŠαŸ‚αž›αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαžŸαŸ„ Kubernetes cluster CA αžŠαŸ‚αž›αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„ /etc/kubernetes/pki/ca.key):
    openssl x509 -req -in ~/.certs/mynewuser.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out ~/.certs/mynewuser.crt -days 500
  • αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ–
    • αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž…αž„αŸ’αž€αŸ„αž˜ (αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž‘αžΈαžαžΆαŸ†αž„αž“αŸƒαž―αž€αžŸαžΆαžšαžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš CA αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž…αž„αŸ’αž€αŸ„αž˜αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™)αŸ–
      kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server=https://192.168.100.200:6443
    • αž¬αžšαž”αŸ€αž” αž˜αž·αž“αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ‚αž›αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ† - αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžš root (αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ kubectl αž“αžΉαž„αž˜αž·αž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒ api-server αžšαž”αžŸαŸ‹αž…αž„αŸ’αž€αŸ„αž˜αž‘αŸ):
      kubectl config set-cluster kubernetes  --insecure-skip-tls-verify=true --server=https://192.168.100.200:6443
    • αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ…αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ–
      kubectl config set-credentials mynewuser --client-certificate=.certs/mynewuser.crt  --client-key=.certs/mynewuser.key
    • αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž”αžšαž·αž”αž‘αŸ–
      kubectl config set-context mynewuser-context --cluster=kubernetes --namespace=target-namespace --user=mynewuser
    • αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αžšαž·αž”αž‘αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ–
      kubectl config use-context mynewuser-context

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž§αž”αžΆαž™αž€αž›αžαžΆαž„αž›αžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš .kube/config αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΌαž…αž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ–

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://192.168.100.200:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    namespace: target-namespace
    user: mynewuser
  name: mynewuser-context
current-context: mynewuser-context
kind: Config
preferences: {}
users:
- name: mynewuser
  user:
    client-certificate: /home/mynewuser/.certs/mynewuser.crt
    client-key: /home/mynewuser/.certs/mynewuser.key

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αŸαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαžœαžΆαž„αž‚αžŽαž“αžΈ αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžαž˜αŸ’αž›αŸƒαž“αŸƒαžŸαŸ„αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • certificate-authority
  • client-certificate
  • client-key

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸŠαž·αž“αž€αžΌαžŠαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž½αž€αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎ base64 αž αžΎαž™αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž–αž½αž€αžœαžΆαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αž”αž…αŸ’αž…αŸαž™αž‘αŸ…αžˆαŸ’αž˜αŸ„αŸ‡αžŸαŸ„αŸ” -data, i.e. αžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž› certificate-authority-data αž“αž·αž„αžŠαžΌαž…αŸ”

αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αŸαžαŸ’αžšαž‡αžΆαž˜αž½αž™ kubeadm

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Kubernetes ៑.៑ៀ αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αžαŸ’αžšαž”αžΆαž“αž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž› αžŠαŸ„αž™αžŸαžΆαžšαž€αŸ†αžŽαŸ‚αž’αžΆαž›αŸ‹αž αŸ’αžœαžΆαž“αŸƒαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ kubeadm. αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž―αž€αžŸαžΆαžšβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎβ€‹αžŸαŸ„β€‹αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡β€‹αž’αžΆαž…β€‹αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆαŸ–

kubeadm alpha kubeconfig user --client-name=mynewuser --apiserver-advertise-address 192.168.100.200

NBαŸ– αž‘αžΆαž˜αž‘αžΆαžš αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž•αŸ’αžŸαžΆαž™αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜ αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ api-server config αžŠαŸ‚αž›αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ… /etc/kubernetes/manifests/kube-apiserver.yaml.

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž›αž‘αŸ’αž’αž•αž›αž“αžΉαž„αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž‘αŸ…αž‡αžΆ stdout αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„ ~/.kube/config αž‚αžŽαž“αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž¬αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ KUBECONFIG.

αž‡αžΈαž€αž€αžΆαž“αŸ‹αžαŸ‚αž‡αŸ’αžšαŸ…

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αž„αŸ‹αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž±αŸ’αž™αž”αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž:

αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž

αž‚αžŽαž“αžΈαžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αž·αž“αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž’αŸ’αžœαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž›αžΎαž…αž„αŸ’αž€αŸ„αž˜αž‘αŸαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž Kubernetes αž’αž“αž»αžœαžαŸ’αžαž™αž“αŸ’αžαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαŸ”

αž˜αž»αž“αž–αŸαž›αž€αŸ†αžŽαŸ‚ 1.6 Kubernetes αž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαž—αŸαž‘αž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŠαŸ‚αž›αž αŸ…αžαžΆ ABAC (αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ) αŸ” αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαžœαžΆαž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžš. αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαž€αŸαžšαŸ’αžαž·αŸαžŠαŸ†αžŽαŸ‚αž› αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž“αŸ…αžαŸ‚αž’αžΆαž…αž”αŸ’αžšαžΎαžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαž—αŸαž‘αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αžœαž·αž’αžΈαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ (αž“αž·αž„αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“) αž“αŸƒαž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ RBAC (αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ„αž™αžαž½αž“αžΆαž‘αžΈ) αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαžαžΆαž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αžαžΆαŸ†αž„αž–αžΈαž€αŸ†αžŽαŸ‚ Kubernetes ៑.៑ៀ. RBAC αž’αž“αž»αžœαžαŸ’αžαž‚αŸ†αžšαžΌαžŸαž·αž‘αŸ’αž’αž·αžŠαŸ‚αž›αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ”
αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€ RBACαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ Kubernetes api-server αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš --authorization-mode=RBAC. αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ manifest αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ api-server αžŠαŸ‚αž›αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αžαžΆαž˜αž•αŸ’αž›αžΌαžœ /etc/kubernetes/manifests/kube-apiserver.yaml, αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ command. αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ RBAC αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžšαž½αž…αž αžΎαž™αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž‘αŸ†αž“αž„αž‡αžΆαž˜αž·αž“αž‚αž½αžšαž”αžΆαžšαž˜αŸ’αž—αž’αŸ†αž–αžΈαžœαžΆαž‘αŸαŸ– αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžœαžΆαžŠαŸ„αž™αžαž˜αŸ’αž›αŸƒ authorization-mode (αž“αŸ…αž€αŸ’αž“αž»αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžšαž½αž…αž αžΎαž™ kube-apiserver.yaml) αžŠαŸ„αž™αžœαž·αž’αžΈαž“αŸαŸ‡ αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž’αžαŸ’αžαž“αŸαž™αžšαž”αžŸαŸ‹αžœαžΆ αž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž—αŸαž‘αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸƒαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž (node, webhook, always allow) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αžΉαž„αž‘αž»αž€αž€αžΆαžšαž–αž·αž…αžΆαžšαžŽαžΆαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžœαž·αžŸαžΆαž›αž—αžΆαž–αž“αŸƒαžŸαž˜αŸ’αž—αžΆαžšαŸˆαŸ”

αžŠαŸ„αž™αžœαž·αž’αžΈαž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžšαž½αž…αž αžΎαž™ αž’αžαŸ’αžαž”αž‘ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž›αž˜αŸ’αž’αž·αžαžŠαŸ„αž™αžŸαŸ’αž˜αžΎαž—αžΆαž–αž“αŸƒαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ RBAC αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžŠαžΆαž€αŸ‹αž€αž˜αŸ’αžšαž·αžαžαŸ’αž›αž½αž“αžαŸ’αž‰αž»αŸ†αž‘αŸ…αž“αžΉαž„αž”αž‰αŸ’αž‡αžΈαžŸαž„αŸ’αžαŸαž”αž“αŸƒαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž§αž‘αžΆαž αžšαžŽαŸαŸ”

αž’αž„αŸ’αž‚αž—αžΆαž– API αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„ Kubernetes αžαžΆαž˜αžšαž™αŸˆ RBACαŸ–

  • Role ΠΈ ClusterRole - αžαž½αž“αžΆαž‘αžΈαžŠαŸ‚αž›αž”αž˜αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαŸ–
  • Role αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžŸαž·αž‘αŸ’αž’αž·αž€αŸ’αž“αž»αž„αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡;
  • ClusterRole - αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ αžšαž½αž˜αž‘αžΆαŸ†αž„αžœαžαŸ’αžαž»αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜ αžŠαžΌαž…αž‡αžΆαžαŸ’αž“αžΆαŸ†αž„ urls αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αž“αž’αžΆαž“ (ឧ. αž˜αž·αž“αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž’αž“αž’αžΆαž“ Kubernetes - αž§αž‘αžΆαž αžšαžŽαŸ /version, /logs, /api*);
  • RoleBinding ΠΈ ClusterRoleBinding - αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„ Role ΠΈ ClusterRole αž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž€αŸ’αžšαž»αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž¬αž‚αžŽαž“αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ”

Role and RoleBinding entities αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™ namespace αž–αŸ„αž›αž‚αžΊαž§αŸ” αžαŸ’αžšαžΌαžœαžαŸ‚αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ RoleBinding αž’αžΆαž…αž™αŸ„αž„αž‘αŸ…αž›αžΎ ClusterRole αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž‘αžΌαž‘αŸ… αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž–αž½αž€αžœαžΆαŸ”

αžαž½αž“αžΆαž‘αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžŸαž·αž‘αŸ’αž’αž·αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αŸ–

  • αž€αŸ’αžšαž»αž˜ API - αžŸαžΌαž˜αž˜αžΎαž› αž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžš αžŠαŸ„αž™ apiGroups αž“αž·αž„αž›αž‘αŸ’αž’αž•αž› kubectl api-resources;
  • αž’αž“αž’αžΆαž“ (αž’αž“αž’αžΆαž“: pod, namespace, deployment αž›β€‹αž›αŸ”);
  • αž€αž·αžšαž·αž™αžΆαžŸαŸαž–αŸ’αž‘ (αž€αž·αžšαž·αž™αžΆαžŸαŸαž–αŸ’αž‘: set, update αž›β€‹αž›αŸ”)αŸ”
  • αžˆαŸ’αž˜αŸ„αŸ‡αž’αž“αž’αžΆαž“ (resourceNames) - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž’αž“αž’αžΆαž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž αžΎαž™αž˜αž·αž“αž˜αŸ‚αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αž’αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž“αŸαŸ‡αž‘αŸαŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž“αŸƒαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžš αž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžš. αž‡αŸ†αž“αž½αžŸαž˜αž€αžœαž·αž‰ (αž¬αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡) αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž“αžΆαž„αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž’αž„αŸ’αž‚αž—αžΆαž– RBAC

αžŸαžΆαž˜αž‰αŸ’αž‰ RoleαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΈ αž“αž·αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž•αž αž“αž·αž„αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž–αž½αž€αžœαžΆαž€αŸ’αž“αž»αž„αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ target-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: target-namespace
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

αž§αž‘αžΆαž αžšαžŽαŸ: ClusterRoleαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΈ αž“αž·αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž•αž αž“αž·αž„αžαžΆαž˜αžŠαžΆαž“αž–αž½αž€αžœαžΆαž‘αžΌαž‘αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ–

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  # сСкции "namespace" Π½Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ClusterRole задСйствуСт вСсь кластСр
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

αž§αž‘αžΆαž αžšαžŽαŸ: RoleBindingαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ mynewuser "αž’αžΆαž“" pods αž“αŸ…αž€αŸ’αž“αž»αž„ namespace my-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: target-namespace
subjects:
- kind: User
  name: mynewuser # имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ зависимо ΠΎΡ‚ рСгистра!
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role # здСсь Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ β€œRole” ΠΈΠ»ΠΈ β€œClusterRole”
  name: pod-reader # имя Role, Ρ‡Ρ‚ΠΎ находится Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ namespace,
                   # ΠΈΠ»ΠΈ имя ClusterRole, использованиС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ
                   # Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ
  apiGroup: rbac.authorization.k8s.io

αžŸαžœαž“αž€αž˜αŸ’αž˜αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ

αžαžΆαž˜αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸ αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ Kubernetes αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ†αžŽαžΆαž„αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

ABC αž“αŸƒαžŸαž“αŸ’αžαž·αžŸαž»αžαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes: αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž αžŸαžœαž“αž€αž˜αŸ’αž˜

αžŸαž˜αžΆαžŸαž’αžΆαžαž» Kubernetes αžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαžΎαž‚αžΊ api-server. αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαž…αž„αŸ’αž€αŸ„αž˜αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžœαžΆαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž™αž“αŸ’αžαž€αžΆαžšαž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘ "αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš kubectl run?"αŸ”

αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαžœαž“αž€αž˜αŸ’αž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αžΊαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αžœαžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αžαŸ‹αžαŸ’αžšαžΆαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹ Kubernetes API αŸ” αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž™αž”αžΆαž“ αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž“αž·αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αžšαž™αŸˆ API αž“αŸαŸ‡αŸ” αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸαž›αŸ’αž’αž“αŸƒαžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆαž’αžΆαž… (αžŠαžΌαž…αž’αž˜αŸ’αž˜αžαžΆ) αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžš K8s. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž αžΆαž‰αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž‡αžΆαž—αžΆαžŸαžΆαžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž„αŸ”

αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡, αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžœαž“αž€αž˜αŸ’αž˜αž™αžΎαž„αžαŸ’αžšαžΌαžœαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž…αŸ†αž“αž½αž“αž”αžΈαž‘αŸ…αž€αž»αž„αžαžΊαž“αŸαžšαž€αŸ’αž“αž»αž„ api-server αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • --audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml
  • --audit-log-path=/var/log/kube-audit/audit.log
  • --audit-log-format=json

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž”αžΈαž“αŸαŸ‡ αž˜αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαžœαž“αž€αž˜αŸ’αž˜αŸ– αž–αžΈαž€αžΆαžšαž”αž„αŸ’αžœαž·αž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈ webhook αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž”αž„αŸ’αžœαž·αž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αŸ–

  • --audit-log-maxbackup=10
  • --audit-log-maxsize=100
  • --audit-log-maxage=7

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžšαžŸαŸ‹αž“αŸ…αž›αžΎαž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž‘αŸ - αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžš kube-apiserver.

αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžšαž½αž…αž˜αž€αž αžΎαž™ αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ manifest αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ api-server (αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ /etc/kubernetes/manifests/kube-apiserver.yaml), αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ command. αž…αžΌαžšαž™αžΎαž„αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αžΆαŸ†αž„ 3 αž αžΎαž™αžœαž·αž—αžΆαž‚αžœαžΆαŸ–

  1. audit-policy-file - αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžš YAML αžŠαŸ‚αž›αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŸαžœαž“αž€αž˜αŸ’αž˜αŸ” αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž˜αžΆαžαž·αž€αžΆαžšαž”αžŸαŸ‹αžœαžΆαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž’αžΆαž“αž”αžΆαž“αžŠαŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš api-serverαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž—αŸ’αž‡αžΆαž”αŸ‹αžœαžΆαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž‘αŸ…αž•αŸ’αž“αŸ‚αž€αžŸαž˜αžŸαŸ’αžšαž”αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αŸ–
      volumeMounts:
        - mountPath: /etc/kubernetes/policies
          name: policies
          readOnly: true
      volumes:
      - hostPath:
          path: /etc/kubernetes/policies
          type: DirectoryOrCreate
        name: policies
  2. audit-log-path - αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αŸ” αž•αŸ’αž›αžΌαžœαžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αž…αŸ†αž–αŸ„αŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš api-server αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αžΆαžšαž˜αŸ‰αŸ„αž“αžšαž”αžŸαŸ‹αžœαžΆαžαžΆαž˜αžšαž”αŸ€αž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ–
      volumeMounts:
        - mountPath: /var/log/kube-audit
          name: logs
          readOnly: false
      volumes:
      - hostPath:
          path: /var/log/kube-audit
          type: DirectoryOrCreate
        name: logs
  3. audit-log-format - αž‘αž˜αŸ’αžšαž„αŸ‹αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŸαžœαž“αž€αž˜αŸ’αž˜αŸ” αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž‚αžΊ jsonαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αž˜αŸ’αžšαž„αŸ‹αž’αžαŸ’αžαž”αž‘αž…αžΆαžŸαŸ‹αž€αŸαž˜αžΆαž“αž•αž„αžŠαŸ‚αžš (legacy).

αž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αžŸαžœαž“αž€αž˜αŸ’αž˜

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ†αž–αžΈαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžŠαŸ‚αž›αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎαŸ” αž‚αŸ„αž›αž‚αŸ†αž“αž·αžαžŠαŸ†αž”αžΌαž„αž“αŸƒαž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αžŸαžœαž“αž€αž˜αŸ’αž˜αž‚αžΊ level, αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎ. αž–αž½αž€αž‚αŸαž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

  • None - αž€αž»αŸ†αž€αžαŸ‹αžαŸ’αžšαžΆ;
  • Metadata - αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αŸ– αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž–αŸαž›αžœαŸαž›αžΆαžŸαŸ’αž“αžΎαžŸαž»αŸ† αž’αž“αž’αžΆαž“αž‚αŸ„αž›αžŠαŸ… (αž•αž αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αŸ”αž›αŸ”) αž”αŸ’αžšαž—αŸαž‘αžŸαž€αž˜αŸ’αž˜αž—αžΆαž– (αž€αž·αžšαž·αž™αžΆαžŸαž–αŸ’αž‘) αŸ”αž›αŸ”
  • Request - αž€αžαŸ‹αžαŸ’αžšαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆ αž“αž·αž„αž•αŸ’αž“αŸ‚αž€αžŸαŸ†αžŽαžΎαŸ”
  • RequestResponse - αž€αžαŸ‹αžαŸ’αžšαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆ αžŸαŸ’αž“αžΎαžšαžŸαž»αŸ† αž“αž·αž„αž•αŸ’αž“αŸ‚αž€αž†αŸ’αž›αžΎαž™αžαž”αŸ”

αž–αžΈαžšαž€αž˜αŸ’αžšαž·αžαž…αž»αž„αž€αŸ’αžšαŸ„αž™ (Request ΠΈ RequestResponse) αž€αž»αŸ†αž€αžαŸ‹αžαŸ’αžšαžΆαžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž…αžΌαž›αž”αŸ’αžšαžΎαž’αž“αž’αžΆαž“ (αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎ urls αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αž“αž’αžΆαž“)αŸ”

αžŸαŸ†αžŽαžΎαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž•αž„αžŠαŸ‚αžšαŸ” αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”:

  • RequestReceived - αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ†αžŽαžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŠαŸ„αž™ processor αž“αž·αž„αž˜αž·αž“αž‘αžΆαž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαžαžΆαž˜αžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αž“αŸƒ processors αŸ”
  • ResponseStarted - αž€αŸ’αž”αžΆαž›αž†αŸ’αž›αžΎαž™αžαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž»αž“αž–αŸαž›αžŠαŸ‚αž›αž•αŸ’αž“αŸ‚αž€αž†αŸ’αž›αžΎαž™αžαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαŸ” αž”αž„αŸ’αž€αžΎαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αžΌαžš (αž§αž‘αžΆαž αžšαžŽαŸ watch);
  • ResponseComplete - αž’αž„αŸ’αž‚αž—αžΆαž–αž†αŸ’αž›αžΎαž™αžαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎ αž“αžΉαž„αž˜αž·αž“αž•αŸ’αž‰αžΎαž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸαŸ”
  • Panic - αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž˜αž·αž“αž”αŸ’αžšαž€αŸ’αžšαžαžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ†αž›αž„αž‡αŸ†αž αžΆαž“αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎ omitStages.

αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž™αžΎαž„αž’αžΆαž…αž–αžŽαŸŒαž“αžΆαž•αŸ’αž“αŸ‚αž€αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžαž»αžŸαŸ—αž‚αŸ’αž“αžΆαŸ” αž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ”

αžŠαŸαž˜αž·αž“ kubelet αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„ manifest αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ api-server αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžŽαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž»αž„αžαžΊαž“αŸαžšαž‘αžΎαž„αžœαž·αž‰αž‡αžΆαž˜αž½αž™ api-serverαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αŸ– αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αž·αž“αž’αžΎαž–αžΎαžŠαŸ„αž™αžœαžΆαŸ”. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ api αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αžŠαŸƒαŸ” αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ api-server αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆ pod αž‹αž·αžαž·αžœαž“αŸ’αž, αž€αŸ’αžšαž»αž˜ kubectl delete αž“αžΉαž„αž˜αž·αž“αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αžœαžΆαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αž‘αŸαŸ” αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αžŠαŸƒ docker stop αž“αŸ…αž›αžΎ kube-masters αžŠαŸ‚αž›αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŸαžœαž“αž€αž˜αŸ’αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ–

docker stop $(docker ps | grep k8s_kube-apiserver | awk '{print $1}')

αž“αŸ…αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžœαž“αž€αž˜αŸ’αž˜ αžœαžΆαž‡αžΆαž€αžΆαžšαžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž…αž„αž…αžΆαŸ†αžœαžΆαŸ” αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž›αžΎ kube-apiserver αž€αžΎαž“αž‘αžΎαž„. αž‡αžΆαž–αž·αžŸαŸαžŸ αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž”αžšαž·αž”αž‘αžŸαŸ†αžŽαžΎαž€αžΎαž“αž‘αžΎαž„αŸ” αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž‹αž˜αž€αžαžΆαž†αŸ’αž›αžΎαž™αžαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαŸ” αž”αž“αŸ’αž‘αž»αž€αž€αŸαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αžŸαžœαž“αž€αž˜αŸ’αž˜αž•αž„αžŠαŸ‚αžšαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸαŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž―αž€αžŸαžΆαžšαžŸαžΆαž˜αž‰αŸ’αž‰ policyαžŠαžΎαž˜αŸ’αž”αžΈαž€αžαŸ‹αžαŸ’αžšαžΆαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž“αŸ…αž€αž˜αŸ’αžšαž·αž Metadata:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata

αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž”αž‰αŸ’αž‡αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ (Users ΠΈ ServiceAccounts) αž“αž·αž„αž€αŸ’αžšαž»αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸαŸ‡αž‡αžΆαžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž’αžΎαž–αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžαŸ‹αžαŸ’αžšαžΆαž’αŸ’αžœαžΈαŸ—αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž€αž˜αŸ’αžšαž·αž Request:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: None
    userGroups:
      - "system:serviceaccounts"
      - "system:nodes"
    users:
      - "system:anonymous"
      - "system:apiserver"
      - "system:kube-controller-manager"
      - "system:kube-scheduler"
  - level: Request

αžœαžΆαž€αŸαž’αžΆαž…αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ„αž›αžŠαŸ…αž•αž„αžŠαŸ‚αžšαŸ–

  • αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ (namespaces);
  • αž€αž·αžšαž·αž™αžΆαžŸαŸαž–αŸ’αž‘ (αž€αž·αžšαž·αž™αžΆαžŸαŸαž–αŸ’αž‘: get, update, delete αž αžΎαž™β€‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž);
  • αž’αž“αž’αžΆαž“ (αž’αž“αž’αžΆαž“, αžˆαŸ’αž˜αŸ„αŸ‡: pod, configmaps αž›) αž“αž·αž„αž€αŸ’αžšαž»αž˜αž’αž“αž’αžΆαž“ (apiGroups).

αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹! αž€αŸ’αžšαž»αž˜αž’αž“αž’αžΆαž“ αž“αž·αž„αž’αž“αž’αžΆαž“ (αž€αŸ’αžšαž»αž˜ API ឧ. apiGroups) αž€αŸαžŠαžΌαž…αž‡αžΆαž€αŸ†αžŽαŸ‚αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ–

kubectl api-resources
kubectl api-versions

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŸαžœαž“αž€αž˜αŸ’αž˜αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž‡αžΆαž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αž”αŸ†αž•αž»αžαž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžš Alibaba Cloud:

apiVersion: audit.k8s.io/v1beta1
kind: Policy
# НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π΄ΠΈΡŽ RequestReceived
omitStages:
  - "RequestReceived"
rules:
  # НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ события, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ°Π»ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ опасными:
  - level: None
    users: ["system:kube-proxy"]
    verbs: ["watch"]
    resources:
      - group: "" # это api group с пустым ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ относятся
                  # Π±Π°Π·ΠΎΠ²Ρ‹Π΅ рСсурсы Kubernetes, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ β€œcore”
        resources: ["endpoints", "services"]
  - level: None
    users: ["system:unsecured"]
    namespaces: ["kube-system"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["configmaps"]
  - level: None
    users: ["kubelet"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    userGroups: ["system:nodes"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    users:
      - system:kube-controller-manager
      - system:kube-scheduler
      - system:serviceaccount:kube-system:endpoint-controller
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # core
        resources: ["endpoints"]
  - level: None
    users: ["system:apiserver"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["namespaces"]
  # НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ обращСния ΠΊ read-only URLs:
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # НС Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСния, относящиСся ΠΊ Ρ‚ΠΈΠΏΡƒ рСсурсов β€œΡΠΎΠ±Ρ‹Ρ‚ΠΈΡβ€:
  - level: None
    resources:
      - group: "" # core
        resources: ["events"]
  # РСсурсы Ρ‚ΠΈΠΏΠ° Secret, ConfigMap ΠΈ TokenReview ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ  сСкрСтныС Π΄Π°Π½Π½Ρ‹Π΅,
  # поэтому Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ связанных с Π½ΠΈΠΌΠΈ запросов
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # ДСйствия Ρ‚ΠΈΠΏΠ° get, list ΠΈ watch ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ рСсурсоёмкими; Π½Π΅ Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡ…
  - level: Request
    verbs: ["get", "list", "watch"]
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для стандартных рСсурсов API
  - level: RequestResponse
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… запросов
  - level: Metadata

αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸαž›αŸ’αž’αž˜αž½αž™αž‘αŸ€αžαž“αŸƒαž‚αŸ„αž›αž“αž™αŸ„αž”αžΆαž™αžŸαžœαž“αž€αž˜αŸ’αž˜αž‚αžΊ αž‘αž˜αŸ’αžšαž„αŸ‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„ GCE.

αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αžΎαž™αžαž”αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαž…αŸ†αž–αŸ„αŸ‡αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŸαžœαž“αž€αž˜αŸ’αž˜ αžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž… αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈ webhook. αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹ αž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžšαžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž‘αž»αž€αžœαžΆαž±αŸ’αž™αž“αŸ…αž€αŸ’αžšαŸ…αžœαž·αžŸαžΆαž›αž—αžΆαž–αž“αŸƒαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ”

αž›αž‘αŸ’αž’αž•αž›

αž’αžαŸ’αžαž”αž‘αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αž“αŸƒαž™αž“αŸ’αžαž€αžΆαžšαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž‚αžŽαž“αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ αž”αŸ†αž”αŸ‚αž€αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž“αž·αž„αž€αžαŸ‹αžαŸ’αžšαžΆαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ” αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžœαžΆαž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž”αŸ’αžšαžˆαž˜αž˜αž»αžαž“αžΉαž„αž”αž‰αŸ’αž αžΆαž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαž¬αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ” αžαŸ’αž‰αž»αŸ†αž€αŸαžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž’αŸ’αž“αž€αž’αžΆαž“αž”αž‰αŸ’αž‡αžΈαžŸαž˜αŸ’αž—αžΆαžšαŸˆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž“αŸ…αž€αŸ’αž“αž»αž„ "PS" - αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸ αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž’αŸ’αž“αž€αŸ”

PS

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹