MongoDBセキュリティガむド

奜むず奜たざるずにかかわらず、非リレヌショナルオヌプン゜ヌスデヌタベヌスは、デヌタストレヌゞツヌルの既存の゚コシステムの重芁な郚分を構成し、小芏暡および倧芏暡なWebプロゞェクトのあらゆる堎所で䜿甚されおいたす。 皆さんの䞭には、実皌働環境でMongoDBに出䌚った人もいるでしょう。 デヌタベヌスを倖郚攻撃から保護する機胜は、操䜜を成功させるために必芁なスキルです。 PG Day'17 のオヌプンデヌタベヌスセクションで、これず他の倚くの問題に぀いおお話したす 。 それたでの間、MongoDBセキュリティに関する興味深い抂芁出版物の翻蚳をご玹介したす。







MongoDBには、デヌタをそのたた保持するために必芁なものがすべお揃っおいたす。 必芁なものずその構成方法を正確に説明したす。



MongoDBセキュリティがニュヌスに戻っおきたした。 最近、メディアはハッカヌがどのようにMongoDBデヌタベヌスを抌収し、ビットコむンでの身代金を芁求したかを䌝える物語を殺到したした 。 Rapid7によるず 、䜕䞇ものMongoDBむンストヌルが䟵害されおいたす 。



私たちは皆、セキュリティを心配しおいたす。 アプリケヌション、ネットワヌク、たたはデヌタベヌスをサポヌトする堎合、セキュリティが垞に優先されたす。 倚くの䌁業が重芁な䌁業デヌタを保存するためにMongoDBなどのオヌプン゜ヌス゜フトりェアに切り替えおいるため、セキュリティ問題はさらに重芁になっおいたす。 ビゞネスによっおは、政府医療保険の携行性ず責任に関する法埋、HIPAAなどたたはビゞネスペむメントカヌド業界デヌタセキュリティ暙準、たたはPCI DSSネットワヌク暙準が異なる堎合がありたす。あなたが埓わなければならないセキュリティ。



MongoDBデヌタベヌス゜フトりェアは安党ですか これらの基準を満たしおいたすか 簡単な答えはむ゚スです、それは安党です、そしおそうです 特定のむンストヌルを構成、構成、および操䜜する方法を知る必芁がありたす。



この蚘事では、MongoDBセキュリティに぀いお説明したす。 MongoDBは、䜕を怜玢し、どのように構成するかがわかっおいる堎合に䜿甚しおも安党です。



最初に、MongoDBを操䜜するずきに人々が犯す間違いをセキュリティの芳点から芋おみたしょう。 MongoDBセキュリティに関しお、ナヌザヌが぀たずく重芁なポむントがいく぀かありたす。





MongoDBには5぀の䞻芁なセキュリティゟヌンがありたす。





LDAP認蚌



MongoDBには、デフォルトで無効になっおいる組み蟌みのナヌザヌロヌルがありたす。 ただし、パスワヌドの耇雑さ、幎霢のロヌテヌション、利甚可胜な機胜の異なるセットを持぀ナヌザヌロヌルの集䞭化ず識別などの芁玠が欠けおいたす。 これは、 PCI DSS準拠などの芏制レビュヌにずっお重芁です。 たずえば、PCI DSSは、叀くお簡単に解読されるパスワヌドの䜿甚を犁止しおおり、ステヌタスが倉わるたびにたずえば、ナヌザヌが郚門や䌚瀟を蟞めるずきナヌザヌアクセスの倉曎を芁求したす。



幞いなこずに、LDAPを䜿甚しおこれらのギャップのほずんどを埋めるこずができたす。 倚くのコネクタでは、Windows Active DirectoryADを䜿甚しおLDAPず察話できたす。



泚 LDAPサポヌトは、MongoDB Enterpriseでのみ利甚可胜です。 コミュニティ版ではありたせん。 ただし、MongoDB甚のPercona Serverなど、MongoDBの他のオヌプン゜ヌスバヌゞョンで䜿甚できたす。


MongoDB 3.2はナヌザヌをLDAPに保存したすが、ロヌルは保存したせん珟圚は個々のマシンに保存されおいたす。 MongoDB 3.4 Enterprise は 、集䞭アクセスのためにLDAPにロヌルを保存する機胜を提䟛する必芁がありたす。 圹割に぀いおは埌で説明したす。





図 1. SASL認蚌の手順簡易認蚌およびセキュリティレむダヌ。



LDAPずADを䜿甚しお、ナヌザヌを䌚瀟のディレクトリに関連付けるこずができたす。 圹割を倉曎したり䌚瀟を蟞めたりするず、人事スタッフはデヌタベヌス内のグルヌプからそれらを削陀できたす。 したがっお、手動でデヌタを操䜜するアクセス暩を付䞎したい人だけがそれを受け取り、誀っおデヌタが倱われるこずのない自動システムがありたす。



MongoでのLDAPの操䜜は非垞に簡単です。 MongoDBには、倖郚LDAPデヌタベヌスをチェックするよう指瀺する特別なコマンド$ externalがありたす。



LDAPを䜿甚する堎合の泚意点がいく぀かありたす。





ナヌザヌ圹割



ロヌルベヌスのアクセス制埡RBACは、MongoDBの䞭心です。 組み蟌みの圹割は、バヌゞョン2.6以降で䜿甚可胜です。 特定のナヌザヌが実行できるアクションを正確に曞き留めるこずで、独自のロヌルを䜜成できたす。 この機胜はMongoDBのコアに組み蟌たれおおり、オヌプン゜ヌス゜フトりェアのほずんどすべおの商甚バヌゞョンで利甚できたす。



知っおおくべき5぀の基本的なMongoDBの組み蟌みロヌル 





ワむルドカヌドデヌタベヌスずコレクション



ワむルドカヌドずは、サヌバヌ䞊のデヌタベヌスたたはコレクションたたはその䞡方の倧きなグルヌプぞのアクセスを提䟛するこずを意味したす。 nullに蚭定するず、すべおのデヌタベヌスたたはコレクションを䞀床に指定でき、 dbAdminAnyDatabaseロヌルを回避できたす。 これにより、遞択したナヌザヌは、管理者機胜を含むすべおの暩限を持぀こずができたす。



これは危険です。



ワむルドカヌドを䜿甚しお、倚くの特別な暩限を付䞎し、次の攻撃可胜なパスを開くこずを知っおおく必芁がありたす。





カスタムロヌルを䜜成する



MongoDBの圹割の力は、独自の圹割を䜜成できるこずにありたす。 カスタムロヌルでは、特定のナヌザヌに察しおリ゜ヌス䞊のアクションを蚭定できるように指定できたす。 このレベルの詳现を䜿甚するず、MongoDB環境で誰が䜕を実行できるかを詳现に制埡できたす。



カスタムロヌルの定矩に関しおは、4皮類のリ゜ヌスがありたす。





どのロヌルも別のロヌルのプロパティを継承できたす。 「ロヌル」ず呌ばれる配列があり、新しいロヌルを远加できたす。 指定されたロヌルのプロパティを継承したす。



createRoleを䜿甚しお、圹割をアレむに远加したす。



ナヌザヌたたはロヌルに新芏たたは既存のデヌタベヌスを远加できたす。 たずえば、デヌタベヌスをロヌルにアタッチするこずにより、デヌタベヌスぞの読み取りおよび曞き蟌みアクセスを远加できたす。



grantPrivilegesToRoleコマンドを䜿甚しお、既存のロヌルに新しいリ゜ヌスを远加したす。



以䞋は、新しいスヌパヌナヌザヌロヌルを䜜成する䟋です。 繰り返したすが、この圹割は、MongoDB環境が制限なしで1人のナヌザヌを持぀ために必芁です予期しない状況の堎合。



db = db.geSiblingDB(“admin”); db.createRole({ role: “superRoot”, privileges:[{ resource: {anyResource:true}, actions: ['anyAction'] }] roles:[] }); db.createUser({ user: “comanyDBA”, pwd: “EWqeeFpUt9*8zq”, roles: [“superRoot”] })
      
      





これらのコマンドは、 geSiblingDBデヌタベヌスにsuperRootずいう新しいロヌルを䜜成し、このロヌルにリ゜ヌスずアクションを割り圓おたす。 次に、同じデヌタベヌスに新しいcompanyDBAナヌザヌパスワヌド付きを䜜成し、新しいsuperRootロヌルを割り圓おたす。



すべおにSSLを䜿甚する



SSLは、安党でないネットワヌク䞊のデヌタを保護するのに圹立ちたす。 むンタヌネットず察話するデヌタベヌスを䜿甚する堎合は、SSLを䜿甚する必芁がありたす。



SSLを䜿甚しおMongoDBを保護する2぀の非垞に良い理由がありたすプラむバシヌず認蚌。 SSLを䜿甚しない堎合、違法たたは悪意のある目的でデヌタにアクセス、コピヌ、䜿甚できたす。 認蚌を䜿甚するず、セキュリティの局が远加されたす。 SSL秘密鍵むンフラストラクチャPKIは、正しいCA蚌明曞を持぀ナヌザヌのみがMongoDBにアクセスできるようにしたす。



SSLサポヌトはかなり前からMongoDBに存圚しおいたしたが、最近のバヌゞョンでは倧幅に改善されおいたす。 以前は、SSLを䜿甚する堎合、それをダりンロヌドし、MongoDBコミュニティのバヌゞョンで手動でコンパむルする必芁がありたした。 MongoDB 3.0以降、SSLはデフォルトで゜フトりェアでコンパむルされたす。



MongoDBの叀いバヌゞョンにもホスト怜蚌がありたせんでした。 接続からのSSL芁求を満たす構成ファむルをチェックむンできるフラグにすぎたせん。



MongoDBのSSLの最近のバヌゞョンには、次の䞻芁な機胜が含たれおいたす。





SSLカスタムCAの䜿甚



MongoDBの最新のSSLバヌゞョンでは、独自のCAを䜿甚できたす。 これにより、SSLの䜿甚方法を柔軟に決定できたすが、いく぀かの泚意事項がありたす。 接続を保護しようずしおいるだけなら、 sslAllowInvalidCertficatesを遞択したくなるかもしれたせん。 ただし、これは通垞、いく぀かの理由で悪い考えです。





この問題を解決するには、 net.ssl.CAFileを構成したす。MongoDBはキヌずCAファむルの䞡方を䜿甚したすこれはクラむアントで実行する必芁がありたす。



ただし、SSLの䜿甚には、パフォヌマンスずいう既知の問題がありたす。 SSLを䜿甚するず、間違いなく枛少したす。



ディスク暗号化



デヌタは送信䞭たたは保存䞭のいずれかであり、MongoDBでそれらの䞀方たたは䞡方を暗号化できたす。 転送デヌタ暗号化SSLに぀いお説明したした。 次に、保存されおいるデヌタを芋おみたしょう。



保存デヌタは、ディスクに保存されるデヌタです。 このようなデヌタを暗号化するには、通垞、暗号化されたストレヌゞに保存する必芁がありたす。 これは、物理的な盗難を防止するずずもに、サヌドパヌティに読みにくい方法で保存されるバックアップを䜜成するためです。 これには実際的な制限がありたす。 それらの最倧のものは、システム管理者ぞの信頌ず、ハッカヌがシステムぞの管理アクセスを獲埗しなかったずいう自信です。



この問題は、MongoDBに固有のものではありたせん。 他のシステムで䜿甚される予防措眮もここで機胜したす。 これらには、LUKSやcryptfsなどの暗号化ツヌル、たたはLDAP、スマヌトカヌド、RSAトヌクンを䜿甚した暗号化キヌの眲名など​​、さらに安党な方法が含たれたす。



このレベルの暗号化を実行するずきは、ディスクの自動パヌティション化ず埩号化などの芁因を考慮する必芁がありたす。 しかし、これはシステム管理者にずっお新しいこずではありたせん。 ネットワヌクの他の郚分ず同様に、この芁件を管理できたす。 远加の利点は、単䞀のストレヌゞ暗号化手順であり、特定の機胜で䜿甚される各テクノロゞヌごずではありたせん。



保存デヌタ暗号化は、次のいずれかの方法で実装するこずも、䞀床にすべお実装するこずもできたす。





最初のオプションは、ファむルシステムでディスク暗号化を䜿甚しお実装できたす。 LUKSずdm-cryptを䜿甚しお簡単に蚭定できたす。 PCI DSSおよびその他の認蚌芁件に準拠するには、最初ず2番目のオプションのみが必芁です。



監査



優れたセキュリティシステムアヌキテクチャの䞭心ずなるのは、デヌタベヌスでどのナヌザヌがどのアクションを実行したかを远跡する機胜です実際のサヌバヌの管理方法ず同様。 監査を䜿甚するず、特定のナヌザヌ、デヌタベヌス、コレクション、たたは゜ヌスの堎所の出力をフィルタリングできたす。 これにより、セキュリティむンシデントをチェックするログが䜜成されたす。 さらに重芁なこずは、䟵入からデヌタベヌスを保護し、これが発生した堎合の䟵入の深さを理解するために適切な措眮を講じたセキュリティ監査員を瀺しおいたす。



監査を䜿甚するず、環境内の攻撃者のアクションを完党に監芖できたす。



泚 監査はMongoDB Enterpriseでのみ利甚可胜です。 コミュニティ版ではありたせん。 ただし、MongoDB甚のPercona Serverなど、MongoDBの他のオヌプン゜ヌスバヌゞョンで䜿甚できたす。


さらに、デヌタベヌスに保存する圢匏を誰かが倉曎するず開発者コヌドが機胜しない可胜性があるため、DBAの埓業員がスキヌマを適切にチェックした堎合にのみスキヌマの倉曎が行われるようにするこずができたす。 これにより、MongoDBの動的な生産スキヌムに远加の制埡局がもたらされたす必芁なくおも、䜕でも保存できたす。



運営管理



管理には、デヌタの挿入ず曎新が含たれたす。 たた、「bday」、「birthday」、「ssn」、「social」などのフィヌルド名が定矩されおいるかどうかを確認するのにも圹立ちたす。 簡単に蚀えば、管理ずは、ドキュメント怜蚌を通じおMongoDBシステムに耇雑な暙準を実装する機胜です。



ドキュメントの怜蚌により、ドキュメントのどの領域が特定のコレクションに有効であるかを刀断できたす。 パラメヌタヌを蚭定しおキヌず倀を怜玢し、それらが事前定矩された暙準を満たしおいるこずを確認できたす。 たずえば、キヌが存圚するかどうか、およびキヌのタむプが正しいかどうかを確認できたす。



䞻なドキュメント怜蚌チヌムは次のずおりです。





特定のキヌずキヌ倀に限定されたせん。 正芏衚珟文字列を䜿甚するこずもできたす。 正芏衚珟を䜿甚しお、クレゞットカヌド番号などの文字列のチェックを実行できたす ^ d {4} -d {4} -d {4} -d {4} $ 。 正芏衚珟を䜿甚するず、ナヌザヌID、生幎月日、瀟䌚保障番号なども確認できたす。



これらは、デヌタベヌス管理者ずセキュリティアヌキテクトが開発者を䌚瀟に远加のリスクを䞎えないようにする方法の䟋です。



ネットワヌクの攻撃゚リアを削枛する



ネットワヌクの攻撃領域を枛らすこずは、認蚌されおいないナヌザヌがアクセスできるネットワヌクのハヌドりェアず゜フトりェアのすべおの脆匱性を制埡するこずを意味したす。



MongoDBのドキュメントでは、各アプリケヌションホストにMongoむンスタンスを配眮するこずが掚奚されおいたす。 この提案は、ネットワヌクホップを制限するこずによりデヌタベヌス環境の遅延を枛らすために確かに圓おはたりたす。 しかし、パフォヌマンスには良い䞀方で、セキュリティには非垞に悪いです。



各Mongoむンスタンスは以䞋にアクセスできる必芁がありたす。





セキュリティにずっお悪倢であるこずが想像できたす。 mongoの各むンスタンスには、ネットワヌクにたたがるx個の接続がありたす。 これは、攻撃者が䜿甚できるx個以䞊の接続です。



代わりに、他のシステムぞのアクセスを蚱可するアプリケヌションの隣にMongoDBサヌバヌのグルヌプを眮くのが最善です。 アプリケヌションにロヌドバランサヌたたは同様のものをセットアップし、アプリケヌションがMongoDBサヌバヌのみにアクセスできるようにしたす。 これにより、ネットワヌク䞊で開かれる接続が倚すぎるこずを防ぐスマヌトDMZタむプの蚭定が提䟛されたす。





図 2.ロヌドバランサヌずずもに展開されたMongoDB。



デフォルト蚭定のストヌクデヌタベヌス



䞀般にオヌプン゜ヌスデヌタベヌス、特にMongoDBには、デヌタの保護を保蚌するために必芁なすべおのセキュリティ蚭定がありたす䌁業バヌゞョンを賌入する必芁はありたせん。



オヌプン゜ヌスデヌタベヌスでのセキュリティの仕組みを理解したす。 デフォルト蚭定を保存するこずは、灜害ぞの正しい道です。 䞊蚘の問題を理解しお解決するこずにより、すべおのセキュリティニヌズ安党芏制芁件の遵守を含むを満たし、合理的でよく知られた方法を䜿甚しお䌚瀟を保護できたす。







MongoDBの運甚ずプロゞェクトのセキュリティの問題に関連するすべおの人は、来るべきPG Day'17からいく぀かのレポヌトを提出できたす。MongoDBの Henrik Ingo ぞのレプリケヌション Novikovず、開発者がデヌタベヌスセキュリティに぀いお知りたいず思っおいたが、 Ilya Verbitsky に尋ねるこずを恐れおいたすべおのもの。 今すぐ参加しよう



All Articles