�������N�A��ʃf�[�^�������̍�������f�[�^�\���̏_��Ȃǂ���A�uNoSQL�v�����ڂ��W�߂Ă��܂��B����Ɠ����ɁANoSQL���g���A�v���P�[�V�����ɑ���U����@�����������悤�ɂȂ�܂����B���̋L���ł́ANoSQL���g�����A�v���P�[�V�����̐Ǝ㐫�Ƒ�ɂ��ĉ�����܂��B
�@�������N�ANoSQL�ƌĂ���ނ̃f�[�^�x�[�X�����ڂ��W�߂Ă��܂��BNoSQL��SQL������g�p���Ȃ��f�[�^�x�[�X�̑��̂ŁA��ʃf�[�^�������̍�������f�[�^�\���̏_��Ȃǂ̃����b�g�����邽�߁A�]���̃����[�V���i���f�[�^�x�[�X�iRDB�j��⊮�E��ւ�����̂Ƃ��āA��K�͂�Web�A�v���P�[�V�����Ȃǂɂ�����NoSQL���̗p���鎖�Ⴊ�����Ă��܂��B
�@���̂悤�ȐV�����Z�p�����y���n�߂�ƁA���O�����̂��Z�L�����e�B�ł��B�U���҂͓��Ƀf�[�^�x�[�X�̃f�[�^�̐ގ�������ɑ傫�ȊS�������Ă��邽�߁A�f�[�^�x�[�X�Ƃ��̈��ł���NoSQL�̃Z�L�����e�B�͏d�v�ƌ����܂��B
�@�f�[�^�x�[�X�ɑ���Z�L�����e�B��̋��Ђɂ��ĐU��Ԃ��Ă݂�ƁAWeb�A�v���P�[�V�����ɑ���SQL�C���W�F�N�V�����U�����҈Ђ�U����Ă������Ƃ����M����܂��B����10�N�قǁASQL�C���W�F�N�V�����ɂ���Q��������Ȃ��قǑ����������Ă��܂����BRDB���̌l����ގ悳�ꂽ��ARDB����Web�R���e���c��������E�C���X�ߍ��܂ꂽ�肷��Ƃ������̂ł��B�����Ă��̔�Q�͍��Ȃ������Ă��܂��B
�@����ł�NoSQL�͂ǂ��Ȃ̂ł��傤���B
�@���ۂ̂Ƃ���A���M���_�ɂ����Ă�NoSQL�ɑ���U���E��Q�̎���Ƃ��Ēm���Ă�����̂͋ɂ߂ď����ɂƂǂ܂��Ă��܂��B���̎�ȗv���́ANoSQL���܂��V�����ARDB�قǍL���g���Ă��Ȃ����Ƃɂ���Ǝv���܂��B���̑��̗v���Ƃ��ẮA���݂͏d�v�ȃf�[�^��NoSQL�ɕۑ�����P�[�X�����Ȃ����ƁANoSQL����SQL�C���W�F�N�V�����̋��P�܂������̃Z�L�����e�B����Ă��邱�ƁA�f�[�^�ɃA�N�Z�X���邽�߂̃C���^�[�t�F�C�X�����i���ƂɃo���o���ł���U�������Â炢���ƁA�Ȃǂ��������܂��B
�@�������A�����NoSQL���g���A�v���P�[�V�������������ň��S�ł��邱�Ƃ��Ӗ����܂����B�������N��NoSQL�̕��y�ɔ����ANoSQL�̓Z�L�����e�B�ƊE�ł����ڂ𗁂тĂ���ANoSQL���g���A�v���P�[�V�����ɑ���U����@����������Ă��Ă��܂��B���̒��ŁA�]����RDB�Ƃ͈قȂ�V�����^�C�v�̍U�����@���҂ݏo����Ă��܂����B
NoSQL, no security? - Will Urbanski (DELL)
http://www.slideshare.net/wurbanski/nosql-no-security
�@���̂悤�Ȕw�i����A�{�L���ł�NoSQL�ɓ��������U�����@����������܂��B���グ��̂�NoSQL���i���̂̃Z�L�����e�B�ł͂Ȃ��ANoSQL���g���A�v���P�[�V�����̕s���ɂ���Đ�������C���W�F�N�V�����n�̐Ǝ㐫�ł��B
�@�܂�NoSQL�ɂ����܂��܂Ȑ��i������܂����A�{�L���Ŏ�Ɏ��グ��̂�MongoDB�ł��B���ɂ��ACassandra�ARedis�Amemcached�ɂ��ĊȒP�ɐG�ꂽ���Ǝv���܂��B��������I�[�v���\�[�X��NoSQL���i�ł��B
�@�����̒��ł́ANoSQL�ɃA�N�Z�X����v���O�����̗�������������܂��BPHP�܂���Java�ŏ����ꂽ���̂ł����A�ȒP�Ȃ��̂Ȃ̂ŁA�����̌���ɏڂ����Ȃ����ł������I�ɗ����ł���Ǝv���܂��B
�@����ł͂܂��́AMongoDB���g���A�v���P�[�V�����ɂ��āA�Z�L�����e�B��̒��ӓ_�Ȃǂ�������܂��B
�@MongoDB�́A�h�L�������g�w���^�ɕ��ނ����I�[�v���\�[�X��NoSQL�f�[�^�x�[�X�ł��B�_��ȃf�[�^�\���i�X�L�[�}���X�j�ƁA�A�z�z���JavaScript���g�������x�ȃN�G���̏����������ł��B���M���_�ł̍ŐV�o�[�W������2.2.3�ŁA�{�L���̓��e�͂��̋����Ɋ�Â��܂��B
�@�܂��́AMongoDB�ɃA�N�Z�X����PHP�v���O�����̃C���[�W������ł����������߂ɁA�T���v���v���O�����i�Ǝ㐫���Ȃ��v���O�����j�������܂��B
// �o�^����f�[�^�i�A�z�z��j���쐬 $member = array('name' => 'MBSD', 'birthyear' => '1980', 'interests' => array('music', 'travel')); // �f�[�^��o�^ $db->members->insert($member); // �f�[�^���������J�[�\�����擾 $cursor = $db->members->find(array('birthyear' => '1980'));
�@�f�[�^�x�[�X�ւ̐ڑ������Ȃǂ͏ȗ����Ă��܂��B�v���O�������́umembers�v�i$db->members�j�́AMongoDB�ɂ����Ắu�R���N�V�����v�ƌĂ����̂ŁARDB�̃e�[�u���ɑ������܂��B
�@�v���O�����ł͍ŏ���name�Abirthyear�Ainterests�Ƃ���3�̃L�[�����A�z�z��ł��郆�[�U�[�����`���A�����MongoDB�̃R���N�V�����ɓo�^���Ă��܂��B���ɂ��̃R���N�V��������birthyear��'1980'�̃��[�U�[���������Ă��܂��B�o�^�E�����̂�����ɂ����Ă��A�����Ƃ���PHP�̘A�z�z���^���Ă��܂��B
�@MongoDB���X�L�[�}���X�ƌ�����̂́A���O�ɃR���N�V�����̃X�L�[�}���`����K�v���Ȃ��A�܂������R���N�V�����ɈقȂ�\�������f�[�^���ۑ��ł��邽�߂ł��B���̂��߁A�T�[�r�X�̉^�p���n�܂�����ł����Ă��uname�Abirthyear�Ainterests�ɉ����āA�����email���ۑ�����悤�ɂ���v�Ƃ��������Ƃ��f�[�^�x�[�X���̕ύX�Ȃ��Ɏ����ł��܂��B
�@�N�G���̂����悻�̃C���[�W�����߂��Ƃ���ŁA�{���MongoDB�̃Z�L�����e�B�ɂ��Ă̘b�ɓ���܂��B�{�L���ł͈ȉ���4��ނ̐Ǝ㐫�����グ�܂��B
�@�ʂ̐Ǝ㐫�̓��e���ȉ��Ɍ��Ă����܂��B
�@MongoDB�ł́A�N�G���ɗ^����A�z�z��̃L�[�ɉ��Z�q���܂߂邱�Ƃ��ł��܂��B�s�K�ȃv���O���~���O�����Ă���ƁA�U���҂ɂ���ăN�G�����ɉ��Z�q�ߍ��܂�A�{���̈Ӑ}�Ƃ͈قȂ�N�G���ɕς����Ă��܂��댯��������܂��B
�@���L��MongoDB���g���ăZ�b�V�����Ǘ����s��PHP�̃v���O�����̈ꕔ�ł��B
// Cookie����Z�b�V����ID���擾���� $sessionId = $_COOKIE['sessionId']; // �Z�b�V����ID���L�[��MongoDB�̃Z�b�V�����R���N�V���������� // findOne()�͌������ʂ̂�����s��Ԃ����\�b�h $member = $db->sessions->findOne(array('sessionId' => $sessionId)); if ($member) { // �A�N�Z�X���Ă��郆�[�U�[�̓��O�C���ς� $userId = $member['userId'];
�@���̃v���O�����́A�Z�b�V����ID��Cookie������A������L�[�ɃZ�b�V�����R���N�V�����isessions�j���������܂��B�������ʂ����݂���ꍇ�ɂ́A���[�U�[�����O�C���ς݂ł���Ƃ݂Ȃ��܂��B���̂��Ƃ̏����͏ȗ����Ă��܂����A���̉���̏���\������Ȃǂ̏������������̂ƍl���Ă��������B
�@����ȃp�����[�^�iCookie�j�͉��L�̂悤�Ȓl�ł���Ƃ��܂��B
����p�����[�^��F�@sessionId=3353f8f87cd6449abfbe320bc7c88446
�@�{�P�[�X�ɂ�����U���҂̖ڕW�́A�������Z�b�V����ID�iCookie�j���T�[�o�ɑ��邱�ƂȂ��A�ʂ̉���ɂȂ肷�܂����Ƃł��B
�@����ɂȂ肷�܂����߂ɁA�U���҂͉��Z�q���܂ރp�����[�^�𑗐M���܂��B��̓I�ɂ͉��L�̂悤�ɑ��삵���p�����[�^�𑗐M���܂��B
����p�����[�^��F�@sessionId[$ne]=x
�@PHP�Ȃǂ̌���ɂ́A�z��^�A�z�z��Ɖ��߂ł���`���ŏ����ꂽ���N�G�X�g�p�����[�^���A�v���O�������Ŕz��^�A�z�z��ɓW�J����@�\������܂��B���̋@�\�ɂ��A�p�����[�^������s�����ۂ�findOne���\�b�h�ɗ^������A�z�z��́A���L�̂悤�Ƀl�X�g�������̂ɂȂ�܂��B
array('sessionId' => array('$ne' => 'x'))
�@��������MongoDB�́A�u$ne�v�iNot Equal�j�Ƃ����L�[��ے艉�Z�q�Ƃ��Ĉ������߁AMongoDB�͌����������usessionId != 'x'�v�ł���Ɖ��߂��܂��B�Z�b�V����ID���ux�v�̃��[�U�[�͑��݂��Ȃ����̂ƍl����ƁA���O�C�����̉���̑S���������Ƀ}�b�`���邱�ƂɂȂ�܂��B�]���āA�N���͕�����Ȃ����̂́A�U���҂̓��O�C���ς݂̉����1�l�Ƃ��ă��O�C��������ԂɂȂ��Ă��܂��ł��傤�B
�@���̍U����ł́u$ne�v���Z�q���g���܂������A���̑��ɂ�MongoDB�ɂ͂��܂��܂ȉ��Z�q������A�U���ɗ��p�ł�����̂͑��ɂ���������܂��B���L�́u$regex�v���Z�q���g���ĕʂ̉���ɂȂ肷�܂���ł��B
����p�����[�^��F�@sessionId[$regex]=^a
�@����ɂ��A�Z�b�V����ID�̐擪���ua�v�ł������̂����ꂩ�Ƃ��ă��O�C��������ԂɂȂ�܂��B
�@��L�̖��̌����́A������^�̓��̓f�[�^�����҂��Ă���ɂ�������炸�A�A�z�z��Ȃǂ̈Ӑ}���Ȃ��`���̓��̓f�[�^���t���Ďg�p���Ă��邱�Ƃɂ���܂��B��̓p�����[�^��������^�ł��邩�̌^�`�F�b�N�A�������͕�����^�ւ̌^�ϊ����s�����Ƃł��B��̗�͈ȉ��̒ʂ�ł��B
// �^�`�F�b�N���s���ꍇ if(!is_string($sessionId)) { // �G���[�������s�� } // �^�ϊ����s���ꍇ $member = $db->sessions->findOne(array('sessionId' => (string)$sessionId));
�@�Ȃ��A���̂悤�ȉ��Z�q�}���̖��́A�p�����[�^�̃f�[�^�^���Œ�I�ȃv���O��������ɂ����Ă͔������Ȃ��ƍl�����܂��B�M�҂�PHP��Ruby on Rails�̃v���O�����Ŗ�肪���������邱�Ƃ��m�F���܂����B
Security - MongoDB Manual
http://docs.mongodb.org/manual/security/
Copyright © ITmedia, Inc. All Rights Reserved.