APIGroup
APIGroup містить назву, підтримувані версії та бажану версію групи.
APIGroup містить назву, підтримувані версії та бажану версію групи.
APIResource визначає назву ресурсу та чи є він обмеженим простором імен.
APIVersions перелічує доступні версії, щоб дозволити клієнтам виявляти API за адресою /api, яка є кореневим шляхом для застарілого API v1.
BasicDevice визначає один екземпляр пристрою.
Binding повʼязує один обʼєкт з іншим; наприклад, под привʼязується до вузла за допомогою планувальника.
Condition містить деталі щодо одного аспекту поточного стану цього API ресурсу.
DeleteOptions можуть бути надані під час видалення обʼєкта API.
EventSource містить інформацію про подію.
Eviction виселяє под з його вузла відповідно до певних політик та обмежень безпеки. Є субресурсом Pod. Запит на виклик такого виселення створюється шляхом POST до .../pods/<pod name>/evictions.
FieldSelectorAttributes вказує на обмежений доступ до поля. Розробникам вебхуків рекомендується:
Це робиться для уникнення ще одного CVE-2022-2880 (тобто змусити різні системи погодитися щодо точного способу аналізу запиту — це не те, що ми хочемо), див. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для отримання додаткової інформації.
Для точок доступу *SubjectAccessReview kube-apiserver:
FieldSelectorRequirement є селектором, який містить значення, ключ та оператор, що повʼязує ключ і значення.
FieldsV1 зберігає набір полів у структурі даних, подібній до Trie, у форматі JSON.
Кожен ключ є або '.', що представляє саме поле, і завжди зіставляється з порожнім набором, або рядком, що представляє підполе або елемент. Рядок буде слідувати одному з цих чотирьох форматів: 'f:<name>', де <name> є імʼям поля в структурі або ключем у мапі 'v:<value>', де <value> є точним JSON-форматованим значенням елемента списку 'i:<index>', де <index> є позицією елемента в списку 'k:<keys>', де <keys> є мапою зіставлення полів ключів елемента списку до їх унікальних значень. Якщо ключ зіставляєтсья з порожнім значенням Fields, поле, яке представляє цей ключ, є частиною набору.
Точний формат визначено в sigs.k8s.io/structured-merge-diff
GroupResource визначає Group та Resource, але не вимагає версію. Це корисно для ідентифікації концепцій під час етапів пошуку без частково дійсних типів
GroupVersion містить рядки "group/version" та "version" версії. Зроблено у вигляді struct для збереження розширюваності.
label selector є запитом міток до набору ресурсів. Результат matchLabels та matchExpressions обʼєднується за допомогою AND. Порожній селектор міток відповідає всім обʼєктам. Значення null селектора міток не відповідає жодному обʼєкту.
LabelSelectorAttributes вказує на обмежений доступ за мітками. Розробникам вебхуків рекомендується:
Це робиться для уникнення ще одного CVE-2022-2880 (тобто змусити різні системи погодитися щодо того, як саме аналізувати запит, не є бажаним), див. https://www.oxeye.io/resources/golang-parameter-smuggling-attack для отримання додаткової інформації. Для кінцевих точок *SubjectAccessReview kube-apiserver:
label selector requirement є селектором, який містить значення, ключ та оператор, що повʼязує ключ і значення.
ListMeta описує метадані, які повинні мати синтетичні ресурси, включаючи списки та різні обʼєкти стану. Ресурс може мати лише один з {ObjectMeta, ListMeta}.
LocalObjectReference містить достатньо інформації, щоб дозволити вам знайти вказаний обʼєкт всередині того самого простору імен.
LocalSubjectAccessReview перевіряє, чи може користувач або група виконати дію в заданому просторі імен. Наявність ресурсу з обмеженням за простором імен значно спрощує надання політики з обмеженням за простором імен, яка включає перевірку дозволів.
ManagedFieldsEntry є ідентифікатором робочого процесу, набором полів (FieldSet) та версією групи ресурсу, до якого застосовується цей набір полів.
MatchCondition представляє умову, яка повинна бути виконана, щоб запит був надісланий вебхуку.
MatchResources вирішує, чи запускати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям відповідності. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає має збіг з обома, він виключається)
MicroTime є версією Time з точністю до мікросекунд.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
Селектор вузлів являє собою об’єднання результатів одного або декількох запитів за мітками щодо набору вузлів; іншими словами, він являє собою об’єднання за оператором OR селекторів, представлених термінами селектора вузлів.
Селектор вузлів з нульовим або порожнім значенням не відповідає жодному об’єкту. Вимоги до них об’єднуються логічним оператором AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
NonResourceAttributes містить атрибути авторизації, доступні для запитів, що не стосуються ресурсів, до інтерфейсу Authorizer
NonResourceRule містить інформацію, що описує правило для обʼєктів, які не є ресурсами
ObjectMeta містить метадані, які повинні містити всі ресурси, що зберігаються в системі, зокрема всі об’єкти, які створюють користувачі.
ObjectReference містить достатньо інформації, щоб ви могли перевірити або змінити об’єкт, на який вона посилається.
OwnerReference містить достатньо інформації, щоб ви могли ідентифікувати об’єкт-власник. Об’єкт-власник повинен знаходитися в тому ж просторі імен, що й залежний об’єкт, або бути глобальним, тому поле простору імен відсутнє.
ParamKind є кортежем Group Kind та Version.
ParamRef описує, як знайти параметри, які будуть використані як вхідні дані для виразів правил, застосованих політикою.
Patch надається для того, щоб надати конкретне імʼя та тип тілу запиту Kubernetes PATCH.
PolicyRule містить інформацію, яка описує правило політики, але не містить інформації про те, до кого застосовується правило або до якого простору імен застосовується правило.
Preconditions повинні бути виконані перед виконанням операції (оновлення, видалення тощо).
Quantity — це представлення числа у форматі з фіксованою комою. Воно забезпечує зручну серіалізацію та десеріалізацію у форматах JSON та YAML, а також має доступ до String() та AsInt64().
Формат серіалізації такий:
<quantity> ::= <signedNumber><suffix>
(Зверніть увагу, що <suffix> може бути порожнім, як у випадку з "" у <decimalSI>.)
<digit> ::= 0 | 1 | ... | 9
<digits> ::= <digit> | <digit><digits>
<number> ::= <digits> | <digits>.<digits> | <digits>. | .<digits>
<sign> ::= "+" | "-"
<signedNumber> ::= <number> | <sign><number>
<suffix> ::= <binarySI> | <decimalExponent> | <decimalSI>
<binarySI> ::= Ki | Mi | Gi | Ti | Pi | Ei
(Міжнародна система одиниць; Див.: http://physics.nist.gov/cuu/Units/binary.html)
<decimalSI> ::= m | "" | k | M | G | T | P | E
(Зверніть увагу, що 1024 = 1Ki, але 1000 = 1k; Не ми обирали капіталізацію.)
<decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber>
Незалежно від того, яка з трьох форм експоненти використовується, жодна величина не може перевищувати 2^63-1 за абсолютним значенням, а також не може мати більше 3 знаків після коми. Числа, що перевищують ці межі або є точнішими, будуть обмежені або округлені в більшу сторону. (Наприклад: 0,1 м буде округлено до 1 м.) У майбутньому ці обмеження можуть бути розширені, якщо виникне потреба у більших або менших величинах.
Коли Quantity аналізується з рядка, воно запамʼятовує тип суфікса, який у нього був, і використовує той самий тип під час серіалізації.
Перед серіалізацією Quantity буде приведено до "канонічної форми". Це означає, що експонента/суфікс буде відрегульовано вгору або вниз (з відповідним збільшенням або зменшенням мантиси) таким чином:
Приклади:
Зверніть увагу, що величина НІКОЛИ не буде внутрішньо представлена як число з рухомою комою. Саме в цьому і полягає суть цього підходу.
Неканонічні значення все ще будуть розпізнаватися, якщо вони правильно сформовані, але будуть повторно виведені у своїй канонічній формі. (Тому завжди використовуйте канонічну форму або не порівнюйте їх.)
Цей формат розроблено з метою ускладнити використання цих чисел без написання спеціального коду для їх обробки, в надії, що це спонукає розробників також застосовувати реалізацію з фіксованою комою.
ResourceAttributes включає атрибути авторизації, доступні для запитів ресурсів до інтерфейсу Authorizer
ResourceRule є списком дій, які субʼєкт може виконувати над ресурсами. Порядок у списку не має значення, можуть бути дублікати, і можливо, що список є неповний.
RoleRef містить інформацію, яка вказує на роль, що використовується
RuleWithOperations є кортежем Operations та Resources. Рекомендується переконатися, що всі розширення кортежу є дійсними.
Scale представляє запит на масштабування ресурсу.
SelfSubjectAccessReview перевіряє, чи може поточний користувач виконати дію. Не заповнення spec.namespace означає "у всіх просторах імен". Self є особливим випадком, оскільки користувачі завжди повинні мати можливість перевірити, чи можуть вони виконати дію
SelfSubjectReview містить інформацію про користувача, яку kube-apiserver має про користувача, який робить цей запит. При використанні імперсоніфікації користувачі отримають інформацію про користувача, якого імітують. Якщо використовується імітація або автентифікація за заголовком запиту, будь-які додаткові ключі будуть ігнорувати регістр і повертатися у нижньому регістрі.
SelfSubjectRulesReview перераховує набір дій, які поточний користувач може виконувати в межах простору імен. Отриманий список дій може бути неповним залежно від режиму авторизації сервера та будь-яких помилок, що виникли під час оцінки. SelfSubjectRulesReview слід використовувати інтерфейсами користувача для показу/приховування дій або для швидкого дозволу кінцевому користувачу оцінити свої права. Його НЕ слід використовувати зовнішніми системами для прийняття рішень про авторизацію, оскільки це викликає проблеми з плутаним довіреним, часом життя кешу/скасуванням та правильністю. SubjectAccessReview та LocalAccessReview є правильним способом делегування рішень про авторизацію серверу API.
ServerAddressByClientCIDR допомагає клієнту визначити адресу сервера, яку вони повинні використовувати, залежно від clientCIDR, з яким вони збігаються.
ServiceReference містить посилання на Service.legacy.k8s.io
ShardInfo описує селектор шарда, який був застосований для отримання списку. Його наявність у відповіді списку вказує на те, що список є відфільтрованою підмножиною.
Status є значенням, що повертається для викликів, які не повертають інші обʼєкти.
StatusCause надає більше інформації про помилку api.Status, включаючи випадки, коли виникає кілька помилок.
StatusDetails є набором додаткових властивостей, які МОЖУТЬ бути встановлені сервером для надання додаткової інформації про відповідь. Поле Reason обʼєкта Status визначає, які атрибути будуть встановлені. Клієнти повинні ігнорувати поля, які не відповідають визначеному типу кожного атрибута, і повинні припускати, що будь-який атрибут може бути порожнім, недійсним або недостатньо визначеним.
Subject містить посилання на обʼєкт або ідентичності користувачів, до яких застосовується привʼязка ролі. Це може бути пряме посилання на обʼєкт API або значення для не-обʼєктів, таких як імена користувачів і груп.
SubjectAccessReview перевіряє, чи може користувач або група виконати певну дію.
SubjectRulesReviewStatus містить результат перевірки правил. Ця перевірка може бути неповною залежно від набору авторизаторів, з якими налаштований сервер, та будь-яких помилок, що виникли під час оцінки. Оскільки правила авторизації є адитивними, якщо правило зʼявляється в списку, можна вважати, що субʼєкт має цей дозвіл, навіть якщо список неповний.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Надаються обгортки для багатьох фабричних методів, які пропонує пакет time.
TokenReview намагається автентифікувати токен для відомого користувача. Примітка: запити TokenReview можуть кешуватися втулком веб-хука автентифікації токенів у kube-apiserver.
Под, до якого прикріплено цей Toleration, толерує будь-який taint, що відповідає трійці <key,value,effect> за допомогою оператора <operator>.
TypedLocalObjectReference містить достатньо інформації, щоб дозволити вам знаходити типізований згаданий обʼєкт всередині того ж простору імен.
TypedLocalObjectReference дозволяє посилатися на типізований обʼєкт всередині того ж простору імен.
UserInfo містить інформацію про користувача, необхідну для реалізації інтерфейсу user.Info.
Variable визначає змінну, яка використовується для композиції. Змінна визначається як іменований вираз.
Event представляє окрему подію для спостережуваного ресурсу.
WebhookClientConfig містить інформацію для встановлення TLS-зʼєднання з вебхуком