Порядок обозначения проектной документации (шифр)
Каждый проект должен иметь свое самостоятельное условное обозначение. Мне приходится работать с многими проектными организациями. Порой, создается впечатление, что некоторые не понимают, как необходимо обозначать проектную документацию.
Обозначение проектной документации состоит из двух частей: базовое обозначение и через дефис указывается марка комплекта чертежей.
Штамп с обозначением документации
В базовое обозначение рекомендуется включать обозначение, присваиваемое проектной организацией, и через дефис — номер здания или сооружения по генплану.
ХХХХ-YY-ZZ
ХХХХ – обозначение проектной организации;
YY- номер здания или сооружения по генплану;
ZZ – марка основного комплекта чертежей.
Например, 2014-1-ЭМ1, 2014-1-ЭМ2, 2014-2-ЭП.
К обозначениям эскизных чертежей добавляют через точку заглавную букву «Н».
Пример: ХХХХ-YY-ZZ.
Текстовые документы, входящие в ведомость прилагаемых документов, должны иметь обозначение с добавлением через точку соответствующих заглавных букв:
СО — для спецификации оборудования;
ЛО — для опросного листа;
ЛС — для локальной сметы;
ВМ — для ведомости потребности в материалах;
ВР — для ведомости объемов монтажных и строительных работ.
Пример: 2014-1-ЭМ.ЛО1
Хочу заметить, у нас (там где я работал и работаю) принято спецификациям присваивать букву «С», а опросным листам – «ОЛ».
Рекомендуются, чтобы обозначение проектной документации имело следующий вид:
Обозначения проектной документации
Как видим, здесь добавляется номер договора генерального проектировщика (а также подрядного, если такой имеется) и год.
Эти рекомендации по обозначению проектной документации представлены в следующих документах:
1 Электротехническая рабочая документация. Общие требования и рекомендации по составу и оформлению. (Взамен ВСН 381-85). Москва 1993.2 Инструкция по оформлению проектной документации.
3 ГОСТ Р 21.1101—2009. Система проектной документации для строительства. Основные требования к проектной и рабочей документации.
А каких правил обозначения ПСД придерживаетесь вы?
Советую почитать:
NormaCS ~ ГОСТ Р 21.1101-2013 ~ Шифр разделов по ГОСТ Р 21.1101-2009 или ГОСТ 21.1101-2013?
akostin, добрый день!
1. В вопросе не написано, зачем нужно было изменять обозначение документа.
В п. 7.1.2 написано, в каких редких случаях можно изменять обозначение:
«Обозначение документа допускается изменять только в случае, когда разным документам ошибочно присвоены одинаковые обозначения или в обозначении документа допущена ошибка».
В этих случаях – да, выпускают разрешение и пишут причину изменения обозначения.
Но если вместо документа с одним обозначением, и совсем не по причине ошибки в обозначении, выпускают другой документ с другим обозначением (например, был 2345-12-АР, а выпустили 2345-12-АР1), то первый документ требуется аннулировать и
В графе 6 разрешения при аннулировании документа в графе делают запись, например, «2345-12-АТХ1 аннулировать». Если взамен аннулированного документа следует пользоваться документом с другим обозначением, то в графе делают запись, например, «2345-12-КЖ1.И-Б1 аннулировать. Заменен чертежом 2345-12-КЖ1.И-Б3».
Но документ с другим обозначением не является очередным изменением (очередной версией) предыдущего документа. Прежний документ был аннулирован и его жизненный цикл на этом закончился. Таблицы изменений в основных надписях и таблицы регистрации изменений в новом документе с другим обозначением не заполняются.
2. В стандарте нет какого-либо запрета на изменение наименования объекта капитального строительства — не написано ни о том, что это допускается, ни о том, что этого нельзя делать. Т.е. если нет специального запрета, то, получается — можно. Но для этого, в первую очередь, необходимо внести изменение в задание на проектирование.
3. О неприемлемости. Это вы и заказчик решаете, что приемлемо и что неприемлемо.
Например, архитектура здания изменилась полностью или изменения в документацию вносит другая организация, которая не хочет связываться с внесением изменений в чужую документацию, подлинников которой у другой организации и нет вовсе, и т.п.
Рабочая документация — определение, состав и разделы
Согласно положениям СНиП 11-01-95, рабочая документация (её состав) в сфере строительства предприятий, сооружений и зданий определяется государственными стандартами СПДС, однако при этом уточняется проектировщиком и заказчиком в ходе составления договора или контракта на проектирование. Отраслевые, республиканские и государственные стандарты в состав рабочей документации не входят. Также, в её состав не входят те чертежи типовых конструкций, узлов и изделий, на которые в чертежах рабочей документации содержаться ссылки.
Содержание статьи
Рабочая документация как стадия составления документации по проекту
Вся документация по проекту может быть представлена в виде пакетов, представляющих три стадии.
- Эскизный проект (предпроектные проработки). Это этап разработки концепции будущего объекта с определением его основных технико-экономических характеристик. По эскизному проекту видно, как объект «посажен» на местности, каким будет его конструктивная схема и объёмно-пространственное решение. Эта стадия выделяется условно. Предпроектные проработки не всегда создаются при подготовке основных пакетов документов. Однако практики считают, что создание эскизного проекта позволяет сэкономить в дальней реализации массу времени, сил и ресурсов.
- Проектная документация. В отличие от предыдущей стадии, это обязательный этап, который подлежит согласованию с государственными органами исполнительной власти. Результатом согласования становится разрешение на возведение объекта. Состав разрабатываемой проектной документации регламентируется ПП РФ № 87, однако фактический состав для каждого конкретного проекта будет индивидуален, поскольку уникальна специфика каждого проекта.
- Рабочая документация. Здесь детально и максимально исчерпывающе разрабатываются те проектные решения, которые обозначались в предыдущей стадии. Рабочая документация включает спецификации, профили инженерных сетей, чертежи оригинальных узлов, и/или аксонометрические схемы. На этой стадии уже нет ряда разделов, представленных и исчерпанных в стадии проектной документации: ООС (перечня мероприятий, связанных с охраной окружающей среды), ПОС (проекта организации строительства), КЕО (свето-технических расчётов естественной освещённости и инсоляции), ИТМ (инженерных и технических мероприятий гражданской обороны) и других.
Данное соотношение двух обязательных форматов документации – проектной и рабочей – пришло на смену ранее действующим нормативам, которые предусматривали иной формат стадийности проектирования с включением в него фазы «ТЭО», фазы «Проект» и «Рабочий проект» (изменения на основании письма Министерства регионального развития РФ №19088-СК/08 — 22.06.2009).
Сейчас (на основании ПП РФ N 87 «О составе разделов проектной документации и требованиях к их содержанию» — 16.02.2008) даётся определение рабочей документации, по которому к ней относится документация, разработанная с целью реализации технических, технологических и архитектурных решений в процессе строительства. Содержание и состав разрабатываемой рабочей документации зависят от требований заказчика (застройщика), которые, в свою очередь, зависят от степени детализации тех решений, которые содержатся в проектной документации, и включены в задание на проектирование.
Минрегион России, на основании ПП РФ №87, в связи с изменениями требований к разделам проектной документаций обнародовал свои рекомендации.
- 40% – проектная документация,
- 60% – рабочая документация.
Эта базовая цена рассчитывается с использованием справочников цен на проектные работы с учётом стадии проектирования. Но указанное соотношение цен может быть скорректировано по договорённости заказчика и исполнителя, которые при принятии решения ориентируются на специфику объектов строительства и полноту разработки обоих типов документации. Также путём согласования между заказчиком (застройщиком) и исполнителем (лицом, осуществляющим подготовку документов) определяется процент базовой цены, если заданием предусмотрена параллельная разработка проектной и рабочей документации в полном или частичном объёмах. Здесь решение так же принимается на основе:
- функционально-технологических особенностей,
- архитектурной специфики,
- конструктивных подходов,
- инженерно-технических требований,
- степени детализации каждого элемента проектирования.
По упомянутой рекомендации Минрегиона России, в случае одновременной разработки обоих типов документации по инициативе заказчика и при согласии экспертной организации, документация может быть вынесена на рассмотрение государственной экспертизы. Структурная схема такой экспертизы предполагает следующую последовательность при представлении документации:
- Проектная организация готовит градостроительную, предпроектную (эскизную) и проектно-сметную документации, с которой знакомится заказчик.
- Заказчик передаёт пакет в экспертный совет при правительстве РФ, инициируя тем самым Государственную комплексную экспертизу.
- Пакет документов последовательно проходит:
- Главгосэкспертизу РФ,
- Министерства РФ по делам гражданской обороны и ЧС, природных ресурсов, здравоохранения и соцразвития, промышленности и энергетики,
- уполномоченные на проведение экспертизы федеральные органы исполнительной власти.
- На основании экспертных мнений выдаётся сводное заключение по результатам проведения экспертизы.
- Документация передаётся на утверждение, после чего, в случае успешного прохождения экспертизы, возвращается к заказчику, а, в случае появления замечаний, – передаётся на доработку проектной организации.
На заключительном этапе заказчик может вносить и свои замечания в подготовку документации, которая возвращается к заказчику после устранения недоработок.
Регламентирование состава рабочей документации
Стандарты СПДС и уточнения со стороны заказчика в задании на проектирование определяют состав разрабатываемой рабочей документации.
История вопроса
Такие термины как «рабочий проект», «рабочая документация» впервые были введены в СНиПах 1.02.01-85, сменив или видоизменив терминологический набор, в котором присутствовали термины «технорабочий проект», «технический проект», «рабочие чертежи» (стандарты СПДС, которые начали разрабатываться в семидесятых годах, распространялись и на «рабочие чертежи»).
СНиП 1. 02.01-85 в части состава рабочей документации был близок ГОСТу 21.101-97, определяющему требования к проектной и рабочей документации, где в пункте 3.2 указывается, что в состав разрабатываемой рабочей документации при проектировании и строительстве зданий и сооружений в общем случае включаются:
- Предназначенные для произведения строительно-монтажных работ рабочие чертежи.
- Документация по ГОСТу 21.501 на строительные изделия.
- Эскизные чертежи нетиповых изделий по ГОСТу 21.114, которые выполняются по необходимости.
- Спецификации оборудования, материалов и изделий по ГОСТу 21.110.
- Другая предусмотренная СПДС документация.
- Сметная документация по установленным формам.
В ГОСТе Р 21.1101-2013, в описании системы проектной документации, пункт 4.2 с подпунктами посвящён рабочей документации, где в её состав включены рабочие чертежи, которые предназначены для проведения монтажных и строительных работ и прилагаемые к ним документы из основного комплекта. Здесь в основной комплект входят рабочие чертежи и схемы, предусмотренные стандартами СПДС. А к перечню прилагаемых документов относят:
- рабочую документацию, чертежи общих видов нетиповых изделий (эскизные чертежи), выполняемые по требованиям ГОСТа 21.114,
- спецификацию изделий, материалов, оборудования, выполняемую по ГОСТу 21.110,
- опросные листы,
- локальную смету по соответствующим формам,
- габаритные чертежи оборудования, выполненные в соответствии с требованиями заводов-изготовителей и другие документы, конкретный состав которых уточняется заданием на проектирование.
В рабочих чертежах, путём указания ссылок на документы, допускается применение типовых конструкций, узлов и изделий с наличием в них рабочих чертежей, но ссылочные документы (включая чертежи и стандарты с чертежами в составе) к рабочей документации не относятся.
Разделы рабочей документации
Состав разрабатываемой рабочей документации в каждом конкретном проекте будет отличаться, но складывается он, как правило, из следующих разделов.
Основные разделы и их шифры (марки):
- Генеральный план (ГП).
- Транспорт (ТР).
- Объединённый раздел генерального плана и транспорта (ГТ).
- Автомобильные дороги (АД).
- Пути железнодорожные (ПЖ).
- Архитектурные решения (АР).
- Объединённый раздел архитектурных и конструктивных решений – архитектурно-строительные решения (АС).
- Технологические решения (ТХ).
- Интерьеры (АИ).
- Технологические коммуникации (ТК).
- Смета на объекты капитального строительства (СД1).
- Мониторинг цен материалов (СД2).
- Комплексная автоматизация (АК).
Разделы, связанные с конструктивными решениями и их шифры (марки):
- Железобетонные конструкции (КЖ).
- Фундаменты и железобетонные конструкции (КЖО).
- Металлические конструкции (КМ).
- Металлические конструкции деталировочные (КМД).
- Конструкции деревянные (КД).
- Статический расчёт (КРР).
Разделы, связанные с электроснабжением и их шифры (марки):
- Наружное электроснабжение (ЭС).
- Электроосвещение (ЭО).
- Наружное электроосвещение (ЭН).
- Силовое электрооборудование (ЭМ).
- Электроснабжение инженерных систем (ЭИС).
Разделы, связанные с водоснабжением и их шифры (марки):
- Гидротехнические решения (ГР).
- Наружные сети системы водоснабжения (НВ).
- Наружные сети системы водоотведения (НК).
- Совместный раздел наружных сетей водоснабжения и водоотведения (НВК).
- Совместный раздел внутренних сетей водоснабжения и водоотведения (ВК).
Разделы, связанные с воздухотоком, тепло- и холодоснабжением и их шифры (марки):
- Пылеудаление (ПУ).
- Вентиляция, кондиционирование и отопление (ОВиК).
- Теплоснабжение (ТС).
- Тепломеханика (ТМ).
- Холодоснабжение (ХС).
- Воздухоснабжение (ВС).
Разделы, связанные с паро- и газоснабжением и их шифры:
- Наружное газообеспечение (ГСН).
- Внутренне газообеспечение (ГСВ).
- Снабжение паром (ПС).
Разделы, связанные с защитными системами, телекоммуникациями и их шифры (марки):
- Радиофикация и телефония (РТ)
- Структурированные кабельные сети (СКС).
- Видеонаблюдение (ВН).
- Охранная сигнализация (ОС).
- Система контроля доступа и его учёта (СКУД).
- Спецпожаротушение (ПТ).
- Антикоррозийная защита (АЗ).
- Тепловая изоляция (ТИ).
Разделы рабочей документации можно представить в виде стандартизированных комплектов, которые могут быть откорректированы в зависимости от особенностей конкретного объекта.
Варианты комплектов рабочей документации
Ниже представлены несколько наиболее распространённых в практике комплектов рабочей документации для объектов производственного назначения.
Генеральный план (ГП), а также объединённый раздел генерального плана и транспорта (ГТ)
Генеральный план и транспортные сооружения (ГОСТы 21.508-93 СПДС) в случае объединения рабочих чертежей в единый комплект по ГОСТу 21.204-93 СПДС.
Состав рабочей документации:
- рабочие чертежи генплана (основной комплект марки ГП) и в едином комплекте с сооружениями транспорта – основной комплект марки ГТ,
- эскизные чертежи общих видов для нетиповых изделий,
- ведомость потребностей в материалах (ГОСТы 21.110),
- ведомость объёмов монтажных и строительных работ (ГОСТы 21.110).
Основной комплект рабочих чертежей генплана:
- общие данные,
- планы: организации рельефа, благоустройства территории, земляных масс, инженерных сетей (сводный),
- разбивочный план,
- выносные фрагменты и элементы (узлы) (ГОСТы 21. 101).
Рабочие чертежи, за исключением плана земляных масс, выполняются на инженерно-топографическом плане.
Технология производства (ТХ)
Рабочие чертежи по разделу технологических решений включают:
- задание на изготовление деталировочных чертежей технологических блоков, которые собирают организации, осуществляющие монтаж,
- чертежи для монтажа технологических трубопроводов и оборудования (основной комплект марки ТХ),
- чертежи специальных видов технологических трубопроводов,
- требования к созданию конструкторской документации для оборудования индивидуального изготовления (ГОСТы 15.001-73), если данные требования не представлены в рабочем проекте.
Основной комплект рабочих чертежей ТХ-марки:
- общие данные,
- монтажная схема соединений,
- расположение оборудования и трубопроводов (чертежи),
- ведомость трубопроводов.
К основному комплекту прилагаются ведомости о потребностях в материалах (ГОСТы 21.109-80) и объёмах монтажных работ (ГОСТы 21.111-84), а также – спецификация оборудования (ГОСТы 21.110-82).
Архитектурные решения (АР, ГОСТ 21.501-93 СПДС)
Для архитектурных решений рабочие чертежи строительно-монтажных работ выполняются в составе основных комплектов с присвоением марки по ГОСТу 21.101. При необходимости, по ним составляется спецификация оборудования (ГОСТы 21.110). На строительно-архитектурных чертежах указываются значения точности геометрических параметров конструкций, сооружений, зданий (ГОСТы 21.113). Требования по величине точности для функциональных геометрических параметров соотносятся с требованиями по величине точности при изготовлении и установке элементов конструкций, разбивки осей путём расчёта по ГОСТу 21780.
Основной комплект рабочих чертежей АР-марки:
- общие данные,
- планы этажей, технического подполья, подвала, технического этажа, чердака,
- фасады,
- разрезы,
- планы полов,
- план крыши (кровли),
- схемы расположения сборных перегородок и их элементов,
- схемы расположения оконных проёмов и элементов заполнения, а также других проёмов,
- выносные фрагменты, элементы (узлы)
- спецификации к схемам расположения (ГОСТы 21. 101).
При объединении строительных и архитектурных решений принимается состав АС.
Пожарная сигнализация (ПС, ГОСТ 25 1241-86)
Рабочие чертежи, по которым производятся строительно-монтажные работы по созданию пожарной защиты, объединяют в основные комплекты по маркам ПС (пожарная сигнализация), ПТ (пожаротушение), ОС (охранно-пожарная и охранная сигнализация). Возможны и другие маркировки – например, АПТ (автоматизированная система пожаротушения, дымоудаления) и др.
Основной комплект рабочих чертежей ПС-марки:
- общие данные,
- выкопировка из генплана, ситуационный план,
- план помещений, узлов управления станции пожаротушения,
- план защищаемых зданий и сооружений (при необходимости – с разводками трубопроводов и кабельными проводками),
- план защищаемых зданий, сооружений с наружными трассами трубопроводов,
- план разводок кабелей, проводов, трубопроводов, расстановки оборудования в защищаемых помещениях, в помещениях узлов управления, насосных станций и пожарных постов, а также – при необходимости – схемы трубопроводов и оборудования насосных станций.
- план заземления,
- разрезы, сечения,
- принципиальная электрическая схема контроля и управления,
- схема электрических соединений, подключений и – при необходимости – общие электросхемы пожарной сигнализации,
- кабельный журнал.
Кроме этого при необходимости в комплект включаются:
- функциональные и структурные схемы АУП,
- ведомость заполнения кабелями труб,
- трубозаготовительная ведомость,
- общие виды (чертежи) нетиповых конструкций и оборудования.
Основные комплекты можно разделять по видам пожаротушения (сигнализации), по видам монтажных работ, по очередям строительства на несколько разных основных комплектов.
Качество рабочей документации
Как оценить качество рабочей документации разобрано в видео ниже. Советуем с ним ознакомиться для более глубокого понимания.
youtube.com/embed/6TpE4y9VOkQ?ecver=2″/>Номер раздела | Наименование раздела проектной документации | Шифр раздела | |
---|---|---|---|
1 | Пояснительная записка | ПЗ | |
2 | Схема планировочной организации земельного участка | ПЗУ | |
3 | Архитектурные решения | АР | |
4 | Конструктивные и объёмно-планировочные решения | КР | |
5 | Сведения об инженерном оборудовании, о сетях инженерно-технического обеспечения, перечень инженерно-технических мероприятий, содержание технологических решений | ИОС | |
6 | Проект организации строительства | ПОС | |
7 | Проект организации работ по сносу или демонтажу объектов капитального стрроительства | ПОД | |
8 | Перечень мероприятий по охране окружающей среды | ООС | |
9 | Мероприятия по обеспечению пожарной безопасности | ПБ | |
10 | Мероприятия по обеспечению доступа инвалидов | ОДИ | |
10 (1) | Мероприятия к обеспечению безопасной эксплуатации объекта капитального строительства | ТБЭ | |
11 | Смета на строительство объектов капитального строительства | СМ | |
11 (1) | Мероприятия по обеспечению соблюдения требований энрергетической эффективности и требований оснащённости зданий, строений и сооружений приборами учёта используемых энергетических ресурсов | ЭЭ | |
12 | Иная документация в случаях, предусмотренных федеральными законами. | ||
Марка | Наименование основного комплекта | Примечание | |
АК | Автоматизация комплексная | При объединении рабочих чертежей автоматизации различных технологических процессов и инженерных систем | |
АТХ | Автоматизация технологических процессов | Документацию на АСУ ТП обозначают в соответствии с ГОСТ 34.201 | |
АПУ | Автоматизация систем пылеудаления | ||
АОВ | Автоматизация систем отопления, вентиляции и кондиционирования | ||
АВК | Автоматизация систем водоснабжения и канализации | ||
АНВК | Автоматизация наружных систем водоснабжения и канализации | ||
АНВ | Автоматизация наружных систем водоснабжения | При разделении основного комплекта АНВК | |
АНК | Автоматизация наружных систем канализации | ||
АГСВ | Автоматизация систем газоснабжения (внутренние устройства) | ||
АГСН | Автоматизация систем газоснабжения (наружные устройства и сети) | ||
АТС | Автоматизация тепломеханических решений тепловых сетей | ||
АТМ | Автоматизация тепломеханических решений котельных | ||
АПТ | Автоматизация систем пожаротушения и дымоудаления | ||
АХС | Автоматизация систем холодоснабжения | ||
АВС | Автоматизация систем воздухоснабжения | ||
АЭС | Автоматизация систем электроснабжения. | ||
Номер | Название | ||
Комплекс стандартов на автоматизированные системы (КСАС) | |||
ГОСТ 34.003-90 | Автоматизированные системы. Термины и определения. | ||
ГОСТ 34.201-89 | Виды, комплектность и обозначение документов при создании автоматизированные систем. | ||
ГОСТ 34.601-90 | Автоматизированные системы. Стадии создания. | ||
ГОСТ 34.602-89 | Техническое задание на создание автоматизированной системы. | ||
ГОСТ 34.603-92 | Виды испытаний автоматизированных систем. | ||
Методические указания | |||
РД 50-34.698-90 | Автоматизированные системы. Требования к содержанию документов. | ||
Система проектной документации для строительства (СПДС) | |||
ГОСТ Р 21.1101-2013 | Основные требования к проектной и рабочей документации. | ||
ГОСТ 21.408-2013 | Правила выполнения рабочей документации автоматизации технологических процессов. | ||
ГОСТ 21.208-2013 | Обозначения условные приборов и средств автоматизации в схемах. | ||
Единая система программной документации (ЕСПД) | |||
ГОСТ 19.101-77 | Виды программ и программных документов. | ||
Единая система конструкторской документации (ЕСКД) | |||
ГОСТ 2.102-2013 | Виды и комплектность конструкторских документов. | ||
ГОСТ 2.601-2013 | Эксплуатационные документы. | ||
Код документа | Наименование документа | Стадия создания АС | ЭД* |
Общесистемные решения (ОР) | |||
ЭП | Ведомость эскизного проекта | ЭП | |
П1 | Пояснительная записка к эскизному проекту | ЭП | |
С0 | Схема организационной структуры | ЭП, ТП | |
С2 | Схема функциональной структуры | ЭП, ТП | |
ТП | Ведомость технического проекта | ТП | |
ВП | Ведомость покупных изделий | ТП | |
П2 | Пояснительная записка к техническому проекту | ТП | |
П3 | Описание автоматизированных функций | ТП | |
П4 | Описание постановки задач (комплекса задач) | ТП | |
Б2* | Локальный сметный расчёт | ТП | |
Б1 | Проектная оценка надёжности системы | ТП, РД | |
ДП | Ведомость держателей подлинников | РД | |
ЭД | Ведомость эксплуатационных документов | РД | + |
Б3 | Локальная смета | РД | |
ПД | Общее описание системы | РД | + |
ПМ | Программа и методика испытаний | РД | |
ФО | Формуляр | РД | + |
ПС | Паспорт | РД | + |
Решения по организационному обеспечению (ОО) | |||
ПВ | Описание организационной структуры | ТП | |
И1 | Методика (технология) автоматизированного проектирования | РД | + |
И2 | Технологическая инструкция | РД | + |
И3 | Руководство пользователя | РД | + |
Решения по техническому обеспечению (ТО) | |||
С1 | Схема структурная комплекса технических средств | ЭП, ТП | |
В9 | Перечень заданий на разработку специализированных (новых) технических средств | ЭП, ТП | |
С3 | Схема автоматизации | ЭП, ТП | |
В3 | Перечень заданий на разработку строительных, электротехнических и других разделов проекта, связанных с созданием системы. | ТП | |
П9 | Описание комплекса технических средств | ТП | |
C8 | План расположения | ТП | |
В4 | Спецификация оборудования | РД | |
В5 | Ведомость потребности в материалах | РД | |
ИЭ | Инструкция по эксплуатации КТС | РД | + |
С4 | Схема соединения внешних проводок | РД | |
С5 | Схема подключения внешних проводок | РД | |
С6 | Таблица соединений и подключений | РД | |
Е1 | Схема деления системы (структурная) | РД | |
В0 | Чертёж общего вида | РД | |
СА | Чертёж установки технических средств | РД | |
СБ | Схема принципиальная | РД | |
С7 | План расположения оборудования и проводок | РД | |
Решения по информационному обеспечению (ИО) | |||
В1 | Перечень входных сигналов | ТП | В2 | Перечень выходных сигналов | ТП |
П5 | Описание информационного обеспечения системы | ТП | |
П6 | Описание организации информационной базы | ТП | |
П7 | Описание систем классификации и кодирования | ТП | |
П8 | Описание массива информации | ТП | |
С9 | Чертёж формы документа (видеокадра) | ТП, РД | |
ВМ | Ведомость машинных носителей информации | РД | + |
В6 | Массив входных данных | РД | + |
В7 | Каталог базы данных | РД | + |
В8 | Состав выходных данных (сообщений) | РД | + |
И4 | Инструкция по формированию и ведению базы данных (набора данных) | РД | + |
Решения по программному обеспечению (ПО) | |||
ПА | Описание программного обеспечения | ТП | |
Решения по математическому обеспечению (МО) | |||
ПБ | Описание алгоритма (проектной процедуры) | ТП |
Маркировка чертежей: ТХ, ТК, ГП, АС, КМД, ЭМ, ЭО, АЗО. Расшифровка
Современное строительство представляет собой сложный комплекс работ монтажных и других работ. При выполнении любого этапа возведения здания используется множество различных конструкций, отличающихся особенности компоновки и соединений.
Инженерная информация об объекте в целом и его отдельных компонентах предоставляется виде чертежей – графическом изображении основных характеристиках конструкций, их компоновке и методах сборки.
Разновидности комплектов чертежей
По своему назначению комплекты строительных чертежей могут содержать информацию об:
- общестроительных работах, — возведении здания и его отделке;
- специальных работах, — прокладке инженерных систем и т.д.
Каждому такому комплекту присваивается наименование и особенная марка. Она, согласно действующим нормативам, составляется их начальных букв названия исходной части проекта. Среди наиболее распространенных:
- ТХ – технология производства;
- ТК – технологические коммуникации;
- ГП – генеральный план;
- АС— архитектурно-строительные решения;
- КМД— конструкции металлические деталировочные;
- ЭМ – силовое электрооборудование;
- ЭО – электрическое освещение;
- АЗО – антикоррозионная защита конструкций.
Профессиональный язык
Полный перечень маркировок различного предназначения более, чем весом. Он представлен в специальной справочной литературе. Для расшифровки непонятной маркировки можно также воспользоваться специальными программами или электронными таблицами.
Маркировки — своего рода профессиональный язык, позволяющий быстро найти нужную документацию тем, кто по роду деятельности работает с большим количеством чертежей. В случае необходимости могут назначаться дополнительные маркировки рабочих чертежей.
Общая система маркировки универсальна. Марка обычно состоит не более чем, из трех прописных букв – выбираемых из изначальных букв наименования комплекта чертежей.
Таким образом, буквенная часть маркировки чертежа информирует о том, к какому комплекту рабочей документации он относится. Цифра после нее указывает порядковый номер чертежа. Такой подход к «идентификации» чертежной документации позволяет систематизировать огромный объем информации, которым отличатся каждая строительная площадка.
Например, если специалист увидит «КМД-4» он поймет, что это обозначает четвертый чертеж комплекта «Конструкции металлические деталировочные».
Компания ООО «НТК» предоставляет широкий перечень услуг по строительству быстромонтируемых зданий: от чертежа до готовой конструкции!
Что такое АС? — это архитектурно-строительные решения проекта: фасад перекрытия кровля
Архитектурное решение здания — авторский замысел объекта с решением функциональных, конструктивных, планировочных требований к нему с учетом соблюдения закрепленных законодательно норм для объектов такого типа, изложенный и обоснованный в текстовой части документации и визуализированный в графической части.
В состав данного раздела входят :
— описание и обоснование планировочной и функциональной организации здания, с поэтажными планами и экспликациями помещений;
— обоснование художественных и объёмно-пространственных решений;
— описание и обоснование композиционных приёмов оформления фасадов, интерьеров объекта с визуализацией их внешнего вида;
— описание решений по отделке помещений основного, вспомогательного, обслуживающего и технического назначения;
— описание решений, принятых для обеспечения должного уровня инсоляции или естественного освещения помещений с постоянным пребыванием людей;
— меры, предпринятые для защиты помещений от шума, вибрации и прочих потенциально вредных воздействий;
— описание решений по цветовой и декоративно-художественной отделке помещений для объектов непроизводственного назначения.
Состав АС зависит от вида документации — стадия П или Р. Состав раздела АС проектной документации (П) берется по постановлению №87 РФ. Состав основного комплекта рабочих чертежей АС рабочей документации (Р) берется по ГОСТ 21.501-93 «Правила выполнения архитектурно-строительных рабочих чертежей», также нужно чтобы проектная и рабочая документация соответствовали ГОСТ Р 21.1101-2009 «Основные требования к проектной и рабочей документации»
В данном разделе представлены примеры по архитектурно-строительным решениям стадии проект «П»:
1. Проект коттеджа 1-2008. Индивидуальный жилой дом. №115-АР (начало) |
2. Проект коттеджа 4-2008. Индивидуальный жилой дом. №115-АР (продолжение) |
3. Проект коттеджа 5-2008. Индивидуальный жилой дом. №115-ОВ (продолжение см. раздел -Отопление и вентиляция) |
4. Проект коттеджа 6-2008. Индивидуальный жилой дом. №115-ЭО (продолжение см. раздел — Электроснабжение) |
5. Реконструкция и расширение КТС-24 с котлами ПТВМ-60 №1, 2 по адресу: ул. В. Кожиной, вл. 21. Общие данные, планы 1-6 этажей, разрезы, фасады по осям, ведомость отделки помещений, конструкции полов, склад соли |
10. Буклет надстройки административного 4-х этажного здания по адресу: г. Москва, ул. Перерва, 23 |
11. Эскизный проект коттеджа. 010.07-АР1. Выпуск 1. Здание каркасное с несущими поперечными рамами, прямоугольное в плане с размерами: длина 13,3 м, ширина 9,6 м, высота 7,1 м, общая площадь — 157 м , жилая — 109 м. |
12. Эскизный проект магазина. 010.07-АР3. Выпуск 1. Здание каркасное с несущими поперечными рамами, прямоугольное в плане с размерами: длина 13,3 м, ширина 9,6 м, высота 7,1 м, общая площадь — 173 м , полезная — 122 м , торговая — 109 м |
13. Эскизный проект офиса. 010.07-АР2. Выпуск 1 Здание каркасное с несущими поперечными рамами, прямоугольное в плане с размерами: длина 13,3 м, ширина 9,6 м, высота 7,1 м, общая площадь — 163 м , полезная — 111 м. |
14. Проект индивидуального жилого дома. Архитектурные чертежи — 115-АР |
16. Проект административно-складского здания Формат dwg |
17. Цех мехмастерской с закрытой стоянкой на 5 леговых и 3 грузовых машины Формат dwg |
18. Теневой навес Формат dwg |
19. Одноэтажное промышленное здание из крупноразмерных элементов. Литейных цех. Формат dwg |
20. Строительный проект. Альбом 1. Архитектурно-строительные решения. Склад сантехники с офисными помещениями ЧТУП «Экоклимат» по ул. Аэродромной в г. Кобрине. Формат dwg |
21. Проектирование одноэтажного производственного здания: План, разрез продольный и поперечный, колонна, фундамент, ферма, узлы. Формат dwg |
22. Строительство двухэтажного каркасного деревянного дачного дома. Общая площадь 67,19м2 |
Реклама на Технавигаторе
Расшифровка ЭГ, ЭС, ЭМ, ЭО, ЭН
Что означает обозначения ЭГ, ЭС, ЭМ, ЭО, ЭНПри разработке материалов в строительстве, заказчики иногда сталкиваются встречаются с непонятными сокращениями и обозначениями. Это также относится к проектной документации, связанной с проектированием электроснабжения. Согласно действующей нормативной документации в составе проектной документации входят обязательные разделы:
ЭГ — означает молниезащиту и заземление;
ЭС – электроснабжение;
ЭМ — электрооборудование для бытовой техники;
ЭО — внутреннее электроосвещение;
ЭН – наружное электроосвещение.
Электрооборудование внутреннее (ЭМ) — проект, в котором указаны места установки потребительского электрооборудования в жилых помещения. Составляется спецификация, планируется схема соединения и автоматы защиты, минимизируются потери электроэнергии.
Пример раздела ЭС
Электроосвещение наружное (ЭН)- описание уличных систем освещения, за исключением линейных объектов. Электроосвещение внутреннее) (ЭО) — проект освещения внутри здания, с подробным описанием местораспределения светильников и структурной распределительной схемы.
Пример раздела ЭВ
Молниезащита зданий (ЭГ) — комплекс технических решений и специальных приспособлений для обеспечения безопасности здания зданий разделяется на внешнюю и внутреннюю (устройства защиты от импульсных перенапряжений).
Проект электроснабжения здания
Что означает аббревиатура ЭОМ ?В зависимости от объема и сложности проекта отдельные разделы могут объединяться. Именно таким объединением и является появление в составе альбома проекта специального раздела с аббревиатурой ЭОМ (расшифровка — «Проектирование внутреннего электрооборудования и освещения»). Данный раздел включается в состав проекта в процессе разработки рабочей документации. В его комплект входят:
— исходные данные;
— текстовая документация;
— графические материалы;
— перечень использованной нормативной документации.
Проектно-Технический Центр «ЛУКАРИНВЕСТ» имеет многолетний успешный опыт в разработке проектной документации. Инженеры компании используют современные методы и технологии, которые позволяют повысить технико-экономические показатели проектируемых сооружений и зданий. Наши проекты строго отвечают требованиям нормативных актов и стандартов.
ПТЦ «ЛУКАРИНВЕСТ» — надежный партнер для Вашего бизнеса.
Получить оценку! Быстро!
23.01.2020Просмотров: 43628
Шифрование и дешифрование данных симметричным ключом
Командная строка
Чтобы использовать Cloud KMS в командной строке, сначала Установите или обновите до последней версии Cloud SDK.
gcloud kms encrypt \ - клавиша клавиша \ - брелок брелок \ - местонахождение местонахождение \ --plaintext-file файл с данными для шифрования \ --ciphertext-file зашифрованные данные из файла в хранилище
Замените ключ именем ключа, который будет использоваться для шифрования.Заменять брелок с названием брелока, на котором находится ключ. Замените расположение на расположение Cloud KMS брелок для ключей. Заменить файл с данными для шифрования и file-to-store-encrypted-data с локальными путями к файлам для чтения данные в виде открытого текста и сохранение зашифрованного вывода.
Для получения информации обо всех флагах и возможных значениях запустите команду с - флаг справки
.
С #
Чтобы запустить этот код, сначала настройте среду разработки C # и установите Cloud KMS C # SDK.
Перейти
Чтобы запустить этот код, сначала настройте среду разработки Go и установите Cloud KMS Go SDK.
Java
Чтобы запустить этот код, сначала настройте среду разработки Java и установите Cloud KMS Java SDK.
js»> Узел.jsЧтобы запустить этот код, сначала настройте среду разработки Node.js и установите Cloud KMS Node.js SDK.
PHP
Чтобы запустить этот код, сначала узнайте об использовании PHP в Google Cloud и установите Cloud KMS PHP SDK.
Python
Чтобы запустить этот код, сначала настройте среду разработки Python и установите Cloud KMS Python SDK.
Рубин
Чтобы запустить этот код, сначала настройте среду разработки Ruby и установите Cloud KMS Ruby SDK.
API
В этих примерах используется curl в качестве HTTP-клиента. для демонстрации использования API. Для получения дополнительной информации об управлении доступом см. Доступ к Cloud KMS API.
При использовании JSON и REST API содержимое должно быть закодировано в кодировке Base-64, прежде чем оно сможет быть зашифрованными с помощью Cloud KMS.
Совет : вы можете кодировать или декодировать данные base64
с помощью команды base64
в Linux или macOS или Base64.exe
команда в Windows. Программирование и сценарии
языки обычно включают библиотеки для кодирования base64. Для командной строки
примеры, см. Кодирование Base64 в
Документация по Cloud Vision API.
Чтобы зашифровать данные, сделайте запрос POST
и предоставьте соответствующий проект и
ключевую информацию и укажите текст в кодировке base64, который будет зашифрован в открытый текст
поле тела запроса.
curl "https://cloudkms.googleapis.com/v1/projects/ идентификатор проекта / location / location / keyRings / key-ring-name / cryptoKeys / key-name : encrypt" \ --запрос "POST" \ --header "авторизация: токен на предъявителя " \ --header "тип содержимого: приложение / json" \ --data "{\" plaintext \ ": \" ввод в кодировке base64 \ "}"
Вот пример полезной нагрузки с данными в кодировке base64:
{ "открытый текст": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo =", }
Командная строка
Чтобы использовать Cloud KMS в командной строке, сначала Установите или обновите до последней версии Cloud SDK.
gcloud кмс расшифровка \ - клавиша клавиша \ - брелок брелок \ - местонахождение местонахождение \ --ciphertext-file путь-к-файлу с зашифрованными-данными \ --plaintext-file путь-к-файлу с открытым текстом
Замените ключ именем ключа, который будет использоваться для дешифрования. Заменять брелок с названием брелока, на котором будет находиться ключ. Замените расположение на расположение Cloud KMS для ключа. звенеть.Замените путь к файлу с зашифрованными данными и file-path-to-store-plaintext с локальными путями файлов для чтения зашифрованные данные и сохранение расшифрованного вывода.
Для получения информации обо всех флагах и возможных значениях запустите команду с - флаг справки
.
C #
Чтобы запустить этот код, сначала настройте среду разработки C # и установите Cloud KMS C # SDK.
Перейти
Чтобы запустить этот код, сначала настройте среду разработки Go и установите Cloud KMS Go SDK.
Java
Чтобы запустить этот код, сначала настройте среду разработки Java и установите Cloud KMS Java SDK.
js»> Node.jsЧтобы запустить этот код, сначала настройте среду разработки Node.js и установите Cloud KMS Node.js SDK.
филиппинских песоЧтобы запустить этот код, сначала узнайте об использовании PHP в Google Cloud и установите Cloud KMS PHP SDK.
Питон
Чтобы запустить этот код, сначала настройте среду разработки Python и установите Cloud KMS Python SDK.
Рубин
Чтобы запустить этот код, сначала настройте среду разработки Ruby и установите Cloud KMS Ruby SDK.
API
В этих примерах используется curl в качестве HTTP-клиента. для демонстрации использования API.Для получения дополнительной информации об управлении доступом см. Доступ к Cloud KMS API.
Расшифрованный текст, возвращаемый в формате JSON из Cloud KMS, является в кодировке base64.
Совет : вы можете кодировать или декодировать данные base64
с помощью команды base64
в Linux или macOS или Base64.exe
команда в Windows. Программирование и сценарии
языки обычно включают библиотеки для кодирования base64. Для командной строки
примеры, см. Кодирование Base64 в
Документация по Cloud Vision API.
Чтобы расшифровать зашифрованные данные, сделайте запрос POST
и предоставьте соответствующий
информацию о проекте и ключе и укажите зашифрованный (зашифрованный) текст, который будет
расшифровывается в поле зашифрованного текста
тела запроса.
curl "https://cloudkms.googleapis.com/v1/projects/ идентификатор проекта / location / location / keyRings / key-ring-name / cryptoKeys / key-name : decrypt" \ --запрос "POST" \ --header "авторизация: токен на предъявителя " \ --header "тип содержимого: приложение / json" \ --data "{\" зашифрованный текст \ ": \" зашифрованный-контент \ "}"
Вот пример полезной нагрузки с данными в кодировке base64:
{ «зашифрованный текст»: «CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ... ", }
Шифрование и дешифрование PDF-документов
О службе шифрования
Служба шифрования позволяет шифровать и расшифровывать документы. Когда документ зашифрован, его содержимое становится нечитаемым. Авторизованный пользователь может расшифровать документ, чтобы получить доступ к содержимому. Если документ PDF зашифрован паролем, пользователь должен указать открытый пароль, прежде чем документ можно будет просмотреть в Adobe Reader или Adobe Acrobat.Аналогичным образом, если документ PDF зашифрован с помощью сертификата, пользователь должен расшифровать документ PDF с помощью открытого ключа, соответствующего сертификату (закрытому ключу), который использовался для шифрования документа PDF.
Вы можете выполнить следующие задачи с помощью службы шифрования:
Шифрование PDF-документов с помощью пароля
При шифровании PDF-документа паролем пользователь должен указать пароль, чтобы открыть PDF-документ в Adobe Reader или Acrobat. Кроме того, перед выполнением с документом другой операции с формами AEM, такой как цифровая подпись документа PDF, необходимо разблокировать документ PDF, зашифрованный паролем.
ПРИМЕЧАНИЕ
Если вы загрузите зашифрованный PDF-документ в репозиторий AEM Forms, он не сможет расшифровать PDF-документ и извлечь содержимое XDP. Не рекомендуется шифровать документ перед его загрузкой в репозиторий AEM Forms. (См. Раздел «Ресурсы для письма».)
Сводка шагов
Чтобы зашифровать PDF-документ с помощью пароля, выполните следующие действия:
- Включить файлы проекта.
- Создайте объект API клиента шифрования.
- Получите PDF-документ для шифрования.
- Установите параметры времени выполнения шифрования.
- Добавьте пароль.
- Сохраните зашифрованный документ PDF как файл PDF.
Включить файлы проекта
Включите необходимые файлы в свой проект разработки. Если вы создаете клиентское приложение с использованием Java, включите необходимые файлы JAR. Если вы используете веб-службы, убедитесь, что вы включили прокси-файлы.
Следующие файлы JAR должны быть добавлены к пути к классу вашего проекта:
- Adobe-livecycle-клиент.банка
- Adobe-usermanager-client. jar
- Adobe-encryption-client.jar
- adobe-utilities.jar (требуется, если формы AEM развернуты на JBoss)
- jbossall-client.jar (требуется, если формы AEM развернуты на JBoss)
Создание объекта API клиента шифрования
Для программного выполнения операции службы шифрования необходимо создать клиент службы шифрования.
Получить PDF-документ для шифрования
Вы должны получить незашифрованный PDF-документ, чтобы зашифровать документ паролем.Если вы попытаетесь защитить уже зашифрованный PDF-документ, вы вызовете исключение.
Установить параметры времени выполнения шифрования
Чтобы зашифровать PDF-документ с помощью пароля, вы указываете четыре значения, включая два значения пароля. Первое значение пароля используется для шифрования PDF-документа и должно быть указано при открытии PDF-документа. Второе значение пароля, называемое значением главного пароля, используется для удаления шифрования из PDF-документа. Значения пароля чувствительны к регистру, и эти два значения пароля не могут быть одинаковыми.
Необходимо указать ресурсы документа PDF для шифрования. Вы можете зашифровать весь PDF-документ, кроме метаданных документа или только его вложения. Если вы зашифруете только вложения документа, пользователю будет предложено ввести пароль при попытке доступа к вложенным файлам.
При шифровании PDF-документа вы можете указать разрешения, связанные с защищенным документом. Указав разрешения, вы можете управлять действиями, которые разрешено выполнять пользователю, открывающему зашифрованный паролем PDF-документ.Например, для успешного извлечения данных формы необходимо установить следующие разрешения:
- PASSWORD_EDIT_ADD
- PASSWORD_EDIT_MODIFY
ПРИМЕЧАНИЕ
Разрешения указаны как значения перечисления PasswordEncryptionPermission
.
Добавьте пароль
После получения незащищенного PDF-документа и установки значений времени выполнения шифрования вы можете добавить пароль к PDF-документу.
Сохранить зашифрованный документ PDF как файл PDF
Вы можете сохранить PDF-документ, зашифрованный паролем, как PDF-файл.
См. Также
Шифрование PDF-документа с помощью Java API
Шифрование PDF-документа с помощью API веб-службы
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Краткое руководство по API службы шифрования
Шифрование PDF-документов с сертификатами
Зашифруйте документ PDF с помощью Java API
Зашифруйте документ PDF паролем с помощью API шифрования (Java):
Включить файлы проекта.
Включите клиентские JAR-файлы, такие как adobe-encryption-client.jar, в путь к классам вашего Java-проекта.
Создайте API клиента шифрования.
- Создайте объект
ServiceClientFactory
, содержащий свойства соединения. - Создайте объект
EncryptionServiceClient
, используя его конструктор и передав объектServiceClientFactory
.
- Создайте объект
Получите PDF-документ для шифрования.
- Создайте объект
java.io.FileInputStream
, представляющий документ PDF для шифрования, используя его конструктор и передавая строковое значение, указывающее расположение документа PDF. - Создайте объект
com.adobe.idp.Document
, используя его конструктор и передав объектjava.io.FileInputStream
.
- Создайте объект
Установите параметры времени выполнения шифрования.
- Создайте объект
PasswordEncryptionOptionSpec
, вызвав его конструктор. - Укажите ресурсы документа PDF для шифрования, вызвав метод
setEncryptOption
объектаPasswordEncryptionOptionSpec
и передав значение перечисленияPasswordEncryptionOption
, которое указывает ресурсы документа для шифрования. Например, чтобы зашифровать весь документ PDF, включая его метаданные и вложения, укажитеPasswordEncryptionOption.ALL
. - Создайте объект
java.util.List
, в котором хранятся разрешения на шифрование, с помощью конструктораArrayList
. - Укажите разрешение, вызвав метод
add
объектаjava.util.List
и передав значение перечисления, соответствующее разрешению, которое вы хотите установить. Например, чтобы установить разрешение, которое позволяет пользователю копировать данные, расположенные в документе PDF, укажитеPasswordEncryptionPermission.PASSWORD_EDIT_COPY
. (Повторите этот шаг для каждого устанавливаемого разрешения). - Укажите параметр совместимости с Acrobat, вызвав метод
setCompatability
объектаPasswordEncryptionOptionSpec
и передав значение перечисления, указывающее уровень совместимости Acrobat.Например, вы можете указатьPasswordEncryptionCompatability.ACRO_7
. - Укажите значение пароля, которое позволяет пользователю открыть зашифрованный документ PDF, вызвав метод
setDocumentOpenPassword
объектаPasswordEncryptionOptionSpec
и передав строковое значение, представляющее открытый пароль. - Укажите значение главного пароля, которое позволяет пользователю удалить шифрование из документа PDF, вызвав метод
setPermissionPassword
объектаPasswordEncryptionOptionSpec
и передав строковое значение, представляющее главный пароль.
- Создайте объект
Добавьте пароль.
Зашифруйте документ PDF, вызвав метод
encryptPDFUsingPassword
объектаEncryptionServiceClient
и передав следующие значения:- Объект
com.adobe.idp.Document
, содержащий документ PDF, который нужно зашифровать с помощью пароля. - Объект
PasswordEncryptionOptionSpec
, содержащий параметры времени выполнения шифрования.
Метод
encryptPDFUsingPassword
возвращаетcom.adobe.idp.Document
объект, содержащий зашифрованный паролем PDF-документ.- Объект
Сохраните зашифрованный документ PDF как файл PDF.
- Создайте объект
java.io.File
и убедитесь, что расширение файла — .pdf. - Вызовите метод
copyToFile
объектаcom.adobe.idp.Document
для копирования содержимого объектаcom.adobe.idp.Document
в файл. Убедитесь, что вы используете объектcom.adobe.idp.Document
, который был возвращен методомencryptPDFUsingPassword
.
- Создайте объект
См. Также
Сводка шагов
Quick Start (режим SOAP): шифрование PDF-документа с помощью Java API
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Шифрование документа PDF с помощью API веб-службы
Зашифруйте документ PDF паролем с помощью API шифрования (веб-сервис):
Включить файлы проекта.
Создайте Microsoft.NET-проект, использующий MTOM. Убедитесь, что вы используете следующее определение WSDL:
http: // localhost: 8080 / soap / services / EncryptionService? WSDL & lc_version = 9.0.1
.ПРИМЕЧАНИЕ
Замените
localhost
на IP-адрес сервера, на котором размещены формы AEM.Создайте объект API клиента шифрования.
Создайте объект
EncryptionServiceClient
, используя его конструктор по умолчанию.Создайте
EncryptionServiceClient.Endpoint.Address
с помощью конструктораSystem.ServiceModel.EndpointAddress
. Передайте строковое значение, определяющее WSDL, службе форм AEM (например,http: // localhost: 8080 / soap / services / EncryptionService? WSDL
.) Атрибутlc_version
использовать не нужно. Этот атрибут используется при создании ссылки на услугу.)Создайте объект
System.ServiceModel.BasicHttpBinding
, получив значениеEncryptionServiceClient.Endpoint.Binding
поле. Приведите возвращаемое значение кBasicHttpBinding
.Установите для поля
MessageEncoding
объектаSystem.ServiceModel.BasicHttpBinding
значениеWSMessageEncoding.Mtom
. Это значение гарантирует использование MTOM.Включите базовую аутентификацию HTTP, выполнив следующие задачи:
- Назначьте имя пользователя форм AEM полю
EncryptionServiceClient.ClientCredentials.Имя пользователя.Имя пользователя
. - Назначьте соответствующее значение пароля полю
EncryptionServiceClient.ClientCredentials.UserName.Password
. - Присвойте постоянное значение
HttpClientCredentialType.Basic
полюBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Присвойте постоянное значение
BasicHttpSecurityMode.TransportCredentialOnly
полюBasicHttpBindingSecurity.Security.Mode
.
- Назначьте имя пользователя форм AEM полю
Получите PDF-документ для шифрования.
- Создайте объект
BLOB
с помощью его конструктора. ОбъектBLOB
используется для хранения документа PDF, зашифрованного паролем. - Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, представляющее расположение файла PDF-документа для шифрования и режим открытия файла. - Создайте массив байтов, в котором хранится содержимое системы
.Объект IO.FileStream
. Вы можете определить размер байтового массива, получив свойствоLength
объектаSystem.IO.FileStream
. - Заполните массив байтов данными потока, вызвав метод
Read
объектаSystem.IO.FileStream
и передав массив байтов, начальную позицию и длину потока для чтения. - Заполните объект
BLOB
, назначив содержимое байтового массива члену данныхMTOM
объектаBLOB
.
- Создайте объект
Установите параметры времени выполнения шифрования.
- Создайте объект
PasswordEncryptionOptionSpec
, используя его конструктор. - Укажите ресурсы документа PDF для шифрования, присвоив значение перечисления
PasswordEncryptionOption
члену данныхencryptOption
объекта PasswordEncryptionOptionSpec . Чтобы зашифровать весь PDF-файл, включая его метаданные и вложения, назначьтеPasswordEncryptionOption.ВСЕ
этому элементу данных. - Укажите параметр совместимости с Acrobat, назначив значение перечисления
PasswordEncryptionCompatability
члену данныхсовместимости
объектаPasswordEncryptionOptionSpec
. Например, назначьте этому элементу данныхPasswordEncryptionCompatability.ACRO_7
. - Укажите значение пароля, которое позволяет пользователю открыть зашифрованный PDF-документ, присвоив строковое значение, представляющее открытый пароль, элементу данных
documentOpenPassword
объектаPasswordEncryptionOptionSpec
. - Укажите значение пароля, которое позволяет пользователю удалить шифрование из документа PDF, назначив строковое значение, представляющее главный пароль, элементу данных
permissionPassword
объекта PasswordEncryptionOptionSpec .
- Создайте объект
Добавьте пароль.
Зашифруйте документ PDF, вызвав метод
encryptPDFUsingPassword
объектаEncryptionServiceClient
и передав следующие значения:- Объект
BLOB
, содержащий документ PDF, который нужно зашифровать с помощью пароля. - Объект
PasswordEncryptionOptionSpec
, содержащий параметры времени выполнения шифрования.
Метод
encryptPDFUsingPassword
возвращает объектBLOB
, содержащий зашифрованный паролем PDF-документ.- Объект
Сохраните зашифрованный документ PDF как файл PDF.
- Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, представляющее расположение файла защищенного PDF-документа. - Создайте массив байтов, в котором хранится содержимое данных объекта
BLOB
, возвращенного методомencryptPDFUsingPassword
. Заполните байтовый массив, получив значение элемента данныхMTOM
объектаBLOB
. - Создайте объект
System.IO.BinaryWriter
, вызвав его конструктор и передав объектSystem.IO.FileStream
. - Запишите содержимое байтового массива в файл PDF, вызвав систему
.IO.BinaryWriter
МетодWrite
объекта и передача байтового массива.
- Создайте объект
См. Также
Сводка шагов
Вызов форм AEM с помощью MTOM
Вызов форм AEM с использованием SwaRef
Шифрование PDF-документов с сертификатами
Шифрование на основе сертификатов позволяет зашифровать документ для определенных получателей с помощью технологии открытого ключа. Различным получателям могут быть предоставлены разные разрешения для документа.Многие аспекты шифрования стали возможными благодаря технологии открытого ключа. Алгоритм используется для генерации двух больших чисел, известных как ключей , которые имеют следующие свойства:
- Один ключ используется для шифрования набора данных. Впоследствии для дешифрования данных можно использовать только другой ключ.
- Невозможно отличить один ключ от другого.
Один из ключей действует как закрытый ключ пользователя. Важно, чтобы к этому ключу имел доступ только пользователь.Другой ключ — это открытый ключ пользователя, которым можно поделиться с другими.
Сертификат открытого ключа содержит открытый ключ пользователя и идентифицирующую информацию. Формат X.509 используется для хранения сертификатов. Сертификаты обычно выпускаются и подписываются цифровой подписью центром сертификации (ЦС), который является признанным объектом, который обеспечивает меру уверенности в действительности сертификата. Сертификаты имеют срок годности, после которого они перестают действовать. Кроме того, списки отзыва сертификатов (CRL) предоставляют информацию о сертификатах, которые были отозваны до истечения срока их действия.CRL периодически публикуются центрами сертификации. Статус отзыва сертификата также можно получить с помощью протокола OCSP по сети.
ПРИМЕЧАНИЕ
Если вы загрузите зашифрованный PDF-документ в репозиторий AEM Forms, он не сможет расшифровать PDF-документ и извлечь содержимое XDP. Не рекомендуется шифровать документ перед его загрузкой в репозиторий AEM Forms. (См. Раздел «Ресурсы для письма».)
ПРИМЕЧАНИЕ
Прежде чем вы сможете зашифровать PDF-документ с помощью сертификата, вы должны убедиться, что вы добавили сертификат в формы AEM.Сертификат добавляется с помощью консоли администрирования или программно с помощью Trust Manager API. (См. Раздел Импорт учетных данных с помощью Trust Manager API.)
Сводка шагов
Чтобы зашифровать документ PDF с помощью сертификата, выполните следующие действия:
- Включить файлы проекта.
- Создайте объект API клиента шифрования.
- Получите PDF-документ для шифрования.
- Ссылка на сертификат.
- Установите параметры времени выполнения шифрования.
- Создайте PDF-документ с зашифрованным сертификатом.
- Сохраните зашифрованный документ PDF как файл PDF.
Включить файлы проекта
Включите необходимые файлы в свой проект разработки. Если вы создаете клиентское приложение с использованием Java, включите необходимые файлы JAR. Если вы используете веб-службы, убедитесь, что вы включили прокси-файлы.
Следующие файлы JAR должны быть добавлены к пути к классу вашего проекта:
- Adobe-livecycle-клиент.банка
- Adobe-usermanager-client.jar
- Adobe-encryption-client.jar
- adobe-utilities.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
- jbossall-client.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
Создание объекта API клиента шифрования
Для программного выполнения операции службы шифрования необходимо создать клиент службы шифрования. Если вы используете API службы шифрования Java, создайте объект EncrytionServiceClient
.Если вы используете API службы шифрования веб-службы, создайте объект EncryptionServiceService
.
Получить PDF-документ для шифрования
Для шифрования необходимо получить незашифрованный документ PDF. Если вы попытаетесь защитить уже зашифрованный PDF-документ, выдается исключение.
Ссылка на сертификат
Чтобы зашифровать документ PDF с помощью сертификата, укажите сертификат, который используется для шифрования документа PDF.Сертификат представляет собой файл .cer, файл .crt или файл .pem. Файл PKCS # 12 используется для хранения закрытых ключей с соответствующими сертификатами.
При шифровании PDF-документа с помощью сертификата укажите разрешения, связанные с защищенным документом. Указав разрешения, вы можете контролировать действия, которые может выполнять пользователь, открывающий зашифрованный с помощью сертификата PDF-документ.
Установить параметры времени выполнения шифрования
Укажите ресурсы документа PDF для шифрования.Вы можете зашифровать весь PDF-документ, кроме метаданных документа, или только вложения документа.
Создание зашифрованного сертификатом PDF-документа
После получения незащищенного PDF-документа, ссылки на сертификат и установки параметров времени выполнения вы можете создать PDF-документ, зашифрованный с помощью сертификата. После того, как документ PDF будет зашифрован, вам понадобится соответствующий открытый ключ для его расшифровки.
Сохранить зашифрованный документ PDF как файл PDF
Вы можете сохранить зашифрованный документ PDF как файл PDF.
См. Также
Зашифруйте документ PDF с помощью сертификата с помощью Java API
Зашифруйте документ PDF с помощью сертификата с помощью API веб-службы
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Краткое руководство по API службы шифрования
Шифрование PDF-документов паролем
Зашифруйте документ PDF с помощью сертификата с помощью Java API
Зашифруйте документ PDF с помощью сертификата с помощью API шифрования (Java):
Включить файлы проекта.
Включите клиентские JAR-файлы, такие как adobe-encryption-client.jar, в путь к классам вашего Java-проекта.
Создайте объект API клиента шифрования.
- Создайте объект
ServiceClientFactory
, содержащий свойства соединения. - Создайте объект
EncryptionServiceClient
, используя его конструктор и передав объектServiceClientFactory
.
- Создайте объект
Получите PDF-документ для шифрования.
- Создайте объект
java.io.FileInputStream
, представляющий документ PDF для шифрования, используя его конструктор и передавая строковое значение, указывающее расположение документа PDF. - Создайте объект
com.adobe.idp.Document
, используя его конструктор и передав объектjava.io.FileInputStream
.
- Создайте объект
Ссылка на сертификат.
- Создайте объект
java.util.List
, который хранит информацию о разрешениях, используя свой конструктор. - Укажите разрешение, связанное с зашифрованным документом, вызвав метод
add
объектаjava.util.List
и передав значение перечисленияCertificateEncryptionPermissions
, которое представляет разрешения, предоставленные пользователю, открывающему защищенный документ PDF. Например, чтобы указать все разрешения, передайтеCertificateEncryptionPermissions.PKI_ALL_PERM
. - Создайте объект
Recipient
с помощью его конструктора. - Создайте объект
java.io.FileInputStream
, представляющий сертификат, который используется для шифрования документа PDF с помощью его конструктора и передачи строкового значения, указывающего расположение сертификата. - Создайте объект
com.adobe.idp.Document
, используя его конструктор и передав объектjava.io.FileInputStream
, представляющий сертификат. - Вызвать метод
setX509Cert
объектаRecipient
и передатьcom.adobe.idp.Document
объект, содержащий сертификат. (Кроме того, объектRecipient
может иметь псевдоним сертификата Truststore или URL-адрес LDAP в качестве источника сертификата.) - Создайте объект
CertificateEncryptionIdentity
, который хранит информацию о разрешениях и сертификате с помощью своего конструктора. - Вызвать метод
setPerms
объектаCertificateEncryptionIdentity
и передать объектjava.util.List
, в котором хранится информация о разрешениях. - Вызвать метод
setRecipient
объектаCertificateEncryptionIdentity
и передать объектRecipient
, в котором хранится информация о сертификате. - Создайте объект
java.util.List
, который хранит информацию о сертификате, используя свой конструктор. - Вызвать метод добавления объекта
java.util.List
и передать объектCertificateEncryptionIdentity
. (Этот объектjava.util.List
передается в качестве параметра методуencryptPDFUsingCertificates
.)
- Создайте объект
Установите параметры времени выполнения шифрования.
- Создайте объект
CertificateEncryptionOptionSpec
, вызвав его конструктор. - Укажите ресурсы документа PDF для шифрования, вызвав метод
setOption
объектаCertificateEncryptionOptionSpec
и передав значение перечисленияCertificateEncryptionOption
, которое указывает ресурсы документа для шифрования. Например, чтобы зашифровать весь документ PDF, включая его метаданные и вложения, укажитеCertificateEncryptionOption.ВСЕ
. - Укажите параметр совместимости с Acrobat, вызвав метод
setCompat
объектаCertificateEncryptionOptionSpec
и передав значение перечисленияCertificateEncryptionCompatibility
, которое указывает уровень совместимости Acrobat. Например, вы можете указатьCertificateEncryptionCompatibility.ACRO_7
.
- Создайте объект
Создайте документ PDF с зашифрованным сертификатом.
Зашифруйте документ PDF с помощью сертификата, вызвав метод
encryptPDFUsingCertificates
объектаEncryptionServiceClient
и передав следующие значения:-
ком.adobe.idp.Document
объект, содержащий PDF-документ для шифрования. - Объект
java.util.List
, в котором хранится информация о сертификате. - Объект
CertificateEncryptionOptionSpec
, содержащий параметры времени выполнения шифрования.
Метод
encryptPDFUsingCertificates
возвращает объектcom.adobe.idp.Document
, который содержит зашифрованный сертификатом PDF-документ.-
Сохраните зашифрованный документ PDF как файл PDF.
- Создайте объект
java.io.File
и убедитесь, что расширение имени файла — .pdf. - Вызовите метод
copyToFile
объектаcom.adobe.idp.Document
для копирования содержимого объектаcom.adobe.idp.Document
в файл. Убедитесь, что вы используете объектcom.adobe.idp.Document
, который был возвращен методомencryptPDFUsingCertificates
.
- Создайте объект
См. Также
Сводка шагов
Quick Start (режим SOAP): шифрование документа PDF с помощью сертификата с использованием Java API
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Зашифруйте документ PDF с помощью сертификата с помощью API веб-службы
Зашифруйте документ PDF с помощью сертификата с помощью API шифрования (веб-сервис):
Включить файлы проекта.
Создайте проект Microsoft .NET, использующий MTOM. Убедитесь, что вы используете следующее определение WSDL:
http: // localhost: 8080 / soap / services / EncryptionService? WSDL & lc_version = 9.0.1
.ПРИМЕЧАНИЕ
Замените
localhost
на IP-адрес сервера, на котором размещены формы AEM.Создайте объект API клиента шифрования.
Создайте объект
EncryptionServiceClient
, используя его конструктор по умолчанию.Создайте объект
EncryptionServiceClient.Endpoint.Address
с помощью конструктораSystem.ServiceModel.EndpointAddress
. Передайте строковое значение, определяющее WSDL, службе форм AEM (например,http: // localhost: 8080 / soap / services / EncryptionService? WSDL
.) Атрибутlc_version
использовать не нужно. Этот атрибут используется при создании ссылки на услугу.)Создайте систему
.ServiceModel.BasicHttpBinding
, получив значение поляEncryptionServiceClient.Endpoint.Binding
. Приведите возвращаемое значение кBasicHttpBinding
.Установите для поля
MessageEncoding
объектаSystem.ServiceModel.BasicHttpBinding
значениеWSMessageEncoding.Mtom
. Это значение гарантирует использование MTOM.Включите базовую аутентификацию HTTP, выполнив следующие задачи:
- Назначьте имя пользователя форм AEM полю
EncryptionServiceClient.ClientCredentials.UserName.UserName
. - Назначьте соответствующее значение пароля полю
EncryptionServiceClient.ClientCredentials.UserName.Password
. - Присвойте постоянное значение
HttpClientCredentialType.Basic
полюBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Присвойте постоянное значение
BasicHttpSecurityMode.TransportCredentialOnly
полюBasicHttpBindingSecurity.Security.Режим
.
- Назначьте имя пользователя форм AEM полю
Получите PDF-документ для шифрования.
- Создайте объект
BLOB
с помощью его конструктора. ОбъектBLOB
используется для хранения документа PDF, зашифрованного с помощью сертификата. - Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, представляющее расположение файла PDF-документа для шифрования и режим открытия файла. - Создайте массив байтов, в котором хранится содержимое объекта
System.IO.FileStream
. Вы можете определить размер байтового массива, получив свойствоLength
объектаSystem.IO.FileStream
. - Заполните массив байтов данными потока, вызвав метод
Read
объектаSystem.IO.FileStream
и передав массив байтов, начальную позицию и длину потока для чтения. - Заполните объект
BLOB
, назначив его свойствуMTOM
содержимое байтового массива.
- Создайте объект
Ссылка на сертификат.
- Создайте объект
Recipient
с помощью его конструктора. Этот объект будет хранить информацию о сертификате. - Создайте объект
BLOB
с помощью его конструктора. Этот объектBLOB
будет хранить сертификат, который шифрует документ PDF. - Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, которое представляет расположение файла сертификата и режим, в котором следует открыть файл. - Создайте массив байтов, в котором хранится содержимое объекта
System.IO.FileStream
. Вы можете определить размер байтового массива, получив свойствоLength
объектаSystem.IO.FileStream
. - Заполните массив байтов данными потока, вызвав метод
Read
объектаSystem.IO.FileStream
и передав массив байтов, начальную позицию и длину потока для чтения. - Заполните объект
BLOB
, назначив содержимое байтового массива члену данныхMTOM
объектаBLOB
. - Назначьте объект
BLOB
, в котором хранится сертификат, элементу данныхx509Cert
объектаRecipient
. - Создайте объект
CertificateEncryptionIdentity
, который хранит информацию о сертификате, используя свой конструктор. - Назначьте объект
Recipient
, который хранит сертификат, элементу данных получателя объектаCertificateEncryptionIdentity
. - Создайте массив
Object
и назначьте объектCertificateEncryptionIdentity
первому элементу массиваObject
.Этот массивObject
передается в качестве параметра методуencryptPDFUsingCertificates
.
- Создайте объект
Установите параметры времени выполнения шифрования.
- Создайте объект
CertificateEncryptionOptionSpec
, используя его конструктор. - Укажите ресурсы документа PDF для шифрования, присвоив значение перечисления
CertificateEncryptionOption
элементу данныхoption
объектаCertificateEncryptionOptionSpec
.Чтобы зашифровать весь документ PDF, включая его метаданные и вложения, назначьтеCertificateEncryptionOption.ALL
этому элементу данных. - Укажите параметр совместимости с Acrobat, присвоив значение перечисления
CertificateEncryptionCompatibility
элементу данныхcompat
объектаCertificateEncryptionOptionSpec
. Например, назначьте этому элементу данныхCertificateEncryptionCompatibility.ACRO_7
.
- Создайте объект
Создайте документ PDF с зашифрованным сертификатом.
Зашифруйте документ PDF с помощью сертификата, вызвав метод
encryptPDFUsingCertificates
объектаEncryptionServiceService
и передав следующие значения:- Объект
BLOB
, содержащий PDF-документ, который необходимо зашифровать. - Массив объекта
- Объект
CertificateEncryptionOptionSpec
, содержащий параметры времени выполнения шифрования.
Метод
encryptPDFUsingCertificates
возвращает объектBLOB
, который содержит зашифрованный сертификатом PDF-документ.- Объект
Сохраните зашифрованный документ PDF как файл PDF.
- Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, представляющее расположение файла защищенного PDF-документа. - Создайте массив байтов, в котором хранится содержимое данных объекта
BLOB
, возвращенного методомencryptPDFUsingCertificates
. Заполните байтовый массив, получив значение элемента данныхbinaryData
объектаBLOB
. - Создайте объект
System.IO.BinaryWriter
, вызвав его конструктор и передав объектSystem.IO.FileStream
. - Запишите содержимое байтового массива в файл PDF, вызвав метод
Write
объектаSystem.IO.BinaryWriter
и передав массив байтов.
- Создайте объект
См. Также
Сводка шагов
Вызов форм AEM с помощью MTOM
Вызов форм AEM с использованием SwaRef
Удаление шифрования на основе сертификатов
Шифрование на основе сертификатов можно удалить из документа PDF, чтобы пользователи могли открыть документ PDF в Adobe Reader или Acrobat.Чтобы удалить шифрование из PDF-документа, зашифрованного с помощью сертификата, необходимо указать открытый ключ. После снятия шифрования с PDF-документа он становится небезопасным.
Сводка шагов
Чтобы удалить шифрование на основе сертификатов из PDF-документа, выполните следующие действия:
- Включить файлы проекта.
- Создайте клиент службы шифрования.
- Получите зашифрованный документ PDF.
- Удалить шифрование.
- Сохраните документ PDF как файл PDF.
Включить файлы проекта
Включите необходимые файлы в свой проект разработки. Если вы создаете клиентское приложение с использованием Java, включите необходимые файлы JAR. Если вы используете веб-службы, убедитесь, что вы включили прокси-файлы.
Следующие файлы JAR должны быть добавлены к пути к классу вашего проекта:
- adobe-livecycle-client.jar
- Adobe-usermanager-client.jar
- Adobe-encryption-client.jar
- саман-утилит.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
- jbossall-client.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
Создание клиента службы шифрования
Для программного выполнения операции службы шифрования необходимо создать клиент службы шифрования. Если вы используете API службы шифрования Java, создайте объект EncrytionServiceClient
. Если вы используете API службы шифрования веб-службы, создайте объект EncryptionServiceService
.
Получить зашифрованный PDF-документ
Чтобы удалить шифрование на основе сертификатов, необходимо получить зашифрованный документ PDF. Если вы попытаетесь удалить шифрование из незашифрованного PDF-документа, выдается исключение. Аналогичным образом, если вы попытаетесь удалить шифрование на основе сертификата из документа, зашифрованного паролем, будет выброшено исключение.
Удалить шифрование
Чтобы удалить шифрование на основе сертификатов из зашифрованного PDF-документа, вам потребуются как зашифрованный PDF-документ, так и закрытый ключ, соответствующий ключу, который использовался для шифрования PDF-документа.Значение псевдонима закрытого ключа указывается при удалении шифрования на основе сертификата из зашифрованного PDF-документа. Для получения информации об открытом ключе см. Шифрование PDF-документов с помощью сертификатов.
ПРИМЕЧАНИЕ
Закрытый ключ хранится в хранилище доверенных сертификатов форм AEM. Когда сертификат помещается туда, указывается значение псевдонима.
Сохранить документ PDF
После удаления шифрования на основе сертификатов из зашифрованного PDF-документа вы можете сохранить PDF-документ как PDF-файл.Пользователи могут открыть PDF-документ в Adobe Reader или Acrobat.
См. Также
Удалить шифрование на основе сертификатов с помощью Java API
Удалить шифрование на основе сертификатов с помощью API веб-службы
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Краткое руководство по API службы шифрования
Удалить шифрование на основе сертификатов с помощью Java API
Удалите шифрование на основе сертификатов из PDF-документа с помощью API шифрования (Java):
Включить файлы проекта.
Включите клиентские JAR-файлы, такие как adobe-encryption-client.jar, в путь к классам вашего Java-проекта.
Создайте клиент службы шифрования.
- Создайте объект
ServiceClientFactory
, содержащий свойства соединения. - Создайте объект
EncryptionServiceClient
, используя его конструктор и передав объектServiceClientFactory
.
- Создайте объект
Получите зашифрованный PDF-документ.
- Создайте объект
java.io.FileInputStream
, представляющий зашифрованный документ PDF, используя его конструктор и передав строковое значение, указывающее расположение зашифрованного документа PDF. - Создайте объект
com.adobe.idp.Document
, используя его конструктор и передав объектjava.io.FileInputStream
.
- Создайте объект
Удалить шифрование.
Удалите шифрование на основе сертификатов из PDF-документа, вызвав метод
removePDFCertificateSecurity
объектаEncryptionServiceClient
и передав следующие значения:-
ком.adobe.idp.Document
объект, содержащий зашифрованный документ PDF. - Строковое значение, указывающее псевдоним закрытого ключа, соответствующего ключу, используемому для шифрования документа PDf.
Метод
removePDFCertificateSecurity
возвращает объектcom.adobe.idp.Document
, содержащий незащищенный документ PDF.-
Сохраните документ PDF.
- Создайте объект
java.io.File
и убедитесь, что расширение файла -.pdf. - Вызовите метод
copyToFile
объектаcom.adobe.idp.Document
для копирования содержимого объектаDocument
в файл. Убедитесь, что вы используете объектcom.adobe.idp.Document
, который был возвращен методомremovePDFCredentialSecurity
.
- Создайте объект
См. Также
Сводка шагов
Quick Start (режим SOAP): Удаление шифрования на основе сертификатов с помощью Java API
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Удалить шифрование на основе сертификатов с помощью API веб-службы
Удалите шифрование на основе сертификатов с помощью API шифрования (веб-сервис):
Включить файлы проекта.
Создайте проект Microsoft .NET, использующий MTOM. Убедитесь, что вы используете следующее определение WSDL:
http: // localhost: 8080 / soap / services / EncryptionService? WSDL & lc_version = 9.0.1
.ПРИМЕЧАНИЕ
Замените
localhost
на IP-адрес сервера, на котором размещены формы AEM.Создайте клиент службы шифрования.
Создайте объект
EncryptionServiceClient
, используя его конструктор по умолчанию.Создайте объект
EncryptionServiceClient.Endpoint.Address
с помощью конструктораSystem.ServiceModel.EndpointAddress
. Передайте строковое значение, определяющее WSDL, службе форм AEM (например,http: // localhost: 8080 / soap / services / EncryptionService? WSDL
.) Атрибутlc_version
использовать не нужно. Этот атрибут используется при создании ссылки на услугу.)Создайте систему
.ServiceModel.BasicHttpBinding
, получив значение поляEncryptionServiceClient.Endpoint.Binding
. Приведите возвращаемое значение кBasicHttpBinding
.Установите для поля
MessageEncoding
объектаSystem.ServiceModel.BasicHttpBinding
значениеWSMessageEncoding.Mtom
. Это значение гарантирует использование MTOM.Включите базовую аутентификацию HTTP, выполнив следующие задачи:
- Назначьте имя пользователя форм AEM полю
EncryptionServiceClient.ClientCredentials.UserName.UserName
. - Назначьте соответствующее значение пароля полю
EncryptionServiceClient.ClientCredentials.UserName.Password
. - Присвойте постоянное значение
HttpClientCredentialType.Basic
полюBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Присвойте постоянное значение
BasicHttpSecurityMode.TransportCredentialOnly
полюBasicHttpBindingSecurity.Security.Режим
.
- Назначьте имя пользователя форм AEM полю
Получите зашифрованный PDF-документ.
- Создайте объект
BLOB
с помощью его конструктора. ОбъектBLOB
используется для хранения зашифрованного PDF-документа. - Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, которое представляет расположение файла зашифрованного документа PDF и режим, в котором этот файл открывается. - Создайте массив байтов, в котором хранится содержимое системы
.Объект IO.FileStream
. Вы можете определить размер байтового массива, получив свойствоLength
объектаSystem.IO.FileStream
. - Заполните массив байтов данными потока, вызвав метод
Read
объектаSystem.IO.FileStream
и передав массив байтов, начальную позицию и длину потока для чтения. - Заполните объект
BLOB
, назначив содержимое байтового массива члену данныхMTOM
объектаBLOB
.
- Создайте объект
Удалить шифрование.
Вызвать метод
removePDFCertificateSecurity
объектаEncryptionServiceClient
и передать следующие значения:- Объект
BLOB
, содержащий данные файлового потока, представляющие зашифрованный документ PDF. - Строковое значение, указывающее псевдоним открытого ключа, соответствующего закрытому ключу, используемому для шифрования документа PDf.
Метод
removePDFCredentialSecurity
возвращает объектBLOB
, который содержит незащищенный документ PDF.- Объект
Сохраните документ PDF.
- Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, представляющее расположение файла незащищенного PDF-документа. - Создайте массив байтов, в котором хранится содержимое объекта
BLOB
, возвращенного методомremovePDFPasswordSecurity
. Заполните байтовый массив, получив значение элемента данныхMTOM
объектаBLOB
. - Создайте объект
System.IO.BinaryWriter
, вызвав его конструктор и передав объектSystem.IO.FileStream
. - Запишите содержимое байтового массива в файл PDF, вызвав метод
Write
объектаSystem.IO.BinaryWriter
и передав массив байтов.
- Создайте объект
См. Также
Сводка шагов
Вызов форм AEM с помощью MTOM
Вызов форм AEM с использованием SwaRef
Удаление шифрования пароля
Шифрование на основе пароля можно удалить из документа PDF, чтобы пользователи могли открывать документ PDF в Adobe Reader или Acrobat без необходимости указывать пароль.После того, как шифрование на основе пароля будет удалено из PDF-документа, он станет небезопасным.
Сводка шагов
Чтобы удалить шифрование на основе пароля из PDF-документа, выполните следующие действия:
- Включить файлы проекта
- Создайте клиент службы шифрования.
- Получите зашифрованный документ PDF.
- Удалите пароль.
- Сохраните документ PDF как файл PDF.
Включить файлы проекта
Включите необходимые файлы в свой проект разработки.Если вы создаете клиентское приложение с использованием Java, включите необходимые файлы JAR. Если вы используете веб-службы, убедитесь, что вы включили прокси-файлы.
Следующие файлы JAR должны быть добавлены к пути к классу вашего проекта:
- adobe-livecycle-client.jar
- Adobe-usermanager-client.jar
- Adobe-encryption-client.jar
- adobe-utilities.jar (требуется, если формы AEM развернуты на JBoss)
- jbossall-client.jar (требуется, если формы AEM развернуты на JBoss)
Создание клиента службы шифрования
Для программного выполнения операции службы шифрования необходимо создать клиент службы шифрования.Если вы используете API службы шифрования Java, создайте объект EncrytionServiceClient
. Если вы используете API службы шифрования веб-службы, создайте объект EncryptionServiceService
.
Получить зашифрованный PDF-документ
Чтобы удалить шифрование на основе пароля, необходимо получить зашифрованный документ PDF. Если вы попытаетесь удалить шифрование из незашифрованного PDF-документа, выдается исключение.
Удалить пароль
Чтобы удалить шифрование на основе пароля из зашифрованного документа PDF, вам потребуются как зашифрованный документ PDF, так и значение главного пароля, которое используется для удаления шифрования из документа PDF.Пароль, который используется для открытия PDF-документа, зашифрованного паролем, нельзя использовать для снятия шифрования. Мастер-пароль указывается, когда PDF-документ зашифрован паролем. (См. Раздел «Шифрование PDF-документов с помощью пароля».)
Сохранить документ PDF
После того, как служба шифрования удалит шифрование на основе пароля из PDF-документа, вы можете сохранить PDF-документ как PDF-файл. Пользователи могут открывать PDF-документ в Adobe Reader или Acrobat без указания пароля.
См. Также
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Краткое руководство по API службы шифрования
Шифрование PDF-документов паролем
Удалить шифрование на основе пароля с помощью Java API
Удалите шифрование на основе пароля из PDF-документа с помощью API шифрования (Java):
Включить файлы проекта.
Включите клиентские JAR-файлы, такие как adobe-encryption-client.jar в пути к классам вашего Java-проекта.
Создайте клиент службы шифрования.
- Создайте объект
ServiceClientFactory
, содержащий свойства соединения. - Создайте объект
EncryptionServiceClient
, используя его конструктор и передав объектServiceClientFactory
.
- Создайте объект
Получите зашифрованный PDF-документ.
- Создайте объект
java.io.FileInputStream
, представляющий зашифрованный документ PDF, используя его конструктор и передав строковое значение, указывающее расположение документа PDF. - Создайте объект
com.adobe.idp.Document
, используя его конструктор и передав объектjava.io.FileInputStream
.
- Создайте объект
Удалите пароль.
Удалите шифрование на основе пароля из PDF-документа, вызвав метод
removePDFPasswordSecurity
объектаEncryptionServiceClient
и передав следующие значения:- Объект
com.adobe.idp.Document
, содержащий зашифрованный документ PDF. - Строковое значение, указывающее значение главного пароля, используемого для удаления шифрования из документа PDF.
Метод
removePDFPasswordSecurity
возвращает объектcom.adobe.idp.Document
, содержащий незащищенный документ PDF.- Объект
Сохраните документ PDF.
- Создайте объект
java.io.File
и убедитесь, что расширение имени файла — .pdf. - Вызов
com.adobe.Метод
для копирования содержимого объектаcopyToFile
объекта idp.DocumentDocument
в файл. Убедитесь, что вы используете объектDocument
, который был возвращен методомremovePDFPasswordSecurity
.
- Создайте объект
См. Также
Quick Start (режим SOAP): Удаление шифрования на основе пароля с помощью Java API
Удалить шифрование на основе пароля с помощью API веб-службы
Удалите шифрование на основе пароля с помощью API шифрования (веб-сервис):
Включить файлы проекта.
Создайте проект Microsoft .NET, использующий MTOM. Убедитесь, что вы используете следующее определение WSDL:
http: // localhost: 8080 / soap / services / EncryptionService? WSDL & lc_version = 9.0.1
.ПРИМЕЧАНИЕ
Замените
localhost
на IP-адрес сервера, на котором размещены формы AEM.Создайте клиент службы шифрования.
Создайте объект
EncryptionServiceClient
, используя его конструктор по умолчанию.Создайте объект
EncryptionServiceClient.Endpoint.Address
с помощью конструктораSystem.ServiceModel.EndpointAddress
. Передайте строковое значение, определяющее WSDL, службе форм AEM (например,http: // localhost: 8080 / soap / services / EncryptionService? WSDL
.) Атрибутlc_version
использовать не нужно. Этот атрибут используется при создании ссылки на услугу.)Создайте систему
.ServiceModel.BasicHttpBinding
, получив значение поляEncryptionServiceClient.Endpoint.Binding
. Приведите возвращаемое значение кBasicHttpBinding
.Установите для поля
MessageEncoding
объектаSystem.ServiceModel.BasicHttpBinding
значениеWSMessageEncoding.Mtom
. Это значение гарантирует использование MTOM.Включите базовую аутентификацию HTTP, выполнив следующие задачи:
- Назначьте имя пользователя форм AEM полю
EncryptionServiceClient.ClientCredentials.UserName.UserName
. - Назначьте соответствующее значение пароля полю
EncryptionServiceClient.ClientCredentials.UserName.Password
. - Присвойте постоянное значение
HttpClientCredentialType.Basic
полюBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Присвойте постоянное значение
BasicHttpSecurityMode.TransportCredentialOnly
полюBasicHttpBindingSecurity.Security.Режим
.
- Назначьте имя пользователя форм AEM полю
Получите зашифрованный PDF-документ.
- Создайте объект
BLOB
с помощью его конструктора. ОбъектBLOB
используется для хранения зашифрованного паролем PDF-документа. - Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, которое представляет расположение файла зашифрованного документа PDF и режим, в котором этот файл открывается. - Создайте массив байтов, в котором хранится содержимое системы
.Объект IO.FileStream
. Вы можете определить размер байтового массива, получив свойствоLength
объектаSystem.IO.FileStream
. - Заполните массив байтов данными потока, вызвав метод
Read
объектаSystem.IO.FileStream
и передав массив байтов, начальную позицию и длину потока для чтения. - Заполните объект
BLOB
, назначив содержимое байтового массива члену данныхMTOM
объектаBLOB
.
- Создайте объект
Удалите пароль.
Вызвать метод
removePDFPasswordSecurity
объектаEncryptionServiceService
и передать следующие значения:- Объект
BLOB
, содержащий данные файлового потока, представляющие зашифрованный документ PDF. - Строковое значение, указывающее значение пароля, которое используется для удаления шифрования из документа PDF. Это значение указывается при шифровании PDF-документа паролем.
Метод
removePDFPasswordSecurity
возвращает объектBLOB
, который содержит незащищенный документ PDF.- Объект
Сохраните документ PDF.
- Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, представляющее расположение файла незащищенного PDF-документа. - Создайте массив байтов, в котором хранится содержимое объекта
BLOB
, возвращенного методомremovePDFPasswordSecurity
.Заполните байтовый массив, получив значение элемента данныхMTOM
объектаBLOB
. - Создайте объект
System.IO.BinaryWriter
, вызвав его конструктор и передав объектSystem.IO.FileStream
. - Запишите содержимое байтового массива в файл PDF, вызвав метод
Write
объектаSystem.IO.BinaryWriter
и передав массив байтов.
- Создайте объект
См. Также
Вызов форм AEM с помощью MTOM
Вызов форм AEM с использованием SwaRef
Разблокировка зашифрованных PDF-документов
PDF-документ, зашифрованный паролем или сертификатом, должен быть разблокирован перед выполнением с ним другой операции с формами AEM.Если вы попытаетесь выполнить операцию с зашифрованным PDF-документом, вы сгенерируете исключение. После разблокировки зашифрованного PDF-документа вы можете выполнить с ним одну или несколько операций. Эти операции могут принадлежать другим службам, например службе расширений Acrobat Reader DC.
Сводка шагов
Чтобы разблокировать зашифрованный документ PDF, выполните следующие действия:
- Включить файлы проекта.
- Создайте клиент службы шифрования.
- Получите зашифрованный документ PDF.
- Разблокируйте документ.
- Выполните операцию с формами AEM.
Включить файлы проекта
Включите необходимые файлы в свой проект разработки. Если вы создаете клиентское приложение с использованием Java, включите необходимые файлы JAR. Если вы используете веб-службы, убедитесь, что вы включили прокси-файлы.
Следующие файлы JAR должны быть добавлены к пути к классу вашего проекта:
- adobe-livecycle-client.jar
- Adobe-Usermanager-клиент.банка
- Adobe-encryption-client.jar
- adobe-utilities.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
- jbossall-client.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
Создание клиента службы шифрования
Для программного выполнения операции службы шифрования необходимо создать клиент службы шифрования. Если вы используете API службы шифрования Java, создайте объект EncrytionServiceClient
.Если вы используете API службы шифрования веб-службы, создайте объект EncryptionServiceService
.
Получить зашифрованный PDF-документ
Вы должны получить зашифрованный документ PDF, чтобы разблокировать его. Если вы попытаетесь разблокировать незашифрованный PDF-документ, возникнет исключение.
Разблокировать документ
Чтобы разблокировать PDF-документ, зашифрованный паролем, вам потребуется как зашифрованный PDF-документ, так и пароль, который используется для открытия PDF-документа, зашифрованного паролем.Это значение указывается при шифровании PDF-документа паролем. (См. Раздел «Шифрование PDF-документов с помощью пароля».)
Чтобы разблокировать PDF-документ, зашифрованный сертификатом, вам потребуется как зашифрованный PDF-документ, так и значение псевдонима открытого ключа, соответствующего закрытому ключу, который использовался для шифрования PDF-документа.
Выполнение операции с формами AEM
После того, как зашифрованный PDF-документ разблокирован, вы можете выполнить с ним другую служебную операцию, например применить к нему права использования.Эта операция принадлежит службе Acrobat Reader DC Extensions.
См. Также
Разблокируйте зашифрованный PDF-документ с помощью Java API
Разблокируйте зашифрованный документ PDF с помощью API веб-службы
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Краткое руководство по API службы шифрования
Разблокируйте зашифрованный документ PDF с помощью Java API
Разблокируйте зашифрованный документ PDF с помощью API шифрования (Java):
Включить файлы проекта.
Включите клиентские JAR-файлы, такие как adobe-encryption-client.jar, в путь к классам вашего Java-проекта.
Создайте клиент службы шифрования.
- Создайте объект
ServiceClientFactory
, содержащий свойства соединения. - Создайте объект
EncryptionServiceClient
, используя его конструктор и передав объектServiceClientFactory
.
- Создайте объект
Получите зашифрованный PDF-документ.
- Создайте объект
java.io.FileInputStream
, представляющий зашифрованный документ PDF, используя его конструктор и передав строковое значение, указывающее расположение зашифрованного документа PDF. - Создайте объект
com.adobe.idp.Document
, используя его конструктор и передав объектjava.io.FileInputStream
.
- Создайте объект
Разблокируйте документ.
Разблокируйте зашифрованный PDF-документ, вызвав метод
unlockPDFUsingPassword
илиunlockPDFUsingCredential
объектаEncryptionServiceClient
.Чтобы разблокировать PDF-документ, зашифрованный паролем, вызовите метод
unlockPDFUsingPassword
и передайте следующие значения:- Объект
com.adobe.idp.Document
, содержащий зашифрованный паролем PDF-документ. - Строковое значение, указывающее значение пароля, которое используется для открытия зашифрованного паролем PDF-документа. Это значение указывается при шифровании PDF-документа паролем.
Чтобы разблокировать документ PDF, зашифрованный с помощью сертификата, вызовите метод
unlockPDFUsingCredential
и передайте следующие значения:- А
ком.adobe.idp.Document
объект, содержащий зашифрованный сертификатом PDF-документ. - Строковое значение, указывающее псевдоним открытого ключа, соответствующего закрытому ключу, используемому для шифрования документа PDF.
Методы
unlockPDFUsingPassword
иunlockPDFUsingCredential
возвращают объектcom.adobe.idp.Document
, который вы передаете другому методу Java AEM Forms для выполнения операции.- Объект
Выполните операцию с формами AEM.
Выполните операцию AEM Forms над разблокированным PDF-документом в соответствии с вашими бизнес-требованиями. Например, предполагая, что вы хотите применить права использования к разблокированному PDF-документу, передайте объект
com.adobe.idp.Document
, который был возвращен методамиunlockPDFUsingPassword
илиunlockPDFUsingCredential
в объектReaderExtensionsServiceClient
. applyUsageRights метод.
См. Также
Сводка шагов
Quick Start (режим SOAP): разблокировка зашифрованного PDF-документа с помощью Java API (режим SOAP)
Применение прав на использование к PDF-документам
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Разблокируйте зашифрованный документ PDF с помощью API веб-службы
Разблокируйте зашифрованный PDF-документ с помощью API шифрования (веб-сервис):
Включить файлы проекта.
Создайте проект Microsoft .NET, использующий MTOM. Убедитесь, что вы используете следующее определение WSDL:
http: // localhost: 8080 / soap / services / EncryptionService? WSDL & lc_version = 9.0.1
.ПРИМЕЧАНИЕ
Замените
localhost
на IP-адрес сервера, на котором размещены формы AEM.Создайте клиент службы шифрования.
Создайте объект
EncryptionServiceClient
, используя его конструктор по умолчанию.Создайте объект
EncryptionServiceClient.Endpoint.Address
с помощью конструктораSystem.ServiceModel.EndpointAddress
. Передайте строковое значение, определяющее WSDL, службе форм AEM (например,http: // localhost: 8080 / soap / services / EncryptionService? WSDL
.) Атрибутlc_version
использовать не нужно. Этот атрибут используется при создании ссылки на услугу.)Создайте систему
.ServiceModel.BasicHttpBinding
, получив значение поляEncryptionServiceClient.Endpoint.Binding
. Приведите возвращаемое значение кBasicHttpBinding
.Установите для поля
MessageEncoding
объектаSystem.ServiceModel.BasicHttpBinding
значениеWSMessageEncoding.Mtom
. Это значение гарантирует использование MTOM.Включите базовую аутентификацию HTTP, выполнив следующие задачи:
- Назначьте имя пользователя форм AEM полю
EncryptionServiceClient.ClientCredentials.UserName.UserName
. - Назначьте соответствующее значение пароля полю
EncryptionServiceClient.ClientCredentials.UserName.Password
. - Присвойте постоянное значение
HttpClientCredentialType.Basic
полюBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Присвойте постоянное значение
BasicHttpSecurityMode.TransportCredentialOnly
полюBasicHttpBindingSecurity.Security.Режим
.
- Назначьте имя пользователя форм AEM полю
Получите зашифрованный документ PDF.
- Создайте объект
BLOB
с помощью его конструктора. - Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, которое представляет расположение файла зашифрованного документа PDF и режим, в котором этот файл открывается. - Создайте массив байтов, в котором хранится содержимое объекта
System.IO.FileStream
.Вы можете определить размер байтового массива, получив свойствоLength
объектаSystem.IO.FileStream
. - Заполните массив байтов данными потока, вызвав метод
Read
объектаSystem.IO.FileStream
и передав массив байтов, начальную позицию и длину потока для чтения. - Заполните объект
BLOB
, назначив содержимое байтового массива члену данныхMTOM
объектаBLOB
.
- Создайте объект
Разблокируйте документ.
Разблокируйте зашифрованный PDF-документ, вызвав метод
unlockPDFUsingPassword
илиunlockPDFUsingCredential
объектаEncryptionServiceClient
.Чтобы разблокировать PDF-документ, зашифрованный паролем, вызовите метод
unlockPDFUsingPassword
и передайте следующие значения:- Объект
BLOB
, содержащий зашифрованный паролем PDF-документ. - Строковое значение, указывающее значение пароля, которое используется для открытия зашифрованного паролем PDF-документа. Это значение указывается при шифровании PDF-документа паролем.
Чтобы разблокировать документ PDF, зашифрованный с помощью сертификата, вызовите метод
unlockPDFUsingCredential
и передайте следующие значения:- Объект
BLOB
, содержащий зашифрованный сертификатом PDF-документ. - Строковое значение, указывающее псевдоним открытого ключа, соответствующего закрытому ключу, используемому для шифрования документа PDf.
Методы
unlockPDFUsingPassword
иunlockPDFUsingCredential
возвращают объектcom.adobe.idp.Document
, который вы передаете другому методу форм AEM для выполнения операции.- Объект
Выполните операцию с формами AEM.
Выполните операцию AEM Forms над разблокированным PDF-документом в соответствии с вашими бизнес-требованиями. Например, предполагая, что вы хотите применить права использования к разблокированному PDF-документу, передайте объект
BLOB
, который был возвращен методамиunlockPDFUsingPassword
илиunlockPDFUsingCredential
, в методReaderExtensionsServiceClient
объектаapply32Usage.
См. Также
Сводка шагов
Вызов форм AEM с помощью MTOM
Вызов форм AEM с использованием SwaRef
Определение типа шифрования
Вы можете программно определить тип шифрования, защищающего документ PDF, с помощью API службы шифрования Java или API службы шифрования веб-службы. Иногда необходимо динамически определять, зашифрован ли документ PDF, и, если да, то тип шифрования.Например, вы можете определить, защищен ли PDF-документ с помощью шифрования на основе пароля или политики управления правами.
PDF-документ может быть защищен следующими типами шифрования:
- Шифрование на основе пароля
- Шифрование на основе сертификатов
- Политика, созданная службой управления правами
- Другой тип шифрования
Сводка шагов
Чтобы определить тип шифрования, защищающий документ PDF, выполните следующие действия:
- Включить файлы проекта.
- Создайте клиент службы шифрования.
- Получите зашифрованный документ PDF.
- Определите тип шифрования.
Включить файлы проекта
Включите необходимые файлы в свой проект разработки. Если вы создаете клиентское приложение с использованием Java, включите необходимые файлы JAR. Если вы используете веб-службы, убедитесь, что вы включили прокси-файлы.
Следующие файлы JAR должны быть добавлены к пути к классу вашего проекта:
- Adobe-livecycle-клиент.банка
- Adobe-usermanager-client.jar
- Adobe-encryption-client.jar
- adobe-utilities.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
- jbossall-client.jar (требуется, если формы AEM развернуты на сервере приложений JBoss)
Создание сервисного клиента
Для программного выполнения операции службы шифрования необходимо создать клиент службы шифрования. Если вы используете API службы шифрования Java, создайте объект EncrytionServiceClient
.Если вы используете API службы шифрования веб-службы, создайте объект EncryptionServiceService
.
Получить зашифрованный PDF-документ
Вы должны получить PDF-документ, чтобы определить тип шифрования, который его защищает.
Определить тип шифрования
Вы можете определить тип шифрования, защищающий документ PDF. Если документ PDF не защищен, тогда служба шифрования сообщает вам, что документ PDF не защищен.
См. Также
Определите тип шифрования с помощью Java API
Определите тип шифрования с помощью API веб-службы
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Краткое руководство по API службы шифрования
Защита документов с помощью политик
Определите тип шифрования с помощью Java API
Определите тип шифрования, защищающий документ PDF, с помощью API шифрования (Java):
Включить файлы проекта.
Включите клиентские JAR-файлы, такие как adobe-encryption-client.jar, в путь к классам вашего Java-проекта.
Создайте сервисного клиента.
- Создайте объект
ServiceClientFactory
, содержащий свойства соединения. - Создайте объект
EncryptionServiceClient
, используя его конструктор и передав объектServiceClientFactory
.
- Создайте объект
Получите зашифрованный PDF-документ.
- Создайте файл
java.io.FileInputStream
, представляющий документ PDF, используя его конструктор и передавая строковое значение, указывающее расположение документа PDF. - Создайте объект
com.adobe.idp.Document
, используя его конструктор и передав объектjava.io.FileInputStream
.
- Создайте файл
Определите тип шифрования.
- Определите тип шифрования, вызвав метод
getPDFEncryption
объектаEncryptionServiceClient
и передавcom.adobe.idp.Document
объект, содержащий документ PDF. Этот метод возвращает объектEncryptionTypeResult
. - Вызов метода
getEncryptionType
объектаEncryptionTypeResult
. Этот метод возвращает значение перечисленияEncryptionType
, которое указывает тип шифрования. Например, если документ PDF защищен шифрованием на основе пароля, этот метод возвращаетEncryptionType.PASSWORD
.
- Определите тип шифрования, вызвав метод
См. Также
Сводка шагов
Quick Start (режим SOAP): определение типа шифрования с помощью Java API
Включая файлы библиотеки Java AEM Forms
Настройка свойств подключения
Определите тип шифрования с помощью API веб-службы
Определите тип шифрования, которым защищен документ PDF, с помощью API шифрования (веб-сервис):
Включить файлы проекта.
Создайте проект Microsoft .NET, использующий MTOM. Убедитесь, что вы используете следующее определение WSDL:
http: // localhost: 8080 / soap / services / EncryptionService? WSDL & lc_version = 9.0.1
.ПРИМЕЧАНИЕ
Замените
localhost
на IP-адрес сервера, на котором размещены формы AEM.Создайте сервисного клиента.
Создайте объект
EncryptionServiceClient
, используя его конструктор по умолчанию.Создайте объект
EncryptionServiceClient.Endpoint.Address
с помощью конструктораSystem.ServiceModel.EndpointAddress
. Передайте строковое значение, определяющее WSDL, службе форм AEM (например,http: // localhost: 8080 / soap / services / EncryptionService? WSDL
.) Атрибутlc_version
использовать не нужно. Этот атрибут используется при создании ссылки на услугу.)Создайте систему
.ServiceModel.BasicHttpBinding
, получив значение поляEncryptionServiceClient.Endpoint.Binding
. Приведите возвращаемое значение кBasicHttpBinding
.Установите для поля
MessageEncoding
объектаSystem.ServiceModel.BasicHttpBinding
значениеWSMessageEncoding.Mtom
. Это значение гарантирует использование MTOM.Включите базовую аутентификацию HTTP, выполнив следующие задачи:
- Назначьте имя пользователя форм AEM полю
EncryptionServiceClient.ClientCredentials.UserName.UserName
. - Назначьте соответствующее значение пароля полю
EncryptionServiceClient.ClientCredentials.UserName.Password
. - Присвойте постоянное значение
HttpClientCredentialType.Basic
полюBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Присвойте постоянное значение
BasicHttpSecurityMode.TransportCredentialOnly
полюBasicHttpBindingSecurity.Security.Режим
.
- Назначьте имя пользователя форм AEM полю
Получите зашифрованный PDF-документ.
- Создайте объект
BLOB
с помощью его конструктора. - Создайте объект
System.IO.FileStream
, вызвав его конструктор и передав строковое значение, которое представляет расположение файла зашифрованного документа PDF и режим, в котором этот файл открывается. - Создайте массив байтов, в котором хранится содержимое объекта
System.IO.FileStream
.Вы можете определить размер байтового массива, получив свойствоLength
объектаSystem.IO.FileStream
. - Заполните массив байтов данными потока, вызвав метод
Read
объектаSystem.IO.FileStream
и передав массив байтов, начальную позицию и длину потока для чтения. - Заполните объект
BLOB
, назначив содержимое байтового массива члену данныхMTOM
объектаBLOB
.
- Создайте объект
Определите тип шифрования.
- Вызвать метод
getPDFEncryption
объектаEncryptionServiceClient
и передать объектBLOB
, содержащий документ PDF. Этот метод возвращает объектEncryptionTypeResult
. - Получите значение метода данных
encryptionType
объектаEncryptionTypeResult
. Например, если документ PDF защищен шифрованием на основе пароля, значение этого элемента данных будетEncryptionType.ПАРОЛЬ
.
- Вызвать метод
См. Также
Сводка шагов
Вызов форм AEM с помощью MTOM
Вызов форм AEM с использованием SwaRef
% PDF-1.6 % 668 0 объект > эндобдж xref 668 63 0000000017 00000 н. 0000002198 00000 п. 0000002401 00000 п. 0000002836 00000 н. 0000003078 00000 н. 0000003228 00000 н. 0000003421 00000 н. 0000003653 00000 п. 0000004049 00000 н. 0000004685 00000 н. 0000005152 00000 н. 0000005194 00000 н. 0000005258 00000 н. 0000005517 00000 н. 0000005778 00000 н. 0000006044 00000 н. 0000006862 00000 н. 0000007677 00000 н. 0000008477 00000 н. 0000009251 00000 п. 0000010062 00000 п. 0000010468 00000 п. 0000010917 00000 п. 0000011414 00000 п. 0000011684 00000 п. 0000011952 00000 п. 0000012744 00000 п. 0000013324 00000 п. 0000013858 00000 п. 0000014164 00000 п. 0000014210 00000 п. 0000014279 00000 п. 0000016986 00000 п. 0000041102 00000 п. 0000065881 00000 п. 00000
% PDF-1.6 % 1084 0 объект > эндобдж xref 1084 75 0000000017 00000 н. 0000002440 00000 н. 0000002650 00000 н. 0000003160 00000 н. 0000003434 00000 н. 0000003585 00000 н. 0000003763 00000 н. 0000003887 00000 н. 0000004011 00000 н. 0000004281 00000 п. 0000004786 00000 н. 0000005184 00000 п. 0000005828 00000 н. 0000006293 00000 н. 0000006748 00000 н. 0000006792 00000 н. 0000006857 00000 н. 0000007118 00000 н. 0000007381 00000 п. 0000007649 00000 н. 0000007921 00000 п. 0000007985 00000 н. 0000008255 00000 н. 0000009059 00000 н. 0000009953 00000 н. 0000010844 00000 п. 0000011642 00000 п. 0000012423 00000 п. 0000012839 00000 п. 0000013684 00000 п. 0000014258 00000 п. 0000014749 00000 п. 0000015068 00000 п. 0000015116 00000 п. 0000015164 00000 п. 0000015234 00000 п. 0000017942 00000 п. 0000042059 00000 п. 0000067561 00000 п. 00000 00000 н. 0000110468 00000 н. 0000128814 00000 н. 0000131047 00000 н. 0000134203 00000 н. 0000137363 00000 н. 0000137926 00000 н. 0000138021 00000 н. 0000138145 00000 н. 0000138264 00000 н. 0000138377 00000 н. 0000138519 00000 н. 0000138632 00000 н. 0000138756 00000 н. 0000138900 00000 н. 0000139034 00000 н. 0000139204 00000 н. 0000139332 00000 н. 0000139425 00000 н. 0000139578 00000 н. 0000139737 00000 н. 0000139877 00000 н. 0000140013 00000 н. 0000140172 00000 н. 0000140282 00000 н. 0000140385 00000 н. 0000140509 00000 н. 0000140639 00000 п. 0000140785 00000 н. 0000140976 00000 п. 0000141088 00000 н. 0000141187 00000 н. 0000141302 00000 н. 0000141423 00000 п. 0000141548 00000 н. 0000141656 00000 н. трейлер ] / Инфо 1081 0 R / Назад 834450 / Корень 1085 0 R / Размер 1159 / Источник (WeJXFxNO4fJduyUMetTcP9 + oaONfINN4 + d70n8TNOHt + lgqOfV3jXto / HX0xzn55B9khgm8VtCFmyd8gIrwOjQRAIjPsWhM4vgMCV \ 8KvVF / K8lfo4f4WXpLianftcV0DeKVoW9pv2DIRGEg =) >> startxref 0 %% EOF 1085 0 объект > эндобдж 1086 0 объект > ручей xMKQw и 2ZXh.FY конечный поток эндобдж 1087 0 объект > эндобдж 1088 0 объект > / Граница [0 0 0] / Rect [266,76 11,88 576 26,16] / Подтип / Ссылка / Тип / Аннотация >> эндобдж 1089 0 объект > / Граница [0 0 0] / Rect [319,5 612 319,68 626,22] / Подтип / Ссылка / Тип / Аннотация >> эндобдж 1090 0 объект > эндобдж 1091 0 объект > эндобдж 1092 0 объект > / ExtGState> / Шрифт> / ProcSet [/ PDF /Текст] / Свойства> >> эндобдж 1093 0 объект > эндобдж 1094 0 объект > эндобдж 1095 0 объект > эндобдж 1096 0 объект > эндобдж 1097 0 объект > эндобдж 1098 0 объект [/ ICCBased 1119 0 R] эндобдж 1099 0 объект > эндобдж 1100 0 объект > эндобдж 1101 0 объект > эндобдж 1102 0 объект > эндобдж 1103 0 объект > эндобдж 1104 0 объект > эндобдж 1105 0 объект > эндобдж 1106 0 объект > ручей HTKo1WFxɭQ) P ڕ @ j {B AM & — ό7TEkxLUM ޞ | ݨ.Y $ `9n + ly? Rc ۇ &) é XϜk03% OH5wjr_XLoo ~ Ú]} ́
Fernet (симметричное шифрование) — Криптография 35.0.0.dev1 документация
Fernet гарантирует, что сообщение, зашифрованное с его помощью, не может быть
манипулировали или читали без ключа. Fernet — это реализация
симметричная (также известная как «секретный ключ») аутентифицированная криптография. Фернет также
поддерживает ротацию ключей через MultiFernet
.
- класс
криптография. Фернет.
Fernet
( ключ ) ¶ Этот класс предоставляет возможности как для шифрования, так и для дешифрования.
>>> из cryptography.fernet import Fernet >>> key = Fernet.generate_key () >>> f = Фернет (ключ) >>> token = f.encrypt (b "мой глубокий темный секрет") >>> токен б '...' >>> f.decrypt (токен) мой глубокий темный секрет
Параметры: ключ ( байт, или str ) — 32-байтовый ключ с кодировкой base64, безопасный для URL. Этот должен быть держится в секрете.Любой, у кого есть этот ключ, может создавать и читать сообщения. - classmethod
generate_key
() ¶ Создает новый ключ фернета. Держи это место в безопасности! Если ты его потеряешь вы больше не сможете расшифровывать сообщения; если кто-то еще выиграет доступ к нему, они смогут расшифровать все ваши сообщения и они также смогут подделывать произвольные сообщения, которые будут аутентифицирован и расшифрован.
-
зашифровать
( данных ) ¶ Шифрует переданные данные.Результат этого шифрования известен как «Токен Fernet» и имеет надежные гарантии конфиденциальности и подлинности.
Параметры: данные ( байт, ) — сообщение, которое вы хотите зашифровать. Возвращает байты: Безопасное сообщение, которое нельзя прочитать или изменить без ключа. Он безопасен для URL-адресов в кодировке base64. Это называется «токеном Fernet». Вызывает: TypeError — Это исключение возникает, если data
не являетсябайт
.Примечание
Зашифрованное сообщение содержит текущее время, когда оно было сгенерированный в виде открытого текста , время создания сообщения будет поэтому быть видимым для возможного злоумышленника.
-
encrypt_at_time
( данных , current_time ) Шифрует переданные данные, используя явно переданное текущее время. Видеть
encrypt ()
для документации параметраdata
, тип возвращаемого значения и возникшие исключения.Мотивация этого метода заключается в том, чтобы клиентский код мог истечение срока действия тестового токена. Поскольку этот метод можно использовать в небезопасных как следует убедиться в правильности времени (
int (time.time ())
) передается какcurrent_time
вне тестирования.Параметры: current_time ( int ) — Текущее время. Примечание
Аналогично
encrypt ()
зашифрованное сообщение содержит отметка времени в открытом тексте , в данном случае отметка времени — это значение параметраcurrent_time
.
-
расшифровать
( токен , ttl = нет ) Расшифровывает токен Fernet. В случае успешной расшифровки вы получите исходный открытый текст в качестве результата, в противном случае исключение будет поднятый. Эти данные можно безопасно использовать сразу после проверки Fernet. что данные не были подделаны до их возврата.
Параметры: - токен ( байт, ) — токен Fernet.Это результат звонка
encrypt ()
. - ttl ( int ) — Опционально может быть указано количество секунд давности сообщения.
чтобы это было действительным. Если сообщение старше
ttl
секунды (с того момента, как было изначально created) возникнет исключение. Еслиttl
нет при условии (илиНет
), возраст сообщения не рассматривается.
Возвращает байты: Исходный открытый текст.
Повышает: - cryptography.fernet.InvalidToken — Если токен
ttl
, он деформирован, или у него нет действующего подпись. - TypeError — Это исключение возникает, если токен
байт
.
- токен ( байт, ) — токен Fernet.Это результат звонка
-
decrypt_at_time
( токен , ttl , current_time ) Расшифровывает токен, используя явно переданное текущее время.Видеть
decrypt ()
для документации по токенуttl
параметры (здесь требуетсяttl
), тип возвращаемого значения и исключения поднятый.Мотивация этого метода заключается в том, чтобы клиентский код мог истечение срока действия тестового токена. Поскольку этот метод можно использовать в небезопасных как следует убедиться в правильности времени (
int (time.time ())
) передается какcurrent_time
вне тестирования.Параметры: current_time ( int ) — Текущее время.
-
extract_timestamp
( токен ) ¶ Возвращает метку времени для токена. Затем вызывающий абонент может решить, срок действия токена истекает и, например, выпускается новый токен.
Параметры: токен ( байт, ) — токен Fernet. Это результат звонка
encrypt ()
.Возвращает int: Метка времени токена UNIX.
Повышает:
- classmethod
- класс
криптография. Фернет.
MultiFernet
( папоротников ) ¶ Этот класс реализует ротацию ключей для Fernet. Требуется
список
изFernet
создает и реализует тот же API, за исключением одного дополнительного метода:MultiFernet.rotate ()
:>>> из криптографии.фернет импортный Fernet, MultiFernet >>> key1 = Фернет (Fernet.generate_key ()) >>> key2 = Фернет (Fernet.generate_key ()) >>> f = MultiFernet ([ключ1, ключ2]) >>> token = f.encrypt (b "Секретное сообщение!") >>> токен б '...' >>> f.decrypt (токен) b'Секретное сообщение! '
MultiFernet выполняет все параметры шифрования, используя первый ключ в
список
предоставлен. MultiFernet пытается расшифровать токены каждым ключом в повернуть. Криптография.fernet.InvalidToken
исключение возникает, если правильный ключ не найден в предоставленном спискеРотация ключей упрощает замену старых ключей. Вы можете добавить свой новый ключ на начало списка, чтобы начать шифрование новых сообщений и удалить старые ключи так как они больше не нужны.
Ротация токенов, предлагаемая
MultiFernet.rotate ()
— лучшая практика и способ криптографической гигиены, призванный ограничить ущерб в случае необнаруженное событие и увеличить сложность атак.Например, если сотрудник, у которого был доступ к ключам вашей компании, уволился, вы хотите сгенерировать новый ключ фернета, поверните все токены, развернутые в настоящее время используя этот новый ключ, а затем удалите старые ключи Fernet, к которым сотрудник имел доступ.-
повернуть
( сообщение ) ¶ Выполняет ротацию токена путем его повторного шифрования под
MultiFernet
первичный ключ экземпляра. Это сохраняет метку времени, которая была изначально сохранено с помощью токена.Если жетон был успешно повернут, то повернутый токен будет возвращен. Если вращение не удается, это поднимет исключение.>>> из cryptography.fernet import Fernet, MultiFernet >>> key1 = Фернет (Fernet.generate_key ()) >>> key2 = Фернет (Fernet.generate_key ()) >>> f = MultiFernet ([ключ1, ключ2]) >>> token = f.encrypt (b "Секретное сообщение!") >>> токен б '...' >>> f.decrypt (токен) b'Секретное сообщение! ' >>> key3 = Фернет (Фернет.generate_key ()) >>> f2 = MultiFernet ([ключ3, ключ1, ключ2]) >>> rotated = f2.rotate (токен) >>> f2.decrypt (повернуто) b'Секретное сообщение! '
Параметры: msg ( байт, ) — токен для повторного шифрования.
Возвращает байты: Защищенное сообщение, которое нельзя прочитать или изменить без ключ. Это URL-безопасный код в кодировке base64. Это называется «Жетон Фернета».
Повышает:
-
- класс
криптография. Фернет.
InvalidToken
¶ Для получения дополнительной информации см.
Fernet.decrypt ()
.
Использование паролей с Fernet¶
В Fernet можно использовать пароли. Для этого нужно запустить
пароль с помощью функции получения ключа, такой как PBKDF2HMAC
, bcrypt или Скрипт
.
>>> импорт base64 >>> import os >>> из cryptography.fernet import Fernet >>> из cryptography.hazmat.primitives импортировать хеши >>> из cryptography.hazmat.primitives.kdf.pbkdf2 импорт PBKDF2HMAC >>> пароль = b "пароль" >>> соль = os.urandom (16) >>> kdf = PBKDF2HMAC ( ... алгоритм = хеши.SHA256 (), ... длина = 32, ... соль = соль, ... итераций = 100000, ...) >>> key = base64.urlsafe_b64encode (kdf.получить (пароль)) >>> f = Фернет (ключ) >>> token = f.encrypt (b "Секретное сообщение!") >>> токен б '...' >>> f.decrypt (токен) b'Секретное сообщение! '
В этой схеме соль должна храниться в извлекаемом месте, чтобы чтобы получить тот же ключ из пароля в будущем.
Используемое количество итераций следует настроить так, чтобы оно было максимально возможным для вашего сервера. терпеть. Хорошее значение по умолчанию — не менее 100000 итераций, что Django рекомендовано в 2014 году.
Реализация¶
Fernet построен на основе ряда стандартных криптографических примитивов. В частности, он использует:
-
AES
дюймCBC
режим с 128-битный ключ для шифрования; с использованиемPKCS7
набивка. -
HMAC
с использованиемSHA256
для аутентификации. - векторов инициализации генерируются с помощью
os.urandom ()
.
Полную информацию см. В спецификации.
Ограничения¶
Fernet идеально подходит для шифрования данных, которые легко помещаются в памяти. Как дизайн особенность, что он не выставляет неаутентифицированные байты. Это означает, что полный содержимое сообщения должно быть доступно в памяти, поэтому Fernet обычно в настоящее время не подходит для очень больших файлов.
Как защитить конфиденциальные данные на протяжении всего их жизненного цикла в AWS
Многие рабочие процессы клиентов Amazon Web Services (AWS) требуют приема конфиденциальных и регулируемых данных, таких как данные индустрии платежных карт (PCI), личная информация (PII) и защищенная медицинская информация (ФИ).В этом посте я покажу вам метод, предназначенный для защиты конфиденциальных данных на протяжении всего их жизненного цикла в AWS. Этот метод может помочь повысить уровень безопасности данных и быть полезным для выполнения нормативных требований к конфиденциальности данных, применимых к вашей организации в отношении защиты данных при хранении, передаче и использовании.
Существующий метод защиты конфиденциальных данных в AWS заключается в использовании функции шифрования на уровне поля, предлагаемой Amazon CloudFront. Эта функция CloudFront защищает конфиденциальные поля данных в запросах на границе сети AWS.Выбранные поля защищены при загрузке и остаются защищенными во всем стеке приложения. Идея защиты конфиденциальных данных на ранних этапах их жизненного цикла в AWS является весьма желательной архитектурой безопасности. Однако CloudFront может защитить не более 10 полей и только в запросах HTTP (S) POST, которые несут полезные данные в закодированной форме HTML.
Если ваши требования превышают встроенную функцию шифрования на уровне полей CloudFront, например необходимость обрабатывать различные форматы полезной нагрузки приложений, различные методы HTTP и более 10 конфиденциальных полей, вы можете реализовать шифрование на уровне поля самостоятельно, используя функцию Lambda @ Edge в CloudFront.С точки зрения выбора подходящей схемы шифрования, эта проблема требует асимметричной криптографической системы, которая позволит открыто распространять открытые ключи на границы сети CloudFront, сохраняя при этом соответствующие закрытые ключи в безопасном месте в ядре сети. Одной из таких популярных асимметричных криптографических систем является RSA. Соответственно, мы реализуем функцию Lambda @ Edge, которая использует асимметричное шифрование с использованием криптосистемы RSA для защиты произвольного количества полей в любом запросе HTTP (S).Мы обсудим решение на примере полезной нагрузки JSON, хотя этот подход можно применить к любому формату полезной нагрузки.
Сложной частью любого решения для шифрования является управление ключами. Чтобы решить эту проблему, я использую AWS Key Management Service (AWS KMS). AWS KMS упрощает решение и предлагает улучшенную систему безопасности и операционные преимущества, которые подробно описаны ниже.
Обзор решения
Вы можете защитить данные при передаче по отдельным каналам связи с помощью безопасности транспортного уровня (TLS) и при хранении в отдельных хранилищах, используя шифрование томов, шифрование объектов или шифрование таблиц базы данных.Однако, если у вас есть конфиденциальные рабочие нагрузки, вам может потребоваться дополнительная защита, которая может отслеживать данные при их перемещении по стеку приложения. Методы детальной защиты данных, такие как шифрование на уровне полей, позволяют защитить конфиденциальные поля данных в больших полезных данных приложения, оставляя нечувствительные поля в виде открытого текста. Этот подход позволяет приложению выполнять бизнес-функции с нечувствительными полями без накладных расходов на шифрование и позволяет детально контролировать, какие поля могут быть доступны из каких частей приложения.
Лучшим способом защиты конфиденциальных данных является уменьшение их незащищенности на протяжении всего жизненного цикла. Это означает защиту данных как можно раньше при загрузке и обеспечение того, чтобы только авторизованные пользователи и приложения могли получить доступ к данным только тогда и по мере необходимости. CloudFront в сочетании с гибкостью, обеспечиваемой Lambda @ Edge, обеспечивает соответствующую среду на границе сети AWS для защиты конфиденциальных данных при передаче в AWS.
Поскольку последующие системы не имеют доступа к конфиденциальным данным, доступ к данным снижается, что помогает минимизировать влияние на соблюдение нормативных требований для целей аудита.
Количество конфиденциальных элементов данных, для которых может потребоваться шифрование на уровне полей, зависит от ваших требований. Например:
- Для приложений здравоохранения HIPAA регулирует 18 элементов персональных данных.
- В Калифорнии Закон о конфиденциальности потребителей Калифорнии (CCPA) регулирует как минимум 11 категорий личной информации — каждая со своим собственным набором элементов данных.
Идея шифрования на уровне полей заключается в индивидуальной защите конфиденциальных полей данных с сохранением структуры полезной нагрузки приложения.Альтернативой является полное шифрование полезной нагрузки, когда вся полезная нагрузка приложения зашифрована как двоичный большой двоичный объект, что делает его непригодным для использования до тех пор, пока не будет полностью расшифровано. Благодаря шифрованию на уровне полей неконфиденциальные данные, оставленные в виде открытого текста, остаются доступными для обычных бизнес-функций. При модернизации защиты данных в существующих приложениях этот подход может снизить риск сбоя приложения, поскольку формат данных сохраняется.
На следующем рисунке показано, как поля данных PII в конструкции JSON, которые приложение считает конфиденциальными, могут быть преобразованы из открытого текста в зашифрованный с помощью механизма шифрования на уровне поля.
Рисунок 1: Пример шифрования на уровне поля
Вы можете изменить открытый текст на зашифрованный, как показано на рисунке 1, используя функцию Lambda @ Edge для выполнения шифрования на уровне поля. Я обсуждаю процессы шифрования и дешифрования отдельно в следующих разделах.
Процесс шифрования на уровне поля
Давайте обсудим отдельные этапы процесса шифрования, как показано на рисунке 2.
Рисунок 2: Процесс шифрования на уровне поля
На рис. 2 показано, как CloudFront вызывает функцию Lambda @ Edge во время обработки клиентского запроса.CloudFront предлагает несколько точек интеграции для вызова функций Lambda @ Edge. Поскольку вы обрабатываете клиентский запрос и ваше поведение при шифровании связано с запросами, пересылаемыми на исходный сервер, вы хотите, чтобы ваша функция запускалась при событии исходного запроса в CloudFront. Событие запроса источника представляет собой переход внутреннего состояния в CloudFront, который происходит непосредственно перед тем, как CloudFront перенаправляет запрос на исходный сервер ниже по течению.
Вы можете связать Lambda @ Edge с CloudFront, как описано в разделе Добавление триггеров с помощью консоли CloudFront.Снимок экрана консоли CloudFront показан на рисунке 3. Выбранный тип события — Origin Request и установлен флажок Include Body , чтобы тело запроса передавалось в Lambda @ Edge.
Рисунок 3: Конфигурация Lambda @ Edge в CloudFront
Функция Lambda @ Edge действует как программируемый перехватчик в потоке обработки запросов CloudFront. Вы можете использовать эту функцию для замены тела входящего запроса на тело запроса с зашифрованными полями конфиденциальных данных.
Процесс включает в себя следующие шаги:
Шаг 1. Генерация ключа RSA и включение в Lambda @ Edge
Вы можете сгенерировать ключ RSA, управляемый клиентом (CMK), в AWS KMS, как описано в разделе Создание асимметричных CMK. Это делается во время настройки системы.
Примечание : Вы можете использовать существующие пары ключей RSA или сгенерировать новые внешние с помощью команд OpenSSL, особенно если вам нужно выполнить расшифровку RSA и управление ключами независимо от AWS KMS.Ваш выбор не повлияет на представленный здесь фундаментальный шаблон проектирования шифрования.
Для создания ключа RSA в AWS KMS требуется два ввода: длина ключа и тип использования. В этом примере я создал 2048-битный ключ и назначил его использование для шифрования и дешифрования. Криптографическая конфигурация RSA CMK, созданного в AWS KMS, показана на рисунке 4.
Рисунок 4. Криптографические свойства ключа RSA, управляемого AWS KMS
Из двух алгоритмов шифрования, показанных на рисунке 4 — RSAES_OAEP_SHA_256 и RSAES_OAEP_SHA_1, в этом примере используется RSAES_OAEP_SHA_256.Комбинация 2048-битного ключа и алгоритма RSAES_OAEP_SHA_256 позволяет зашифровать максимум 190 байт данных, чего достаточно для большинства полей PII. Вы можете выбрать другую длину ключа и алгоритм шифрования в зависимости от ваших требований к безопасности и производительности. Как выбрать конфигурацию CMK, включает информацию о спецификациях ключей RSA для шифрования и дешифрования.
Использование AWS KMS для управления ключами RSA вместо самостоятельного управления ключами устраняет эту сложность и может помочь вам:
- Применять IAM и политики ключей, которые описывают административные разрешения и разрешения на использование ключей.
- Управляйте доступом для ключей между аккаунтами.
- Мониторинг и сигнализация ключевых операций через Amazon CloudWatch.
- Аудит вызовов API AWS KMS с помощью AWS CloudTrail.
- Запишите изменения конфигурации ключей и обеспечьте соответствие ключевых спецификаций с помощью AWS Config.
- Сгенерируйте ключи с высокой энтропией в аппаратном модуле безопасности AWS KMS (HSM) в соответствии с требованиями NIST.
- Надежно храните закрытые ключи RSA без возможности экспорта.
- Выполняйте расшифровку RSA в AWS KMS, не раскрывая закрытые ключи коду приложения.
- Классифицируйте ключи и составляйте отчеты по ним с помощью ключевых тегов для распределения затрат.
- Отключить ключи и запланировать их удаление.
Вам необходимо извлечь открытый ключ RSA из AWS KMS, чтобы его можно было включить в пакет развертывания AWS Lambda. Это можно сделать из Консоли управления AWS, с помощью AWS KMS SDK или с помощью команды get-public-key в интерфейсе командной строки AWS (AWS CLI).На рисунке 5 показаны параметры Copy и Download для открытого ключа на вкладке Открытый ключ консоли AWS KMS.
Рисунок 5: Открытый ключ RSA, доступный для копирования или загрузки в консоли
Примечание : Как мы увидим в примере кода на шаге 3, мы встраиваем открытый ключ в пакет развертывания Lambda @ Edge. Это допустимая практика, поскольку открытые ключи в системах асимметричной криптографии не являются секретом и могут свободно распространяться среди объектов, которым необходимо выполнить шифрование.Кроме того, вы можете использовать Lambda @ Edge для запроса открытого ключа AWS KMS во время выполнения. Однако это вызывает задержку, увеличивает нагрузку на квоту вашего аккаунта KMS и увеличивает ваши расходы на AWS. Общие шаблоны использования внешних данных в Lambda @ Edge описаны в разделе Использование внешних данных в Lambda @ Edge.
Шаг 2. Обработка запросов HTTP API с помощью CloudFront
CloudFront получает запрос HTTP (S) от клиента. Затем CloudFront вызывает Lambda @ Edge во время обработки исходного запроса и включает тело HTTP-запроса в вызов.
Шаг 3 — Обработка Lambda @ Edge
Функция Lambda @ Edge обрабатывает тело HTTP-запроса. Функция извлекает конфиденциальные поля данных и выполняет RSA-шифрование их значений.
Следующий код является примером исходного кода для функции Lambda @ Edge, реализованной в Python 3.7:
импорт Crypto
импорт base64
импортировать json
из Crypto.Cipher импорт PKCS1_OAEP
из Crypto.PublicKey импортировать RSA
# Открытый ключ RSA в формате PEM, скопированный из AWS KMS или ваш собственный открытый ключ.RSA_PUBLIC_KEY = "----- BEGIN PUBLIC KEY ----- <ваш ключ> ----- END PUBLIC KEY -----"
RSA_PUBLIC_KEY_OBJ = RSA.importKey (RSA_PUBLIC_KEY)
RSA_CIPHER_OBJ = PKCS1_OAEP.new (RSA_PUBLIC_KEY_OBJ, Crypto.Hash.SHA256)
# Примеры имен полей конфиденциальных данных в объекте JSON.
PII_SENSITIVE_FIELD_NAMES = ["fname", "lname", "email", "ssn", "dob", "phone"]
CIPHERTEXT_PREFIX = "# 01 #"
CIPHERTEXT_SUFFIX = "# 10 #"
def lambda_handler (событие, контекст):
# Извлечь HTTP-запрос и его тело согласно документации:
# https: // docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html
http_request = событие ['Записи'] [0] ['cf'] ['запрос']
body = http_request ['тело']
org_body = base64.b64decode (тело ['данные'])
mod_body = protect_sensitive_fields_json (org_body)
body ['действие'] = 'заменить'
тело ['кодировка'] = 'текст'
body ['data'] = mod_body
вернуть http_request
def protect_sensitive_fields_json (тело):
# Шифрует конфиденциальные поля в примере полезной нагрузки JSON, показанном ранее в этом посте.# [{"fname": "Alejandro", "lname": "Rosalez",…}]
person_list = json.loads (body.decode ("utf-8"))
для person_data в person_list:
для field_name в PII_SENSITIVE_FIELD_NAMES:
если field_name не в person_data:
Продолжать
plaintext = данные_персонала [имя_поля]
ciphertext = RSA_CIPHER_OBJ.encrypt (байты (открытый текст, 'utf-8'))
ciphertext_b64 = base64.b64encode (зашифрованный текст) .decode ()
# При желании можно добавить уникальные шаблоны префиксов / суффиксов к зашифрованному тексту
персональные_данные [имя_поля] = CIPHERTEXT_PREFIX + ciphertext_b64 + CIPHERTEXT_SUFFIX
вернуть json.свалки (список_персон)
Структура события, переданная в функцию Lambda @ Edge, описана в Lambda @ Edge Event Structure. Следуя структуре события, вы можете извлечь тело HTTP-запроса. В этом примере предполагается, что полезные данные HTTP содержат документ JSON на основе конкретной схемы, определенной как часть контракта API. Входной документ JSON анализируется функцией, преобразуя его в словарь Python. Затем для извлечения значений конфиденциальных полей используются операторы собственного словаря Python.
Примечание : Если вы заранее не знаете структуру полезной нагрузки API или имеете дело с неструктурированной полезной нагрузкой, вы можете использовать такие методы, как поиск по шаблонам регулярных выражений и контрольные суммы, для поиска шаблонов конфиденциальных данных и соответствующего нацеливания на них. . Например, номера основных учетных записей кредитных карт включают контрольную сумму Luhn, которая может быть обнаружена программно. Кроме того, такие сервисы, как Amazon Comprehend и Amazon Macie, можно использовать для обнаружения конфиденциальных данных, таких как PII, в полезных нагрузках приложений.
При итерации по чувствительным полям значения отдельных полей шифруются с использованием стандартной реализации шифрования RSA, доступной в Python Cryptography Toolkit (PyCrypto). Модуль PyCrypto включен в zip-архив Lambda @ Edge, как описано в пакете развертывания Lambda @ Edge.
В этом примере используются стандартные оптимальные асимметричные дополнения шифрования (OAEP) и свойства алгоритма шифрования SHA-256. Эти свойства поддерживаются AWS KMS и позволяют позже расшифровать созданный здесь зашифрованный текст RSA с помощью AWS KMS.
Примечание : Вы могли заметить в приведенном выше коде, что мы заключаем зашифрованные тексты в скобки с предопределенными строками префикса и суффикса:
данные_персонала [имя_поля] = CIPHERTEXT_PREFIX + ciphertext_b64 + CIPHERTEXT_SUFFIX
Это дополнительная мера, которая реализуется для упрощения процесса дешифрования.
Строки префикса и суффикса помогают разграничить зашифрованный текст, встроенный в неструктурированные данные при последующей обработке, а также действуют как встроенные метаданные.Уникальные строки префиксов и суффиксов позволяют извлекать зашифрованный текст с помощью поиска по строке или регулярному выражению (регулярному выражению) во время процесса дешифрования без необходимости знать формат или схему тела данных или имена полей, которые были зашифрованы.
Отдельные строки также могут служить косвенными идентификаторами идентификаторов пары ключей RSA. Это может включить ротацию ключей и позволить использовать отдельные ключи для отдельных полей в зависимости от требований к безопасности данных для отдельных полей.
Вы можете гарантировать, что строки префикса и суффикса не могут конфликтовать с зашифрованным текстом, заключив их в скобки с символами, которые не появляются в зашифрованном тексте. Например, символ решетки (#) не может быть частью строки зашифрованного текста в кодировке base64.
Для развертывания функции Lambda как функции Lambda @ Edge требуются определенные разрешения IAM и роль выполнения IAM. Следуйте инструкциям по развертыванию Lambda @ Edge в разделе Настройка разрешений и ролей IAM для Lambda @ Edge.
Шаг 4 — Ответ Lambda @ Edge
Функция Lambda @ Edge возвращает измененное тело HTTP обратно в CloudFront и инструктирует его заменить исходное тело HTTP измененным, установив следующий флаг:
http_request ['body'] ['action'] = 'replace'
Шаг 5 — Перенаправить запрос на исходный сервер
CloudFront пересылает измененное тело запроса, предоставленное Lambda @ Edge, на исходный сервер.В этом примере исходный сервер записывает тело данных в постоянное хранилище для последующей обработки.
Процесс дешифрования на уровне поля
Приложение, которому разрешен доступ к конфиденциальным данным для бизнес-функций, может расшифровать эти данные. Пример процесса дешифрования показан на рисунке 6. На рисунке показана функция Lambda в качестве примера вычислительной среды для вызова AWS KMS для дешифрования. Эта функция не зависит от Lambda и может выполняться в любой вычислительной среде, имеющей доступ к AWS KMS.
Рисунок 6: Процесс дешифрования на уровне поля
Шаги процесса, показанного на Рисунке 6, описаны ниже.
Шаг 1. Приложение извлекает зашифрованные данные на уровне поля
Пример приложения извлекает из постоянного хранилища зашифрованные данные на уровне поля, которые были ранее записаны в процессе приема данных.
Шаг 2. Приложение вызывает лямбда-функцию дешифрования
Приложение вызывает лямбда-функцию, отвечающую за расшифровку на уровне полей, отправляя полученные данные в Lambda.
Шаг 3. Lambda вызывает API дешифрования AWS KMS
Функция Lambda использует AWS KMS для дешифрования RSA. В примере вызывается API дешифрования KMS, который вводит зашифрованный текст и возвращает открытый текст. Фактическое дешифрование происходит в KMS; закрытый ключ RSA никогда не предоставляется приложению, что является очень желательной характеристикой для создания безопасных приложений.
Примечание : если вы решите использовать внешнюю пару ключей, вы можете безопасно хранить закрытый ключ RSA в сервисах AWS, таких как AWS Systems Manager Parameter Store или AWS Secrets Manager, и контролировать доступ к ключу с помощью IAM и политик ресурсов.Вы можете получить ключ из соответствующего хранилища с помощью API хранилища, а затем расшифровать его, используя стандартную реализацию RSA, доступную на вашем языке программирования. Например, инструментарий криптографии на Python или javax.crypto на Java.
Код Python лямбда-функции для дешифрования показан ниже.
импорт base64
импорт boto3
импортный ре
kms_client = boto3.client ('кмс')
CIPHERTEXT_PREFIX = "# 01 #"
CIPHERTEXT_SUFFIX = "# 10 #"
# Эта лямбда-функция извлекает тело события, ищет и расшифровывает зашифрованный текст
# поля, окруженные предоставленными строками префиксов и суффиксов в произвольных текстах
# и заменяет поля открытым текстом на месте.def lambda_handler (событие, контекст):
org_data = событие ["тело"]
mod_data = unprotect_fields (org_data, CIPHERTEXT_PREFIX, CIPHERTEXT_SUFFIX)
вернуть mod_data
# Вспомогательная функция, выполняющая нежадный поиск строк зашифрованного текста по регулярному выражению
# вводит данные и выполняет их RSA-дешифрование с помощью AWS KMS
def unprotect_fields (org_data, префикс, суффикс):
regex_pattern = префикс + "(. *?)" + суффикс
mod_data_parts = []
курсор = 0
# Итеративный поиск шифртекстов с использованием модуля регулярных выражений Python
за матч в ре.finditer (regex_pattern, org_data):
mod_data_parts.append (org_data [курсор: match.start ()])
пытаться:
# В нашем примере зашифрованный текст был сохранен в кодировке Base64. Расшифруйте это.
ciphertext = base64.b64decode (match.group (1))
# Расшифровать зашифрованный текст с помощью AWS KMS
decrypt_rsp = kms_client.decrypt (
EncryptionAlgorithm = "RSAES_OAEP_SHA_256",
KeyId = "<ИД-ключа>",
CiphertextBlob = зашифрованный текст)
decrypted_val = decrypt_rsp ["Открытый текст"].декодировать ("utf-8")
mod_data_parts.append (decrypted_val)
кроме исключения как e:
print ("Исключение:" + str (e))
return None
курсор = match.end ()
mod_data_parts.append (org_data [курсор:])
вернуть "" .join (mod_data_parts)
Функция выполняет поиск по регулярному выражению в теле входных данных, ища строки зашифрованного текста, заключенные в скобки предопределенными строками префикса и суффикса, которые были добавлены во время шифрования.
При пошаговом переборе строк зашифрованного текста функция вызывает API-интерфейс AWS KMS decrypt (). В примере функции используются те же свойства алгоритма шифрования RSA — OAEP и SHA-256 — и Key ID открытого ключа, который использовался во время шифрования в Lambda @ Edge.
Обратите внимание, что сам Key ID не является секретом. С его помощью можно настроить любое приложение, но это не значит, что любое приложение сможет выполнять дешифрование. Контроль безопасности здесь заключается в том, что политика ключей AWS KMS должна позволять вызывающему абоненту использовать идентификатор ключа для выполнения дешифрования.Дополнительный контроль безопасности обеспечивается ролью выполнения Lambda, которая должна позволять вызывать API-интерфейс KMS decrypt ().
Шаг 4. AWS KMS расшифровывает зашифрованный текст и возвращает открытый текст
Чтобы гарантировать, что только авторизованные пользователи могут выполнять операцию дешифрования, KMS настроен, как описано в разделе Использование ключевых политик в AWS KMS. Кроме того, роль выполнения Lambda IAM настраивается, как описано в разделе «Роль выполнения AWS Lambda», чтобы предоставить ей доступ к KMS. Если выполняются и ключевая политика, и условия политики IAM, KMS возвращает расшифрованный открытый текст.Лямбда заменяет открытый текст вместо зашифрованного текста в инкапсулирующем теле данных.
Шаги третий и четвертый повторяются для каждой строки зашифрованного текста.
Шаг 5 — Lambda возвращает расшифрованное тело данных
После того, как весь зашифрованный текст был преобразован в открытый текст и подставлен в большее тело данных, функция лямбда возвращает измененное тело данных клиентскому приложению.
Заключение
В этом посте я продемонстрировал, как можно реализовать шифрование на уровне поля, интегрированное с AWS KMS, чтобы защитить рабочие нагрузки с конфиденциальными данными на протяжении всего их жизненного цикла в AWS.Поскольку ваша Lambda @ Edge предназначена для защиты данных на границе сети, данные остаются защищенными во всем стеке выполнения приложения. Помимо улучшения состояния безопасности данных, эта защита может помочь вам соблюдать правила конфиденциальности данных, применимые к вашей организации.
Поскольку вы создаете собственную функцию Lambda @ Edge для выполнения стандартного шифрования RSA, у вас есть гибкость с точки зрения форматов полезной нагрузки и количества полей, которые вы считаете важными.Интеграция с AWS KMS для управления ключами RSA и их дешифрования обеспечивает значительную простоту, более высокий уровень безопасности ключей и широкую интеграцию с другими сервисами безопасности AWS, что позволяет создать надежное решение безопасности в целом.
Используя зашифрованные поля с идентификаторами, как описано в этом посте, вы можете создавать детализированные элементы управления доступом к данным, чтобы соответствовать принципу безопасности с минимальными привилегиями. Вместо предоставления полного доступа или отсутствия доступа к полям данных вы можете гарантировать минимальные привилегии, когда данная часть приложения может получать доступ только к нужным полям, когда это необходимо, вплоть до управления доступом поле за полем.Доступ «поле за полем» можно включить, используя разные ключи для разных полей и контролируя их соответствующие политики.
Помимо защиты рабочих нагрузок с конфиденциальными данными в соответствии с передовыми практиками регулирования и безопасности, это решение можно использовать для создания обезличенных озер данных в AWS. Поля конфиденциальных данных остаются защищенными на протяжении всего жизненного цикла, в то время как поля нечувствительных данных остаются открытыми. Такой подход может позволить аналитикам или другим бизнес-функциям работать с данными, не раскрывая конфиденциальные данные.
Если у вас есть отзыв об этом сообщении, отправляйте комментарии в разделе Комментарии ниже.
Хотите больше практических материалов, новостей и объявлений о функциях AWS Security? Следуйте за нами на Twitter.
Радж Джайн
Радж — старший облачный архитектор в AWS. Он с энтузиазмом помогает клиентам создавать приложения с хорошей архитектурой на AWS. Радж — автор публикаций в Bell Labs Technical Journal, автор 3 стандартов IETF и 12 патентов в области интернет-телефонии и прикладной криптографии.В свободное время Радж любит отдыхать на свежем воздухе, готовить, читать и путешествовать.
Как написать хороший дизайн программного обеспечения doc
от Анджелы Чжан
Фото Эсте Янссенс на UnsplashКак инженер-программист, я провожу много времени за чтением и написанием проектной документации. Изучив сотни этих документов, я воочию убедился в тесной взаимосвязи между хорошей дизайнерской документацией и конечным успехом проекта.
Эта статья — моя попытка описать , что делает дизайн-документ отличным .
Статья разбита на 4 раздела:
- Зачем написать проектный документ
- Что включать в проектный документ
- Как его написать
- Процесс вокруг него
Зачем писать дизайн-документ?
Проектная документация — также известная как техническая спецификация — это описание того, как вы планируете решить проблему.
Уже есть много статей о том, почему так важно написать проектную документацию, прежде чем погрузиться в кодирование.Итак, все, что я скажу:
Проектная документация — самый полезный инструмент для обеспечения правильного выполнения работы.
Основная цель проектной документации — сделать вас более эффективными, заставив вас продумать дизайн и собрать отзывы других. Люди часто думают, что цель проектной документации — научить других о какой-то системе или служить документацией позже. Хотя это могут быть полезные побочные эффекты, они не являются самоцелью .
Как правило, если вы работаете над проектом, который может занять 1 инженерный месяц или больше, вам следует написать проектную документацию. Но не останавливайтесь на достигнутом — для многих небольших проектов также может быть полезна небольшая документация по дизайну.
Отлично! Если вы все еще читаете, вы верите в важность дизайнерской документации. Однако разные инженерные команды и даже инженеры в одной команде часто пишут проектную документацию по-разному. Итак, давайте поговорим о содержании, стиле и процессе создания хорошей дизайнерской документации.
Фото Тодда Квакенбуша на UnsplashЧто включить в проектную документацию?
Проектная документация описывает решение проблемы. Поскольку природа каждой проблемы разная, естественно, вы захотите по-разному структурировать проектную документацию.
Для начала следующий список разделов, которые вы должны, по крайней мере, рассмотреть , включая в ваш следующий проектный документ:
Заголовок и людиНазвание вашего проектного документа, автор (ы) (должны совпадать со списком людей, планирующих работать над этим проектом), рецензенты документа (мы поговорим об этом подробнее в разделе «Процесс» ниже) и дата этот документ последний раз обновлялся.
ОбзорРезюме высокого уровня, которое каждый инженер в компании должен понимать и использовать, чтобы решить, полезно ли им читать остальную часть документа. Это должно быть максимум 3 абзаца.
КонтекстОписание проблемы, почему этот проект необходим, что люди должны знать, чтобы оценить этот проект, и как он вписывается в техническую стратегию, стратегию продукта или квартальные цели команды.
Цели и нецелиРаздел Цели должен:
- описывать влияние вашего проекта на пользователя — где вашим пользователем может быть другая группа инженеров или даже другая техническая система
- указать, как измерить успех с помощью метрики — бонусные баллы, если вы можете ссылаться на панель мониторинга, которая отслеживает эти метрики.
Нецели одинаково важны для описания проблем, которые вы, , не будете исправлять, чтобы все были на одной странице.
ВехиСписок измеримых контрольных точек, чтобы ваш менеджер по маркетингу и менеджер вашего менеджера могли просмотреть его и приблизительно знать, когда будут выполнены различные части проекта. Я рекомендую вам разбить проект на основные этапы, ориентированные на пользователя, если проект длится более 1 месяца.
Используйте календарные даты, чтобы учитывать несвязанные задержки, отпуска, встречи и т. Д. Он должен выглядеть примерно так:
Дата начала: 7 июня 2018 г.
Этап 1 - MVP новой системы, работающий в темном режиме: 28 июня 2018 г.
Этап 2 - Отказ от старой системы: 4 июля 2018 г.
Дата окончания: Добавить функцию X, Y, Z в новую систему: 14 июля 2018 г.
Добавьте сюда подраздел [Обновление]
, если ETA некоторых из этих этапов изменится, чтобы заинтересованные стороны могли легко увидеть самые свежие оценки.
Помимо описания текущей реализации, вам также следует пройти через высокоуровневый пример потока, чтобы проиллюстрировать, как пользователи взаимодействуют с этой системой и / или как данные проходят через нее.
Пользователь история — отличный способ сформулировать это. Имейте в виду, что в вашей системе могут быть разные типы пользователей с разными вариантами использования.
Предлагаемое решениеНекоторые люди называют это разделом «Техническая архитектура » .Опять же, попробуйте пройтись по пользовательской истории, чтобы конкретизировать это. Не стесняйтесь включать множество подразделов и диаграмм.
Сначала представьте общую картину, а затем заполните лотов из деталей. Стремитесь к миру, в котором вы можете написать это, а затем отдохнуть на каком-нибудь необитаемом острове, и другой инженер в команде может просто прочитать это и реализовать решение, как вы описали.
Альтернативные решенияЧто еще вы учитывали при выборе решения, описанного выше? Каковы плюсы и минусы альтернатив? Рассматривали ли вы возможность покупки стороннего решения — или использования решения с открытым исходным кодом — которое решает эту проблему, а не создания собственного?
Возможность тестирования, мониторинг и оповещениеМне нравится включать этот раздел, потому что люди часто относятся к этому как к запоздалой мысли или пропускают все вместе, и почти всегда возвращается, чтобы укусить их позже, когда что-то ломается, и они понятия не имеют, как или почему.
Cross-Team Impact Как это увеличит нагрузку на вызовы и команду разработчиков?
Сколько это будет стоить?
Вызывает ли это уменьшение задержки в системе?
Есть ли уязвимости в системе безопасности?
Какие есть негативные последствия и побочные эффекты?
Как служба поддержки может сообщить об этом клиентам?
Любые открытые вопросы, в которых вы не уверены, спорные решения, которые вы хотели бы принять во внимание читателями, предлагаемые будущие работы и т. Д.Ироничное название этого раздела — «известные неизвестные».
Подробное определение объема и графикаЭтот раздел в основном предназначен для чтения только инженерам, работающим над этим проектом, их руководителям по техническим вопросам и их менеджерам. Следовательно, этот раздел находится в конце документа.
По сути, это разбивка того, как и когда вы планируете выполнять каждую часть проекта. Есть много вещей, которые требуют точного определения объема, поэтому вы можете прочитать этот пост, чтобы узнать больше об этом.
Я также склонен рассматривать этот раздел проектной документации как средство отслеживания текущих задач проекта, поэтому я обновляю его всякий раз, когда изменяется моя предварительная оценка. Но это больше личное предпочтение.
Фото rawpixel на UnsplashКак это написать
Теперь, когда мы поговорили о , что входит в хорошую дизайнерскую документацию, давайте поговорим о стиле написания. Я обещаю, что это отличается от вашего класса английского в средней школе.
Пишите как можно прощеНе пытайтесь писать, как научные статьи, которые вы читали.Они написаны, чтобы произвести впечатление на обозревателей журналов. Ваш документ написан для описания вашего решения и получения отзывов от ваших товарищей по команде. Вы можете добиться ясности, используя:
- Простые слова
- Короткие предложения
- Маркированные списки и / или нумерованные списки
- Конкретные примеры, такие как «Пользователь Алиса подключает свой банковский счет, затем…»
Диаграммы часто могут быть полезны для сравнения нескольких возможных вариантов, а диаграммы, как правило, легче анализировать, чем текст.Мне повезло с Google Drawing для создания диаграмм.
Pro Совет: не забудьте добавить ссылку на редактируемую версию диаграммы под снимком экрана, чтобы вы могли легко обновить ее позже, когда что-то неизбежно изменится.
Включите номеровМасштаб проблемы часто определяет решение. Чтобы помочь рецензентам получить представление о состоянии мира, включите реальные числа, такие как количество строк БД, количество пользовательских ошибок, задержка — и то, как они масштабируются с использованием.Помните ваши нотации Big-O?
Постарайтесь быть смешнымСпецификация — это не академическая статья. Кроме того, людям нравится читать смешные вещи, так что это хороший способ заинтересовать читателя. Но не переусердствуйте до того, чтобы отойти от основной идеи.
Если вам, как и мне, трудно быть смешным, у Джоэла Спольски (, очевидно, известен своими комедийными талантами…) есть такой совет:
Один из самых простых способов быть смешным — это быть конкретным , когда он не называется для [… Пример:] Вместо того, чтобы говорить «особые интересы», скажите «леворукие фермеры, выращивающие авакадо».
Пройдите скептический тест
Перед тем, как отправить свой проектный документ на рецензирование другим, пройдите его, выдав себя за рецензента. Какие вопросы и сомнения могут возникнуть по поводу этого дизайна? Тогда обращайтесь к ним заранее.
Пройдите тест на отпуск
Если вы сейчас уезжаете в длительный отпуск без доступа к Интернету, может ли кто-нибудь из вашей команды прочитать документ и реализовать его так, как вы планировали?
Основная цель проектной документации — не обмен знаниями, но это хороший способ оценить на предмет ясности, чтобы другие могли дать вам полезную обратную связь.
Фото SpaceX на UnsplashПроцесс
Ах да, ужасное слово P-word . Документация по дизайну поможет вам получить обратную связь, прежде чем тратить кучу времени на внедрение неправильного решения или решения неправильной проблемы. Получить хорошие отзывы — это искусство, но об этом позже. А пока давайте поговорим конкретно о том, как написать проектную документацию и получить по ней отзывы.
Прежде всего, каждый, кто работает над проектом, должен быть частью процесса проектирования.Ничего страшного, если технический руководитель в конечном итоге принимает множество решений, но все должны участвовать в обсуждении и соглашаться с дизайном. Таким образом, «вы» в этой статье — это действительно множественное число «вы», которое включает в себя всех людей, участвующих в проекте.
Во-вторых, процесс проектирования не означает, что вы смотрите на теоретические идеи доски. Не стесняйтесь пачкать руки и прототипировать потенциальные решения. Это не то же самое, что начать писать производственный код для проекта перед написанием проектной документации.Не делай этого. Но вы, безусловно, , если бы не стеснялись писать какой-нибудь хакерский одноразовый код для проверки идеи. Чтобы гарантировать, что вы пишете только исследовательский код, возьмите за правило , что ни один из этого кода прототипа не объединяется с мастер-кодом .
После этого, когда вы начнете иметь некоторое представление о том, как реализовать свой проект, выполните следующие действия:
- Попросите опытного инженера или технического руководителя вашей группы выступить в роли рецензента. В идеале это должен быть человек, которого уважают и / или знакомы с крайними случаями проблемы.При необходимости подкупите их бобой.
- Зайдите в конференц-зал с доской.
- Опишите проблему , которую вы решаете, этому инженеру (это очень важный шаг, не пропускайте его!).
- Затем объясните реализацию , которую вы имеете в виду, и убедите их, что это правильный вариант.
Выполняя все это.Часто, даже если реализация остается прежней, ваш рецензент может указать на крайние случаи, которые вам нужно рассмотреть, указать любые потенциальные области путаницы и предвидеть трудности, с которыми вы можете столкнуться позже.
Затем, после того как вы написали черновик своего проектного документа, попросите того же рецензента прочитать его еще раз и проштампуйте его, добавив свое имя в качестве рецензента в раздел Title и People проектной документации. . Это создает дополнительный стимул и ответственность для рецензента.
В связи с этим рассмотрите возможность добавления специализированных проверяющих (таких как SRE и инженеры по безопасности) для конкретных аспектов проекта.
После того, как вы и рецензенты подпишетесь, не стесняйтесь отправить проектную документацию своей команде для получения дополнительных отзывов и обмена знаниями. Я предлагаю ограничить этот процесс сбора отзывов примерно одной неделей, чтобы избежать длительных задержек. Обязуюсь ответить на все вопросы и комментарии, которые люди оставляют в течение этой недели. Оставлять зависшие комментарии = плохая карма.
Наконец, если между вами, вашим рецензентом и другими инженерами, читающими документ, есть много разногласий, я настоятельно рекомендую объединить все разногласия в разделе Обсуждение вашего документа. Затем назначьте встречу с разными сторонами, чтобы обсудить эти разногласия лично.
Если ветка обсуждения содержит более 5 комментариев, переход к личному обсуждению оказывается гораздо более эффективным. Имейте в виду, что вы по-прежнему несете ответственность за окончательный выбор, даже если все не могут прийти к единому мнению.
В недавнем разговоре об этом со Шрей Бангой я узнал, что у Quip есть похожий процесс, за исключением того, что в вашей команде есть опытный инженер или технический руководитель в качестве рецензента, они также предлагают иметь инженера в другой команде просмотрите документ. Я не пробовал это сделать, но я определенно вижу, что это помогает получить отзывы от людей с разными точками зрения и улучшить общую читаемость документа.
После того, как вы выполнили все вышеперечисленное, пора приступать к реализации! Чтобы получить дополнительные преимущества, рассматривает этот документ по дизайну как живой документ, когда вы реализуете проект .Обновляйте документ каждый раз, когда вы узнаете что-то, что заставляет вас вносить изменения в исходное решение или обновлять область видимости. Вы поблагодарите меня позже, когда вам не придется снова и снова объяснять вещи всем заинтересованным сторонам.
Наконец, давайте на секунду возьмем мета на самом деле . Как оценить успех проектной документации?
У моего коллеги Кента Ракипа есть хороший ответ на этот вопрос: Проектная документация считается успешной, если выполнена правильная рентабельность инвестиций. Это означает, что успешная проектная документация может на самом деле привести к следующему результату:
- Вы тратите 5 дней на написание проектной документации, это заставляет вас продумывать различные части технической архитектуры
- Вы получаете отзывы от рецензентов, что
X
— самая рискованная часть предлагаемой архитектуры - Вы решаете сначала реализовать
X
, чтобы снизить риски проекта - Через 3 дня вы понимаете, что
X
либо невозможно, либо намного сложнее, чем вы изначально предполагалось - Вы решили прекратить работу над этим проектом и вместо этого назначить приоритет другим работам.
В начале этой статьи мы сказали, что цель проектной документации — обеспечить выполнение правильной работы. В приведенном выше примере, благодаря этой проектной документации, вместо того, чтобы тратить потенциально месяцы только на то, чтобы прервать этот проект позже, вы потратили только 8 дней. Мне кажется, это довольно удачный результат.
Пожалуйста, оставьте комментарий ниже, если у вас есть какие-либо вопросы или отзывы! Я также хотел бы услышать о том, как вы по-другому разрабатываете документацию в своей команде.
Отдавая должное там, где полагается заслуга, я многому научился из вышеперечисленного, работая вместе с невероятными инженерами в Plaid (мы нанимаем! Приходите проектировать и строить вместе с нами несколько замечательных технических систем) и Quora.
Если вам понравился этот пост, подпишитесь на меня в Твиттере, чтобы увидеть больше сообщений о проектировании, процессах и серверных системах.
.