Обновление записи связки ключей вручную предотвращает последующий доступ к инструментам с графическим интерфейсом: всегда запрашивается разрешение

Я наткнулся на это, используя Tunnelblick и Viscosity. Добавляя конфигурацию к этим инструментам VPN, можно в графическом интерфейсе при первом подключении указать пользователя и пароль и сохранить их в связке ключей. Следующие подключения будут использовать сохраненные учетные данные из цепочки для ключей.

Однако, если я изменю пароль в связке ключей с помощью команды терминала безопасности (add-generic-password -Usaw) или через приложение доступа к связке ключей, впоследствии и Tunnelblick, и Viscosity покажут «Разрешение на доступ к связке ключей: [Разрешить, Разрешить всегда, отменить ]"-диалог, если я попытаюсь подключиться в следующий раз.

Есть ли способ предотвратить этот диалог?

  • Я немного просмотрел исходный код Tunnelblick, но не смог найти проверку на «подделку связки ключей» или что-либо, что могло бы вызвать этот диалог со стороны Tunnelblick.
  • Если это настраиваемая защита на уровне ОС?
Если вы редактируете запись связки ключей вне приложения, для меня имеет смысл, что OS X предложит вам подтвердить, что вы хотите, чтобы приложение могло получить к ней доступ. Когда вы нажимаете «Разрешить всегда», он не запоминает этот параметр?
С «Разрешить всегда» он запоминает, пока пароль не будет изменен (снова). Однако я сомневаюсь, что это имеет смысл, что это не настраивается. Вам нужны повышенные привилегии пользователя (дважды), чтобы изменить запись, почему вы должны быть проинформированы снова при первом доступе. Я понимаю, что некоторая «проверка целостности» может быть полезна, но это не уловимое предупреждение, это всплывающее окно с графическим интерфейсом, как только вы пытаетесь получить доступ к цепочке ключей (если я правильно понимаю исходный код Tunnelblick).
Несколько приложений могут получить доступ к одному элементу связки ключей. В вашем случае вы изменяете элемент и пытаетесь снова использовать его в том же приложении, но снова вы изменяете его вне сферы действия приложения, которому вы ранее разрешили его использовать. Поэтому совершенно логично, что OS X хочет подтвердить, что вы намереваетесь разрешить доступ к сохраненным обновленным учетным данным, как если бы приложение пыталось получить доступ к элементу цепочки для ключей, который он не создал.

Ответы (1)

Для macOS Сьерра:

Чтобы добавить объект и разрешить доступ (с приглашением пользователя), используйте параметр «-T Application». (Можно использовать несколько приложений)

security add-generic-password -a "account" -s "name" -w 'password' -c aapl -T /Applications/Utilities/Keychain\ Access.app/Contents/MacOS/Keychain\ Access

Затем, чтобы разрешить доступ без приглашения пользователя, вам необходимо изменить ACL для объекта:

security -v set-generic-password-partition-list -s "name" -S "apple:"

Синтаксис списка разделов не очень хорошо документирован. Возможно, вы сможете увидеть, как Tunnelblick использует ACL, из вывода «цепочка ключей безопасности».

Источник: безопасность человека

Я думаю, что это правильный ответ, однако вы и документация предлагаете использовать security dump-keychainдля поиска примеров вариантов для -S, но я не вижу там ничего, что можно было бы использовать в качестве примера :(