Wir stellen IdM vor. Ansicht vom Implementierungsingenieur


Zuvor haben wir darüber gesprochen, was IdM ist, warum es benötigt wird , wie seine Implementierung finanziell begründet werden kann usw. Heute werden wir darüber sprechen, welche Fallstricke bei der Implementierung des Systems auftreten können und wie Sie diese umgehen und sich nicht viele Zapfen zulegen können. Angenommen, wir wissen, dass es in unserem Unternehmen einige Probleme gibt, die wir mit IdM lösen könnten und möchten. Die Lösung dieser Probleme in unserem Unternehmen ist wirtschaftlich gerechtfertigt, da sie die IT-Abteilung ernsthaft entlastet, die Leistungsindikatoren des gesamten Unternehmens erhöht, indem Zeit und Ressourcen gespart werden, die erforderlich sind, um den Arbeitsbereich für neue Mitarbeiter vorzubereiten und die Befugnisse der alten Mitarbeiter zu koordinieren und zu verwalten. Und IS-Mitarbeiter werden nach der Implementierung von IdM im siebten Himmel sein und eine Menge verschiedener Berichte auf Knopfdruck erstellen, die ihr Leben bei der Durchführung von Sicherheitsaudits zur Freude ihrer selbst und des Managements erheblich vereinfachen. Und die Entscheidung wurde getroffen - "Take!".

Wir formulieren funktionale Anforderungen


Als erstes müssen Sie ein Dokument mit dem Namen „Funktionale Anforderungen“ erstellen. Ich denke, die Bedeutung der Verfügbarkeit und Alphabetisierung des Inhalts dieses Dokuments steht außer Zweifel. Idealerweise sollte er bereit sein, bevor er eine bestimmte Lösung auswählt. Es ist klar, dass während der Pilotversuche und während der Vorverkaufsveranstaltungen viele Male verschiedene Personen besprochen und erklärt wurden, was zu tun war. Trotzdem sollte der Umfang des Projekts klar definiert und auf Papier festgelegt werden. Funktionale Anforderungen sind eine Art Ausgangspunkt, von dem aus das gegenseitige Verständnis zwischen allen Prozessbeteiligten sowohl des Kunden als auch des Auftragnehmers aufgebaut wird.

Die erforderliche Systemfunktionalität sollte logisch und finanziell gerechtfertigt, implementiert und mit ihren Fähigkeiten vereinbar sein. Dies ist im Wesentlichen eine Beschreibung der Geschäftsprozesse auf oberster Ebene, die mithilfe der IdM-Implementierung automatisiert werden müssen.

Betrachten Sie zur Verdeutlichung ein einfaches Beispiel. Stellen Sie sich vor, Sie müssen die folgenden Personalprozesse automatisieren:

  • Aufnahme eines neuen Mitarbeiters (Erstellung von Konten mit Primärrechten, je nach Position und Einheit).
  • Anforderung neuer Anmeldeinformationen für Mitarbeiter (Koordination, automatische und halbautomatische Ausführung von Anträgen).
  • Versetzung eines Mitarbeiters auf eine Stelle (Erteilung von Befugnissen entsprechend einer neuen Position, Bestätigung oder Widerruf alter Befugnisse).
  • Entlassung eines Mitarbeiters (Sperrung aller seiner Konten mit Rückruf aller Rollen).

In den funktionalen Anforderungen für den Prozess der Akzeptanz neuer Mitarbeiter sollten Sie Folgendes schreiben: Das System liest Informationen über den neuen Mitarbeiter aus dem Personalsystem, erstellt ein Konto in Active Directory (AD), weist die nach Position erforderlichen Gruppen zu, erstellt ein Konto in CRM, weist ein Profil und Rollen zu in Übereinstimmung mit offiziellen Pflichten.

Es ist nicht erforderlich, dort die Anforderung einzugeben, dem CEO Kaffee zuzubereiten, wenn er das Büro betritt. Dies ist keine IdM-Funktion, obwohl mit einer API auch die Kaffeemaschine realisierbar ist :)

Wir zeichnen ein Diagramm des Zusammenspiels von Systemkomponenten


In dieser Phase werden zusätzlich zu den tatsächlich automatisierten Prozessen die wichtigsten integrierbaren Systeme identifiziert, die interessierten Abteilungen identifiziert und der globale IdM-Platz in der internen Informationsumgebung des Unternehmens geschätzt. Die zur Unterstützung von IdM erforderlichen Ressourcen werden ebenfalls festgelegt, der Umfang des Projekts wird sichtbar, die Phasen und Daten der Implementierung werden ungefähr festgelegt.

Daher haben wir festgestellt, dass Sie für die Implementierung dieser automatisierten Prozesse in der ersten Phase nur drei Systeme integrieren müssen:

  • mit dem Personalsystem 1C: ZUP,
  • mit Microsoft Active Directory als primärem Anbieter von Benutzerrechten in der Unternehmensinfrastruktur,
  • mit dem wichtigsten CRM-Geschäftssystem, das von einem Drittanbieter im Rahmen der Bestellung geschrieben und verwaltet wird.

Sie müssen sich sofort das Interaktionsschema der Komponenten des zukünftigen Systems vorstellen.

Wie Sie sehen können, steht IdM im Mittelpunkt, und dies ist kein Zufall. Nach der Implementierung wird IdM das „A und O“ sein, das alle relevanten Informationen über die Mitarbeiter des Unternehmens, alle ihre Konten in in IdM integrierten Systemen und die Rollen, Gruppen und Behörden enthält, die Mitarbeiter in diesen Systemen haben sollten. Dank der „Tentakel“ von IdM, die alle damit verbundenen Systeme durchdringen, werden durch die Übertragung von Ivanov Sergey Petrovich von der Buchhaltungsabteilung in die Rechtsabteilung des Unternehmens, die automatisch im Personalinformationssystem registriert ist, automatisch die Gruppen und Attribute seines Kontos in AD geändert und seine Rollen und Profile in anderen Unternehmenssystemen geändert. mit dem automatischen Start aller notwendigen Genehmigungs- und Benachrichtigungsprozesse. All dies funktioniert jedoch nur, wenn alle Komponenten des Systems gut und korrekt miteinander integriert sind. Und damit dies geschieht, muss man alles sorgfältig durchdenken und gestalten.

Mit diesem Gepäck gehen wir zum Kauf aus.

Also wird die IdM-Lösung ausgewählt, der implementierende Auftragnehmer definiert, die Lizenzen gekauft, die Arbeit bezahlt, es ist Zeit, sie zu implementieren. Wir werden weiter darüber sprechen, wie sichergestellt werden kann, dass nicht alle guten Unternehmen sterben, ohne wirklich geboren zu werden.

Wir bilden ein Projektteam und führen eine Umfrage vor dem Projekt durch


Das erste, was Sie unmittelbar nach dem Kauf von IdM tun müssen (ohne die feierliche Erhöhung des Glases für den Deal), ist die Schaffung eines Projektteams. Ja, das Projektteam des Kunden muss es sein. Der Erfolg der gesamten Veranstaltung hängt von ihrer Zusammensetzung ab. Es sollte Vertreter aller interessierten Abteilungen umfassen, die über die erforderlichen und ausreichenden Befugnisse verfügen , um verschiedene vorwiegend technische Probleme, die während der Umsetzung auftreten, schnell zu lösen.

Als nächstes folgt die Zeit der Vorentwurfsumfrage - die wichtigste Phase, in der vor allem der Kunde in die Entwurfsaktivitäten eintauchen muss.

Hier sind die sehr notwendigen und ausreichenden Befugnisse der Teilnehmer des Projektteams des Kunden erforderlich, um dem Auftragnehmer alle erforderlichen Informationen über die interne Struktur der Unternehmensprozesse zu sammeln und zur Verfügung zu stellen. Es geht um die interne Struktur der Unternehmensprozesse! Jeder in den Funktionsanforderungen beschriebene automatisierte Prozess muss von Anfang bis Ende gründlich untersucht werden. Wer führt die erste Sammlung von Informationen, deren Zusammensetzung und Format durch, in welchem ​​System werden die Informationen eingegeben, in welcher Form, wie, mit welchen Protokollen und mit welcher Software? Wer benötigt diese Informationen für weitere Aktivitäten und in welcher Form benötigt er sie, wo sollten Spuren der durchgeführten Operationen vorhanden sein? Mit einem Wort, alles, alles, alles, was jeden untersuchten Prozess betrifft.

Wir schreiben TK


Am Ende der Umfrage vor dem Projekt sollte ein weiteres Dokument erhalten werden, das unter dem Gesichtspunkt der Implementierung wichtig ist (noch wichtiger als die funktionalen Anforderungen) - die Leistungsbeschreibung ( Terms of Reference, TOR). Was soll drin sein? Es ist wichtig, nichts zu verpassen und alles sorgfältig durchzudenken. Weil das Weglassen kleiner und scheinbar unbedeutender Nuancen zu großen Problemen bei der Implementierung führen kann.

In diesem Zusammenhang müssen Sie beim Entwerfen einer Implementierungslösung in TK zunächst die automatisierten Prozesse selbst gründlich ausarbeiten. Fast das gleiche wie in den funktionalen Anforderungen, jedoch detaillierter, mit Einzelheiten, die den gesamten Lebenszyklus der Informationen abdecken, die in die Eingabe jedes Prozesses eingehen, bis sie herauskommen.

Zum Beispiel der Personalprozess. Die Aufnahme eines neuen Mitarbeiters in die ToR sieht folgendermaßen aus:

  1. Ein HR-Angestellter gibt Informationen über einen neuen Mitarbeiter in das 1C: ZUP-HR-System ein. Obligatorisch werden die folgenden Felder ausgefüllt: ... (es wird aufgeführt, welche).
  2. IdM empfängt Daten über einen neuen Mitarbeiter vom Personalsystem 1C: ZUP, bestimmt die Position und Einheit des neuen Mitarbeiters. Erstellt ein neues Mitarbeiterprofil in IdM. Das Login wird nach solchen und solchen Regeln gebildet, das Passwort nach solchen und solchen. Die Anmeldeinformationen für das Passwort des neuen Mitarbeiters werden dort und dort über solche Kommunikationskanäle gesendet (geben Sie an, woher IdM die Adresse bezieht).
  3. IdM erstellt automatisch ein Konto in AD mit den Attributen (Liste) im Verzeichnis (OU - Organisationseinheit), die der Einheit des neuen Mitarbeiters entsprechen. Das Login wird nach solchen und solchen Regeln gebildet, das Passwort nach solchen und solchen. Die Daten zum Login und Passwort des neuen Mitarbeiters werden über solche Kommunikationskanäle hin und her gesendet (geben Sie an, woher IdM den Adressaten bezieht und welche Parameter der Kommunikationskanal hat).
  4. Das erstellte AD-Konto wird in Gruppen eingeteilt (wir listen oder geben "nach dem Vorbild" an). Das Vorbild muss auch in einem ToR in einem separaten Kapitel durchdacht und beschrieben werden. Die Ernennung solcher Gruppen erfolgt in Absprache mit diesen Personen (wir listen auf). Das System generiert Benachrichtigungen über die Zuweisung von Befugnissen an einen neuen Mitarbeiter (geben Sie den Empfängeridentifizierungsalgorithmus an; beschreiben Sie die Genehmigungsrouten separat) sowie Erinnerungen an den Koordinator über die Notwendigkeit, die Anwendung zu koordinieren (geben Sie die Empfängeridentifizierungsalgorithmen, den Start, das Ende und die Häufigkeit von Erinnerungen an).
  5. Nach dem Erstellen eines Kontos in AD initiiert IdM die Erstellung eines Exchange-Postfachs für den neuen Mitarbeiter. Informationen zum neuen Postfach werden in IdM gespeichert und auf der Karte des Mitarbeiters angezeigt.

In etwa gleicher Weise beschreiben wir die Interaktion des Systems mit CRM ...

Während der Betrachtung automatisierter Prozesse auf diese Weise wird das Objektmodell jedes Systems, die Zusammensetzung der Attribute jedes Objekttyps klar, ein Bild der Bewegung und Transformation von Daten zwischen den Attributen verschiedener Objekte wird gebildet. Außerdem werden Verbindungen zwischen Objekten sichtbar und zusätzliche Prozesse werden aufgedeckt, z. B. die Aufrechterhaltung der Datenkonsistenz in allen Systemen.

Ein einfaches Beispiel: Wenn Sie den Namen des Mitarbeiters im Personalsystem ändern, muss sich sein Name in den Profilen aller anderen mit IdM verbundenen Systeme ändern. Es kann sich jedoch nicht ändern, da in einigen Systemen der Name einfach nicht gespeichert wird.

Ein Beispiel ist komplizierter: Voraussetzung ist, dass das AD-Konto eines neuen Mitarbeiters in der Organisationseinheit erstellt wird, die seiner Einheit entspricht. Es stellt sich die Frage, was zu tun ist, wenn eine neue Einheit im Personalsystem eingerichtet wird, diese jedoch noch nicht in AD erstellt wurde. Somit wird ein separater Prozess zur Reproduktion der im Personalsystem in AD gespeicherten Organisationsstruktur aufgedeckt, der auch im ToR beschrieben werden sollte.

Integriert in Systeme


Wie Sie sehen können, ist die Bildung von TK ein iterativer Prozess. Nachdem Sie die Objekte und Aktionen identifiziert haben, die mit ihnen ausgeführt werden müssen, wird klar, welche Funktionen im Konnektor zum integrierten System implementiert werden müssen. Und hier näherten wir uns reibungslos einer weiteren wichtigen Phase der IdM-Implementierung - der tatsächlichen Integration in Systeme . In Wahrheit kann diese Phase sowohl für den IdM-Integrator als auch für das Unternehmen, in dessen Infrastruktur IdM implementiert wird, sehr schmerzhaft sein.

Damit nichts Schlimmes passiert, müssen Sie einige allgemeine Prinzipien verstehen, die bei der Integration verschiedener Softwareprodukte gelten. Zunächst müssen Sie verstehen, wie wichtig es ist, eine API in einem integrierten System zu haben, um sie in IdM zu integrieren. Connector und API sind zwei verschiedene Dinge. Wenn der Integrator angibt, dass er Konnektoren zu verschiedenen Systemen hat oder bereit ist, einen Konnektor in ein System zu schreiben, bedeutet dies nicht, dass das Integrationsproblem vollständig gelöst ist und das Kundenunternehmen nichts dagegen unternehmen muss.

Ich werde mit einem Beispiel erklären. Um ein Kraftwerk mit einem Bügeleisen zu verbinden, um dieses zur Erfüllung seiner bekannten Funktionen zu heizen, muss das Kraftwerk über eine Steckdose und das Bügeleisen über einen Stecker verfügen. Buchse und Stecker. 2 Dinge. Nicht einer. Über eine Steckdose an der Seite des Kraftwerks und einen Stecker an der Seite des Bügeleisens wird das Bügeleisen in das Stromnetz integriert. Bei der IdM-Integration mit einem anderen System sind außerdem zwei Dinge erforderlich: ein Connector auf der IdM-Seite und eine API auf der Systemseite. Es ist wichtig! Andernfalls können verschiedene unangenehme Vorfälle auftreten. Der Connector dient nur dazu, die erforderlichen Daten vom System in der Form zu empfangen, in der er sie sendet, und sie in der Form an IdM zu übertragen, in der IdM sie empfangen kann. Der gleiche Connector funktioniert in die entgegengesetzte Richtung: Er empfängt einen Befehl und einen Datensatz von IdM in der Form, in der IdM sie ausgibt, und überträgt dies alles in der Form an das System, in der das System versteht, was es tun muss. ABER! Das System sollte im Prinzip in der Lage sein, die für IdM erforderlichen Daten zu erzeugen und die erforderlichen Befehle auszuführen, um mit IdM zusammenzuarbeiten. Dies ist der Hauptzweck der API - Bereitstellung einer Schnittstelle, auf die IdM mit einem Connector zugreifen kann, um verschiedene Vorgänge auf dem System auszuführen.

In der Regel konzentriert sich ein gewissenhafter Integrator bereits vor dem Verkauf von IdM auf die Notwendigkeit, dass der Kunde eine API für alle mit IdM verbundenen Systeme bereitstellt, und meldet die Anforderungen für die Implementierung dieser APIs. Dies ist im Wesentlichen eine Aufzählung von Funktionen mit Eingabe- und Ausgabeparametern. Zum Beispiel:

  • Suchen Sie nach allen Systemkonten. Es gibt keine Eingabeparameter. Die Ausgabe ist eine Liste aller Konten mit all ihren Attributen.
  • Suchen Sie nach einem Konto anhand der ID. Der Eingabeparameter ist die Kennung des Ultraschalls. Abmelden - Ein Konto, das die Suchkriterien mit allen Attributen erfüllt.
  • Erstellen Sie ein Konto. Eingabeparameter - Login, Passwort, vollständiger Name ... Exit - Kennung des neuen Ultraschalls.
  • Kontosperrung. Eingabeparameter - Kennung des Ultraschalls. Es gibt keine Ausgabeparameter.
  • Usw…

Das heißt, eine API besteht aus einer Reihe von Funktionen, die für die Interaktion mit IdM erforderlich sind. Das Problem ist, dass ein Teil dieser Funktionen im System möglicherweise überhaupt nicht in der richtigen Form implementiert ist. Nur weil das noch nicht nötig war. Ein Teil kann implementiert werden, jedoch als komplexer, mehrstufiger, schrittweiser Prozess. In einem automatisierten System für inländische Bankgeschäfte wird beispielsweise vor dem Erstellen eines Benutzerkontos drei verschiedene Verzeichnisse mit einer Reihe von Hilfsattributen und Flags ausgefüllt. Oder einige Funktionen können in einer einfachen Form implementiert, aber nicht veröffentlicht werden, dh Funktionen können nicht von außen verwendet werden. Die API wurde entwickelt, um all diese Probleme zu lösen. APIs sind Funktionen, die die für die Integration eines integrierten Systems in IdM erforderlichen Vorgänge in der richtigen, korrekt funktionierenden Form ausführen und für ihren externen Aufruf veröffentlicht werden. Damit jeder Softwareentwickler, der die interne Küche des Systems selbst nicht kennt, diese verwenden und problemlos das tun kann, was benötigt wird.

Dann stellt sich in der Regel die Frage für Kunden, die einem IdM-Implementierungsingenieur quälende Zahnschmerzen bereitet: Warum kann ein API-Integrator keinen IdM-Integrator auf einem System implementieren?

Stellen Sie sich ein komplexes Unternehmensverwaltungssystem vor, in dem die Verwaltung von Benutzerrechten jetzt mithilfe von IdM implementiert werden muss. Vendor hat dieses System seit den 90er Jahren geschrieben. Im Laufe eines langen Lebens hat sich seine Architektur viermal verändert. Das Subsystem zur Verwaltung von Benutzerrechten konnte mit der raschen Entwicklung der Funktionsweise des Systems selbst nicht Schritt halten und wurde von mehreren Generationen von Programmierern nach ihrem nicht immer logischen und vernünftigen Verständnis nach dem Prinzip „wie ich es selbst herausgefunden habe“, dh auf Krückenart, implementiert. Es besteht keine Notwendigkeit, über die Dokumentation all dieser Aktionen zu sprechen. Im Moment funktioniert irgendwie alles. Die Mitarbeiter des Verkäufers klettern nur ungern und besorgt in den alten Code ihres Systems, wenn dringend ein schrecklicher Fehler behoben werden muss. Sie taufen dreimal und besprühen den Monitor mit Weihwasser, das mit Tamburinen überzogen ist. Gott verbietet also, keine Krücke zu brechen, damit nicht alles herunterfällt .



Und jetzt ist die Kundenfirma, die dieses magische Produkt verwendet, die goldene Zeit gekommen, um IdM zu implementieren. API-Anforderungen angegeben, keine API. Dem Kunden ist es egal, wer die API schreibt. Er schlug mit der Faust auf den Tisch mit den Worten "Ich weine riesige Millionen, mach es" und verließ das Meeting und schlug absichtlich die Tür zu. Dem Anbieter von magischer Software ist das ebenfalls egal. Er wird nichts umsonst tun, aber sie haben vergessen, Geld in das Budget für die Implementierung der API zu stecken, um lebhafte Regenbogenträume darüber zu verwirklichen, wie alles nach der Einführung von IdM cool sein wird. Gleichzeitig wird der Vertrag unterzeichnet, „das Geld wurde bezahlt“ und der wilde Sprung beginnt.

Der arme Pascha-Programmierer, ein Mitarbeiter des IdM-Integrators, versucht krampfhaft zu verstehen, was Kniebeugen tun müssen, um normale Reaktionen aus dem System zu erhalten. Es untersucht öffentliche Quellen, geizige, veraltete Dokumentationen, versteht den Quellcode eines unbekannten Systems und beschädigt die Telefone des Anbieters. Nach ein paar Wochen voller Prüfungen stellt er fest, dass Kniebeugen nicht genug sind, dass Hüpfen erforderlich ist und sogar Saltos, und nicht die Tatsache, dass dies auch hilft ... Und nach einem Monat erscheint ein Konnektor, eine Art von einem, der mehr oder weniger funktioniert. Leichte Fehlfunktionen, na ja, wie es passiert ist. Der arme Pascha-Programmierer im Stab des Integrators wurde beim Schreiben grau. Das magische System ist integriert, aber das Problem ist, dass die Konten nicht sehr korrekt erstellt werden und der Systemadministrator das Konto manuell in den Arbeitszustand zurücksetzen muss. Die Passwörter ändern sich jedes Mal, und die „glückliche“ Marina Ivanovna von der Buchhaltung blockiert ihr Konto immer wieder. Mitarbeiter des "Business" überfluten den technischen Support mit bösartigen Beschwerden: "Wie lange ???", "Unmöglich zu arbeiten!", "Mach was es war ..." Zunächst fordert der Kunde, alles zu reparieren und schlägt mit einem Pantoffel auf den Tisch, damit er den bereits kahlen Pascha-Programmierer erreicht. Aufgrund häufiger Ausfälle und wachsender Unzufriedenheit in den Geschäftsbereichen wird die IdM-Integration in das Magic-System eingestellt.

Und was wirst du hier machen? Wer ist schuld? Wenn nicht ein Systemanbieter, wer sollte dann all das Chaos, das er angerichtet hat, aus Verzeichnissen, Funktionen, Platten, Triggern, Flaggen und Krücken aussortieren? IdM-Integrator? Woher weiß er, wie man eine Funktion in einem System korrekt implementiert, das ein Anbieter nicht herausfinden kann? Und wenn es geht, dann für ein beträchtliches Geld? Ja, ich verdicke meine Farben jetzt sehr; Es gibt Ausnahmen, wenn das System nicht sehr komplex ist und Sie es ohne eine spezielle API integrieren können. Aber sei vernünftig. Wenn das Ziel darin besteht, unnötige Probleme zu vermeiden, dem Unternehmen zu Wachstum und Gewinn zu verhelfen (was meiner Meinung nach das Hauptziel der IT-Abteilung in jedem Unternehmen ist) und den reibungslosen Betrieb aller Systeme zu genießen, sollten Sie über Möglichkeiten zur Integration in die Systeme nachdenken. Stellen Sie die notwendigen Kosten für die Untersuchung der Integrationsmöglichkeiten und die kompetente Umsetzung der fehlenden Komponenten in das Budget. Geiz zahlt sich zweimal oder sogar dreimal aus. Speichern Sie am Ende Pascha-Programmierer: D. Er ist fast kahl. Und vergessen Sie nicht, die Integrationsmethoden in TK zu korrigieren!



Wir bauen ein Vorbild des Unternehmens auf


Ich möchte auch besonders auf die Bildung des Vorbilds des Unternehmens hinweisen . Tatsache ist, dass jedes System seinen eigenen exklusiven Satz von sogenannten "autorisierenden" Entitäten hat - Objekte, die Benutzerrechte im System bereitstellen. Alle Arten von Gruppen, Rollen, Profilen, Zwecken, Verzeichnissen, Berechtigungen, Arten von Vorgängen usw. können dieser Objektkategorie zugewiesen werden ... Die Granulation von Rechten kann sehr tiefgreifend sein, wodurch wir eine immens große Anzahl verwalteter Objekte erhalten. Beispielsweise können einige Sicherheitsgruppen in AD mehrere hundert oder sogar Tausende umfassen. In einigen Finanzmanagementsystemen können jedem Benutzer aus einer Million im Kontenplan enthaltene Exklusivrechte für jedes Konto zugewiesen werden. Und wenn wir uns in SAP integrieren? Die Anzahl der Atomrechte kann in Hunderttausenden und sogar Millionen gemessen werden.

Darüber hinaus kann das System hierarchische Verschachtelungen und komplexe Beziehungen zwischen verschiedenen Arten autorisierter Entitäten unterstützen. Dies an sich stützt sich auf eine separate Untersuchung der Möglichkeiten zur Verwaltung von Benutzerrechten im System. IdM, , , , IdM. . . , .

:

  • IdM , . .
  • . IdM , « ».
  • . .


, , . , : , , . : – 50% . , , , . IdM, .

. .

, Solar inRights

Source: https://habr.com/ru/post/de461181/


All Articles