Устройство¶
Идентичность устройства — локальная идентичность этой установки. Её создают офлайн, до любого аккаунта, и она остаётся здесь, даже если вы никогда не войдёте. Закрытый ключ доказывает, с какого устройства пришло позднее событие синхронизации или attestation.
Это не паспорт устройства и не облачная сессия. Паспорт описывает окружение. Сессии может не быть вовсе. Если сложить эти три вещи в одну, «ещё нет аккаунта» и «ещё нет идентичности устройства» выглядели бы одинаково, а следующие шаги у них разные.
Команды¶
| Команда | Mutability | Confirmation | Когда |
|---|---|---|---|
ai-stp device init |
apply |
none |
создать идентичность этой установки или вернуть существующую |
ai-stp device show |
read |
none |
показать идентичность устройства и где хранится ключ |
ai-stp device reset |
destructive |
explicit_flag |
вывести эту идентичность из строя и создать новую |
device init идемпотентен: второй запуск возвращает идентичность,
которую сделал первый. device show ничего не создаёт. device reset
— другая команда. Она destructive, требует --confirm и не является
способом повторить doctor.
Типичный путь¶
Для локальной работы аккаунт не нужен. Нужна эта идентичность и затем паспорт разработчика. См. Паспорта.
Закрытый ключ живёт в секретном хранилище операционной системы. Если
хранилище недоступно, CLI говорит, что отступил к файлу, и не скрывает
этот факт. credential_store тогда file, а не os_keyring, а
credential_store_detail называет почему.
Не запускайте device reset потому, что doctor сообщил, что
идентичности нет. Исправление «никогда не создавали» — device init.
Reset — чтобы вывести из строя ключ, который эта машина больше не
должна держать.
device init¶
Создать идентичность этой установки или вернуть существующую.
Первому запуску не нужны sudo и аккаунт. Если идентичность уже есть,
команда возвращает её. Ключ она не ротирует. Устройство на платформе
она не регистрирует — это происходит при Входе.
Если секретное хранилище не может держать ключ, конверт всё равно
успешен, и предупреждение говорит об этом. Читайте warnings. Не
считайте откат к файлу молчаливым.
device show¶
Показать идентичность устройства и где хранится ключ.
Это чтение. Если идентичности нет, команда отказывает с
AI_STP_NOT_FOUND, а next_actions называет device init. Наблюдение
не должно создавать состояние.
Закрытого ключа в конверте нет и напечатать его нельзя по построению. Видно публичный материал: идентификатор, открытый ключ, отпечаток и место, где хранится секрет.
device reset¶
Вывести эту идентичность устройства из строя и создать новую.
--confirm обязателен. Без него команда отказывает с
AI_STP_USER_DECISION_REQUIRED. Это решение, а не сломанный флаг.
Выведенный из строя закрытый ключ уничтожается и не восстанавливается.
Выведенный device_id запоминается, чтобы он не вернулся. Локальные
данные — реестр, паспорта, кэшированные байты каталога, индексы
проектов — не трогаются. «Не тронуты» не значит «обратимо»: любой
облачный аккаунт, который доверял старому ключу, должен одобрить
новый, то есть нужен новый вход.
Reset — это не:
- повтор
device init; - способ «починить»
doctor; - выход из сессии (см.
auth logout); - заводской сброс установки.
После reset в retired_device_ids новой идентичности есть старый
идентификатор. Облачный доступ сам не возобновляется. Нужен новый
вход, и аккаунт должен одобрить новый ключ. Локальные паспорта, реестр
и кэшированные байты каталога остаются. Они теперь привязаны к другой
идентичности устройства; sync будет считать это другим подписантом.
Что содержит успешный конверт¶
Все три команды возвращают одну форму в data:
| Поле | Что это |
|---|---|
device_id |
идентификатор устройства этой установки |
public_key |
открытая половина ключа устройства |
key_fingerprint |
короткий отпечаток этого ключа |
state |
active или revoked |
credential_store |
os_keyring или file |
credential_store_detail |
почему выбрано это хранилище |
created_at |
когда создана эта идентичность |
retired_device_ids |
идентификаторы, которые эта установка вывела из строя |
schema_version |
major схемы этого отчёта |
Конверт также несёт ok, warnings, next_actions, request_id,
operation_id и schema_version. После init или reset
предупреждение об откате к файлу всё равно успех.
Идентичность устройства — не паспорт устройства¶
| Объект | Группа команд | Что держит |
|---|---|---|
| Идентичность устройства | device |
device_id, пара ключей, отзыв |
| Паспорт устройства | passport device |
наблюдаемое окружение: ОС, архитектура, установленные harness |
| Облачная сессия | auth |
держит ли это устройство сейчас учётные данные аккаунта |
device show не печатает операционную систему и версии harness. Они
принадлежат passport device show. auth status не печатает
device_id как доказательство сессии: устройство после init есть
всегда, сессии может не быть.
Чего эти команды никогда не делают¶
- не печатают и не экспортируют закрытый ключ;
- не кладут секрет в паспорт, журнал или файл конфигурации;
- не удаляют локальный реестр и кэшированные байты каталога;
- не входят в аккаунт и сами не регистрируют устройство на платформе;
- не пишут target harness.
Типичные отказы¶
| Что видно | Что это значит | Что делать |
|---|---|---|
AI_STP_NOT_FOUND на device show |
идентичность никогда не создавали | ai-stp device init --json |
AI_STP_USER_DECISION_REQUIRED на device reset |
не было --confirm |
ai-stp device reset --confirm --json после явного решения |
credential_store равен file |
секретное хранилище ОС было недоступно | читать credential_store_detail; это сообщают, а не скрывают |
| doctor сообщает, что устройства нет | device show отказал бы так же |
device init, не device reset |
| облачные вызовы падают после reset | старый ключ выведен из строя | task start --intent account --idempotency-key account-session-01 --json |
Связанные страницы¶
| Страница | Зачем |
|---|---|
| Быстрый старт для человека | идентичность первого запуска связным текстом |
| Наблюдение | doctor сообщает device_identity |
| Паспорта | паспорт устройства против идентичности |
| Вход | привязка этого устройства к аккаунту |
| Синхронизация | события, которые подписывает это устройство |
| Устройства на сайте | та же идентичность, как её показывает сайт |
| Диагностика | сбои секретного хранилища и PATH |
Флаги из ai-stp help --agent --json
Если help --agent расходится с флагом на этой странице, прав CLI.
Необязательные флаги здесь не перечислены. Читайте их из дескриптора.
device reset требует --confirm.