Какое правильное имя профиля AppArmor соответствует политике Azure (EnforceAppArmorProfile)?

#azure #azure-policy #azure-aks #azure-security-center

#azure #azure-policy #azure-aks #azure-security-center

Вопрос:

Я пытаюсь указать правильное значение параметра для политики Azure с именем «Переопределение или отключение профиля AppArmor контейнеров должно быть ограничено» allowedProfiles параметр.

Из документов k8s я могу kubectl exec <POD_NAME> --namespace="<NAMESPACE>" -- cat /proc/1/attr/current узнать, какие профили включены. При запуске его с несколькими модулями я вижу, что в основном включен следующий профиль:

 cri-containerd.apparmor.d
 

Однако, когда я пытаюсь ввести это в параметр политики allowedProfiles (значение было [ "cri-containerd.apparmor.d" ] ), это не делает ресурс работоспособным. Я также пытался использовать значения в подсказке параметра (т.Е. [ "runtime/default", "docker/default"] ), Но эффект был тот же: все еще нездоровый ресурс.

Комментарии:

1. Привет @RobertSkarzycki, согласно встроенной политике, разрешенные значения могут быть пустыми, если вы хотите заблокировать все, или, если хотите, вы можете указать разрешенные значения способом, который вы уже используете.

2. но в соответствии с вашим вопросом, я понимаю, что AKS является существующим ресурсом, и затем вы применяете политику, которая остается без претензий даже после того, как вы указали допустимые значения. если это так, могу ли я узнать, пытались ли вы создать задачу исправления для той же политики? вы можете обратиться к этому документу Корпорации Майкрософт о том , как сделать то же самое .

3. @AnsumanBal-MT, означает ли это, что изменения в назначении политики (установка значения параметра) не применяются к существующему ресурсу? Это было бы странно, поскольку другие политики скорее проверяют существующие ресурсы…

4. да, другие политики также нуждаются в восстановлении существующих ресурсов

Ответ №1:

Во-первых, укажите разрешенные имена профилей в качестве входных данных для ограничения (политики). Вы можете использовать «время выполнения / по умолчанию», если хотите использовать все, что поставляется с AKS. В качестве альтернативы создайте свой собственный профиль AppArmor и передайте его как разрешенный.

Во-вторых, в ваших определениях YAML (для модулей, развертываний, заданий и т. Д.) Вам Необходимо убедиться, что вы действительно используете профиль AppArmor, т. Е. Для модулей:

 ...
annotations:
  container.apparmor.security.beta.kubernetes.io/pod-allowed: runtime/default
  container.apparmor.security.beta.kubernetes.io/pod-allowed-sidecar: runtime/default
...
 

Комментарии:

1. Хм … @dmusial, но что, если я не хочу явно использовать какой-либо из профилей? Я вынужден устанавливать runtime/default ? И что такое профиль cri-containerd.apparmor.d , который я могу найти как явно включенный, но он не установлен в моих YAMLs?

2. Я не знаю ни о каком механизме в k8s, который позволил бы вам неявно указывать профиль AppArmor по умолчанию для всех объектов. Чтобы применить профиль AppArmor, вам необходимо внести изменения в существующие YAMLS. Что касается cri-containerd.apparmor.d, это профиль AppArmor контейнера по умолчанию, он будет использоваться, если вы укажете ‘runtime / default’ в ваших YAMLs.