API MongoDB — Легко активувати та використовувати

pic

Фото від Glenn Carstens-Peters на Unsplash

Oracle Autonomous Database включає потужний MongoDB API, що забезпечує безшовну інтеграцію з клієнтами MongoDB, при цьому скориставшись перевагами передових функцій безпечної та автоматизованої хмарної платформи Oracle.

Хоча MongoDB API попередньо налаштований і готовий до використання, ми зрозуміли, що є кілька поширених запитань щодо його увімкнення. Ця стаття має на меті відповісти на найбільш поширені з них.

Чому важливі правила контролю доступу?

Заходи безпеки не дозволяють увімкнути та експлуатувати MongoDB API без належних правил контролю доступу. Ці правила гарантують, що ви точно знаєте, які клієнти або системи мають доступ до цього інтерфейсу. Вони захищають ваші дані та забезпечують безпечний доступ. Це не просто незручність — це ваша безпека: чи хочете ви стати наступним відомим ім’ям на заголовках новин про витоки даних? Ми вважаємо, що ні.

PS: Якщо ви використовуєте свою автономну базу даних у приватній мережі, ви знаєте, хто має доступ, згідно з віртуальною хмарною мережею (Virtual Cloud Network, VCN) вашої оренди. Якщо це ваша налаштування, вас може зацікавити цей блог, який описує, як налаштувати MongoDB API для приватних кінцевих точок.

Покроково: увімкнення та використання MongoDB API

Налаштування правил контролю доступу

Це можна зробити під час процесу створення, як показано в наступному фрагменті. Ви можете вибрати конкретну IP-адресу, наприклад, вашого клієнта, CIDR-блок або, для баз даних, що працюють у приватній мережі хмари, віртуальну хмарну мережу.

pic

Налаштування правил контролю доступу під час створення

Як видно на скріншоті, є простий спосіб отримати IP-адресу вашого клієнта, який підключається до OCI консолі. Якщо клієнт, якого ви хочете увімкнути, — це інший комп’ютер, вам потрібно буде використовувати його IP-адресу. Консоль не може знати цього, вона тільки може отримати IP-адресу комп’ютера, на якому ви працюєте у браузері. Залежно від операційної системи ви зможете легко отримати IP-адресу через налаштування мережі або через командний рядок, наприклад, за допомогою такої команди в Linux:

hbaer@phoenixXXXXX> curl ifconfig.me  
148.x.x.x

Після створення ви можете перевіряти та керувати налаштуваннями через консоль або будь-який API хмари.

Перевірка статусу MongoDB API

Залежно від типу робочого навантаження, ваш MongoDB API може бути вже увімкнений, але краще перевірити це швидко. Перейдіть до консолі та виберіть вкладку "Інструменти" (Tools), щоб побачити поточний статус.

pic

Перевірка та керування MongoDB API

Чи налаштовані правила контролю доступу? Перевірено. Чи увімкнено MongoDB API? Перевірено. Тепер час його використовувати.

Перевірка з'єднання з MongoDB API

Строка підключення відображається в консолі і може бути скопійована безпосередньо звідти.

pic

Вона буде виглядати ось так:

mongodb://[user:password@]P6J9Y7KH8ABCDEF-MORETHANMONGO.adb.ap-tokyo-1.oraclecloudapps.com:27017/[user]?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true

Давайте перевіримо цю строку підключення, використовуючи вашого користувача ADMIN. Це лише для того, щоб виключити проблеми з привілеями бази даних. (Більше про це пізніше.)

Необхідно замінити "user" та "password" на ваші налаштування та видалити квадратні дужки. Зверніть увагу — є два місця для вказівки користувача! Також, як зазначено тут, не забудьте використовувати процентне кодування для будь-яких спеціальних символів у вашому паролі.
pic

Фото від Glenn Carstens-Peters на Unsplash

Oracle Autonomous Database включає потужний MongoDB API, що дозволяє безшовно інтегруватися з клієнтами MongoDB, при цьому використовуючи переваги передових можливостей безпечної та автоматизованої хмарної платформи Oracle.

Хоча MongoDB API попередньо налаштовано і готово до використання, ми зрозуміли, що існує набір поширених запитань щодо його активації. Ця стаття має на меті відповісти на найбільш поширені з них.

Чому важливі правила контролю доступу?

Заходи безпеки не дозволяють увімкнути та використовувати MongoDB API без належних правил контролю доступу. Ці правила гарантують, що ви точно знаєте, які клієнти або системи мають доступ до цього інтерфейсу. Вони захищають ваші дані та забезпечують безпечний доступ. Це не просто незручність — це ваша безпека: чи хочете ви стати наступним відомим іменем на заголовках новин про витоки даних? Ми так не думаємо.

PS: Якщо ви використовуєте свою автономну базу даних у приватній мережі, ви знаєте, хто має доступ, залежно від віртуальної хмарної мережі (Virtual Cloud Network, VCN) вашої оренди. Якщо це ваше налаштування, вас може зацікавити цей блог, який описує, як налаштувати MongoDB API для приватних кінцевих точок.

Покрокова інструкція: увімкнення та використання MongoDB API

Налаштування правил контролю доступу

Це можна зробити під час створення, як показано в наступному фрагменті. Ви можете вибрати конкретну IP-адресу, наприклад, вашого клієнта, CIDR-блок або, для баз даних, що працюють у приватній мережі в хмарі, віртуальну хмарну мережу.

pic

Налаштування правил контролю доступу під час створення

Як видно на скріншоті, є простий спосіб отримати IP-адресу вашого клієнта, який підключається до OCI консолі. Якщо клієнт, якого ви хочете увімкнути, це інший комп'ютер, потрібно буде використовувати його IP-адресу. Консоль не може знати цього, вона може отримати тільки IP-адресу комп'ютера, на якому ви працюєте у браузері. Залежно від операційної системи, ви зможете легко отримати IP-адресу через налаштування мережі або через командний рядок, наприклад, за допомогою наступної команди на Linux:

hbaer@phoenixXXXXX> curl ifconfig.me  
148.x.x.x

Після створення ви можете перевіряти та керувати налаштуваннями через консоль або будь-який Cloud API.

Перевірка статусу MongoDB API

Залежно від типу робочого навантаження, ваш MongoDB API може вже бути увімкнений, але краще перевірити це швидко. Перейдіть до консолі і виберіть вкладку "Інструменти" (Tools), щоб побачити поточний статус.

pic

Перевірка та управління MongoDB API

Чи налаштовані правила контролю доступу? Перевірено. Чи увімкнено MongoDB API? Перевірено. Тепер час його використовувати.

Перевірка підключення до MongoDB API

Строка підключення відображається в консолі і може бути скопійована безпосередньо звідти.

pic

Вона виглядатиме ось так:

mongodb://[user:password@]P6J9Y7KH8ABCDEF-MORETHANMONGO.adb.ap-tokyo-1.oraclecloudapps.com:27017/[user]?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true

Давайте перевіримо цю строку підключення, використовуючи вашого користувача ADMIN. Це лише для того, щоб виключити проблеми з привілеями бази даних. (Більше про це пізніше.)

Необхідно замінити "user" та "password" на ваші налаштування і видалити квадратні дужки. Зверніть увагу — є два місця для вказівки користувача! Також, як зазначено тут, не забудьте використовувати процентне кодування для будь-яких спеціальних символів у вашому паролі.
Отже, з моїм паролем @least1/2#?4Me, рядок підключення для ADMIN виглядатиме наступним чином:

mongodb://admin:%40least1%2F2%23%3F4Me@P6J9Y7KH8ABCDEF-MORETHANMONGO.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true

Найпростіший спосіб підключитися до MongoDB API — це використовувати mongosh. Його можна завантажити зі сторінки Mongo, або встановити через інші засоби, наприклад, brew на Mac.

pic

Успішне підключення до MongoDB

Що робити, якщо у мене не вийшло?

Як і в багатьох інших випадках, інколи потрібно зробити більше ніж одну спробу. Ви прочитали цей блог не один раз, а воно все одно не працює. Ви перевірили всі налаштування.

Неправильні або неповні правила контролю доступу

Щоб переконатися, що ваш клієнт дійсно може підключитися до бази даних і ви впевнені, що налаштування правильні, ви також повинні мати можливість підключитися через будь-який SQL інструмент. Правила контролю доступу однакові для всіх з'єднань. Якщо ви отримуєте помилку за допомогою sqlcl або sqlplus, щось не так з вашими правилами контролю доступу.

Поширена помилка при неправильних правилах контролю доступу для MongoDB API:

MongoNetworkError: Client network socket disconnected before secure TLS connection was established

На цьому етапі повідомлення про помилку SQL*Net (визнано) кращє:

ORA-12506: TNS:listener rejected connection based on service ACL filtering

Добре, ви виключили проблеми з правилами контролю доступу, але все ще не можете підключитися своїм користувачем або успішно використовувати MongoDB API. Давайте перевіримо привілеї вашого користувача.

Недостатні привілеї в базі даних

Отже, все працює з ADMIN, але мій новостворений користувач просто не хоче підключатися. Або ви можете підключитися, але виникають труднощі з використанням команд MongoDB.

Можливо, ви побачите повідомлення про помилку, як це, коли намагаєтеся підключитися:

MongoServerError: Database connection unavailable. Ensure that the user exists and the schema is enabled for use with Oracle REST Data Services. A schema can be enabled by calling the PL/SQL procedure ORDS.ENABLE_SCHEMA.

Або ви можете успішно підключитися, але не можете створити нову колекцію:

beth> db.foo.insertOne({"a":"c"})  
Uncaught:  
MongoServerError: ORA-06550: line 2, column 3:  
PLS-00201: identifier 'DBMS_SODA_ADMIN' must be declared  
ORA-06550: line 2, column 3:  
PL/SQL: Statement ignored

Обидва ці повідомлення про помилки вказують на те, чого не вистачає, тому пора перевірити привілеї, надані цьому користувачу. Мінімальні привілеї, які потрібні користувачу, це:

  • GRANT CREATE SESSION
  • GRANT SODA_APP
  • Увімкнення використання ORDS (Web) через ORDS_ADMIN

Проте ви не зможете нічого робити з базою даних без цього, тому потрібно додати хоча б CREATE TABLE та квоту на таблицю — або ще краще, роль DBDEVELOPERROLE, яка була попередньо визначена для, ну, розробників.

Для нового користувача BETH наступні команди, виконані як ADMIN, дозволять підключитися та працювати з колекціями (створювати, змінювати, видаляти тощо). Роль DBDEVELOPERROLE також включає SODA_APP, тому це не вказано тут. Існують також варіанти для привілеїв, які надаються; зазвичай надаються ролі CONNECT та RESOURCE, що теж нормально. Просто перевірте, що ви зрештою хочете надати своєму користувачу.

grant create session to beth;  
grant db_developer_role to beth;  
alter user beth quota 1G on data;  
begin  
 ords_admin.enable_schema(true,'BETH');  
end;  
/

Ви також можете зробити все це через інтерфейс користувача, як описано тут.

Це не було надто складно, чи не так?

Молодець.
Отже, з моїм паролем @least1/2#?4Me, рядок підключення для ADMIN виглядатиме наступним чином:

mongodb://admin:%40least1%2F2%23%3F4Me@P6J9Y7KH8ABCDEF-MORETHANMONGO.adb.ap-tokyo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true

Найпростіший спосіб підключитися до MongoDB API — це використовувати mongosh. Його можна завантажити зі сторінки Mongo, або встановити через інші засоби, наприклад, brew на Mac.

pic

Успішне підключення до MongoDB

Що робити, якщо у мене не вийшло?

Як і в багатьох інших випадках, інколи потрібно зробити більше ніж одну спробу. Ви прочитали цей блог не один раз, а воно все одно не працює. Ви перевірили всі налаштування.

Неправильні або неповні правила контролю доступу

Щоб переконатися, що ваш клієнт дійсно може підключитися до бази даних і ви впевнені, що налаштування правильні, ви також повинні мати можливість підключитися через будь-який SQL інструмент. Правила контролю доступу однакові для всіх з'єднань. Якщо ви отримуєте помилку за допомогою sqlcl або sqlplus, щось не так з вашими правилами контролю доступу.

Поширена помилка при неправильних правилах контролю доступу для MongoDB API:

MongoNetworkError: Client network socket disconnected before secure TLS connection was established

На цьому етапі повідомлення про помилку SQL*Net (визнано) кращє:

ORA-12506: TNS:listener rejected connection based on service ACL filtering

Добре, ви виключили проблеми з правилами контролю доступу, але все ще не можете підключитися своїм користувачем або успішно використовувати MongoDB API. Давайте перевіримо привілеї вашого користувача.

Недостатні привілеї в базі даних

Отже, все працює з ADMIN, але мій новостворений користувач просто не хоче підключатися. Або ви можете підключитися, але виникають труднощі з використанням команд MongoDB.

Можливо, ви побачите повідомлення про помилку, як це, коли намагаєтеся підключитися:

MongoServerError: Database connection unavailable. Ensure that the user exists and the schema is enabled for use with Oracle REST Data Services. A schema can be enabled by calling the PL/SQL procedure ORDS.ENABLE_SCHEMA.

Або ви можете успішно підключитися, але не можете створити нову колекцію:

beth> db.foo.insertOne({"a":"c"})  
Uncaught:  
MongoServerError: ORA-06550: line 2, column 3:  
PLS-00201: identifier 'DBMS_SODA_ADMIN' must be declared  
ORA-06550: line 2, column 3:  
PL/SQL: Statement ignored

Обидва ці повідомлення про помилки вказують на те, чого не вистачає, тому пора перевірити привілеї, надані цьому користувачу. Мінімальні привілеї, які потрібні користувачу, це:

  • GRANT CREATE SESSION
  • GRANT SODA_APP
  • Увімкнення використання ORDS (Web) через ORDS_ADMIN

Проте ви не зможете нічого робити з базою даних без цього, тому потрібно додати хоча б CREATE TABLE та квоту на таблицю — або ще краще, роль DBDEVELOPERROLE, яка була попередньо визначена для, ну, розробників.

Для нового користувача BETH наступні команди, виконані як ADMIN, дозволять підключитися та працювати з колекціями (створювати, змінювати, видаляти тощо). Роль DBDEVELOPERROLE також включає SODA_APP, тому це не вказано тут. Існують також варіанти для привілеїв, які надаються; зазвичай надаються ролі CONNECT та RESOURCE, що теж нормально. Просто перевірте, що ви зрештою хочете надати своєму користувачу.

grant create session to beth;  
grant db_developer_role to beth;  
alter user beth quota 1G on data;  
begin  
 ords_admin.enable_schema(true,'BETH');  
end;  
/

Ви також можете зробити все це через інтерфейс користувача, як описано тут.

Це не було надто складно, чи не так?

Молодець.
Тепер час дослідити, що ви можете робити з MongoDB API, окрім використання його як Mongo бази даних. Є круті можливості, які можна реалізувати з цим API в будь-якій програмі Mongo, яких навіть не можна досягти з Mongo, такі як:

Спробуйте самі в нашому самостійно виконуваному Livelab Об’єднайте світи SQL, JSON і MongoDB API. Все, що вам потрібно — це комп’ютер і веб-браузер. Навіть не потрібно мати обліковий запис у хмарі, хоча немає жодної причини, чому б не мати безкоштовний обліковий запис у хмарі від Oracle.

Сподіваємося, що цей блог був корисним для вас. Не соромтеся повідомити нам, що ще ми можемо зробити для вас. Яка функція MongoDB API вас найбільше захоплює? Які проблеми ви стикалися, використовуючи MongoDB API?

Просто залиште нам відгук і слідкуйте за новинами, які з'являться в майбутньому.
Тепер час дослідити, що можна зробити з MongoDB API, окрім використання його як Mongo бази даних. Є багато крутих можливостей, які можна реалізувати з цим API в будь-якій програмі Mongo, і яких навіть не можна досягти з Mongo, таких як:

Спробуйте самі в нашому самостійно виконуваному Livelab Об’єднайте світи SQL, JSON і MongoDB API. Все, що вам потрібно — це комп’ютер і веб-браузер. Навіть не потрібно мати обліковий запис у хмарі, хоча немає жодної причини, чому б не мати безкоштовний обліковий запис у хмарі від Oracle.

Сподіваємося, що цей блог був корисним для вас. Не соромтеся повідомити нам, що ще ми можемо зробити для вас. Яка функція MongoDB API вас найбільше захоплює? Які проблеми ви стикалися, використовуючи MongoDB API?

Просто залиште нам відгук і слідкуйте за новинами, які з'являться в майбутньому.

Перекладено з: MongoDB API — Easy to enable and use

Leave a Reply

Your email address will not be published. Required fields are marked *