コード例 #1
0
    def test_es_auditor(self):
        from security_monkey.auditors.elasticsearch_service import ElasticSearchServiceAuditor
        es_auditor = ElasticSearchServiceAuditor(accounts=["012345678910"])

        # Add some test network whitelists into this:
        es_auditor.network_whitelist = []
        for cidr in WHITELIST_CIDRS:
            whitelist_cidr = NetworkWhitelistEntry()
            whitelist_cidr.cidr = cidr[1]
            whitelist_cidr.name = cidr[0]

            es_auditor.network_whitelist.append(whitelist_cidr)

        for es_domain in self.es_items:
            es_auditor.check_es_access_policy(es_domain)

        # Check for correct number of issues located:
        # CONFIG ONE:
        self.assertEquals(len(self.es_items[0].audit_issues), 1)
        self.assertEquals(self.es_items[0].audit_issues[0].score, 20)

        # CONFIG TWO:
        self.assertEquals(len(self.es_items[1].audit_issues), 1)
        self.assertEquals(self.es_items[1].audit_issues[0].score, 20)

        # CONFIG THREE:
        self.assertEquals(len(self.es_items[2].audit_issues), 2)
        self.assertEquals(self.es_items[2].audit_issues[0].score, 5)
        self.assertEquals(self.es_items[2].audit_issues[1].score, 7)

        # CONFIG FOUR:
        self.assertEquals(len(self.es_items[3].audit_issues), 1)
        self.assertEquals(self.es_items[3].audit_issues[0].score, 20)

        # CONFIG FIVE:
        self.assertEquals(len(self.es_items[4].audit_issues), 0)

        # CONFIG SIX:
        self.assertEquals(len(self.es_items[5].audit_issues), 0)

        # CONFIG SEVEN:
        self.assertEquals(len(self.es_items[6].audit_issues), 3)
        self.assertEquals(self.es_items[6].audit_issues[0].score, 5)
        self.assertEquals(self.es_items[6].audit_issues[1].score, 5)
        self.assertEquals(self.es_items[6].audit_issues[2].score, 7)

        # CONFIG EIGHT:
        self.assertEquals(len(self.es_items[7].audit_issues), 1)
        self.assertEquals(self.es_items[7].audit_issues[0].score, 20)

        # CONFIG NINE:
        self.assertEquals(len(self.es_items[8].audit_issues), 2)
        self.assertEquals(self.es_items[8].audit_issues[0].score, 6)
        self.assertEquals(self.es_items[8].audit_issues[1].score, 10)
コード例 #2
0
    def test_es_auditor(self):
        from security_monkey.auditors.elasticsearch_service import ElasticSearchServiceAuditor
        es_auditor = ElasticSearchServiceAuditor(accounts=["012345678910"])

        # Add some test network whitelists into this:
        es_auditor.network_whitelist = []
        for cidr in WHITELIST_CIDRS:
            whitelist_cidr = NetworkWhitelistEntry()
            whitelist_cidr.cidr = cidr[1]
            whitelist_cidr.name = cidr[0]

            es_auditor.network_whitelist.append(whitelist_cidr)

        for es_domain in self.es_items:
            es_auditor.check_es_access_policy(es_domain)

        # Check for correct number of issues located:
        # CONFIG ONE:
        self.assertEquals(len(self.es_items[0].audit_issues), 1)
        self.assertEquals(self.es_items[0].audit_issues[0].score, 20)

        # CONFIG TWO:
        self.assertEquals(len(self.es_items[1].audit_issues), 1)
        self.assertEquals(self.es_items[1].audit_issues[0].score, 20)

        # CONFIG THREE:
        self.assertEquals(len(self.es_items[2].audit_issues), 2)
        self.assertEquals(self.es_items[2].audit_issues[0].score, 5)
        self.assertEquals(self.es_items[2].audit_issues[1].score, 7)

        # CONFIG FOUR:
        self.assertEquals(len(self.es_items[3].audit_issues), 1)
        self.assertEquals(self.es_items[3].audit_issues[0].score, 20)

        # CONFIG FIVE:
        self.assertEquals(len(self.es_items[4].audit_issues), 0)

        # CONFIG SIX:
        self.assertEquals(len(self.es_items[5].audit_issues), 0)

        # CONFIG SEVEN:
        self.assertEquals(len(self.es_items[6].audit_issues), 3)
        self.assertEquals(self.es_items[6].audit_issues[0].score, 5)
        self.assertEquals(self.es_items[6].audit_issues[1].score, 5)
        self.assertEquals(self.es_items[6].audit_issues[2].score, 7)

        # CONFIG EIGHT:
        self.assertEquals(len(self.es_items[7].audit_issues), 1)
        self.assertEquals(self.es_items[7].audit_issues[0].score, 20)

        # CONFIG NINE:
        self.assertEquals(len(self.es_items[8].audit_issues), 2)
        self.assertEquals(self.es_items[8].audit_issues[0].score, 6)
        self.assertEquals(self.es_items[8].audit_issues[1].score, 10)
コード例 #3
0
    def pre_test_setup(self):
        ElasticSearchServiceAuditor(accounts=['TEST_ACCOUNT']).OBJECT_STORE.clear()
        self.es_items = [
            ElasticSearchServiceItem(region="us-east-1", account="TEST_ACCOUNT", name="es_test", config=CONFIG_ONE),
            ElasticSearchServiceItem(region="us-west-2", account="TEST_ACCOUNT", name="es_test_2", config=CONFIG_TWO),
            ElasticSearchServiceItem(region="eu-west-1", account="TEST_ACCOUNT", name="es_test_3", config=CONFIG_THREE),
            ElasticSearchServiceItem(region="us-east-1", account="TEST_ACCOUNT", name="es_test_4", config=CONFIG_FOUR),
            ElasticSearchServiceItem(region="us-east-1", account="TEST_ACCOUNT", name="es_test_5", config=CONFIG_FIVE),
            ElasticSearchServiceItem(region="eu-west-1", account="TEST_ACCOUNT", name="es_test_6", config=CONFIG_SIX),
            ElasticSearchServiceItem(region="eu-west-1", account="TEST_ACCOUNT", name="es_test_7", config=CONFIG_SEVEN),
            ElasticSearchServiceItem(region="eu-west-1", account="TEST_ACCOUNT", name="es_test_8", config=CONFIG_EIGHT),
            ElasticSearchServiceItem(region="us-east-1", account="TEST_ACCOUNT", name="es_test_9", config=CONFIG_NINE),
        ]

        account_type_result = AccountType(name='AWS')
        db.session.add(account_type_result)
        db.session.commit()

        account = Account(identifier="012345678910", name="TEST_ACCOUNT",
                          account_type_id=account_type_result.id, notes="TEST_ACCOUNT",
                          third_party=False, active=True)

        db.session.add(account)
        db.session.commit()

        # Add some test network whitelists into this:
        # es_auditor.network_whitelist = []
        WHITELIST_CIDRS = [
            ("Test one", "192.168.1.1/32"),
            ("Test two", "100.0.0.0/16"),
        ]
        for cidr in WHITELIST_CIDRS:
            whitelist_cidr = NetworkWhitelistEntry()
            whitelist_cidr.name = cidr[0]
            whitelist_cidr.notes = cidr[0]
            whitelist_cidr.cidr = cidr[1]
            db.session.add(whitelist_cidr)
            db.session.commit()
コード例 #4
0
    def post(self):
        """
            .. http:post:: /api/1/whitelistcidrs

            Create a new CIDR whitelist entry.

            **Example Request**:

            .. sourcecode:: http

                POST /api/1/whitelistcidrs HTTP/1.1
                Host: example.com
                Accept: application/json

                {
                    "name": "Corp",
                    "notes": "Corporate Network",
                    "cidr": "1.2.3.4/22"
                }

            **Example Response**:

            .. sourcecode:: http

                HTTP/1.1 201 Created
                Vary: Accept
                Content-Type: application/json

                {
                    "id": 123,
                    "name": "Corp",
                    "notes": "Corporate Network",
                    "cidr": "1.2.3.4/22"
                }

            :statuscode 201: created
            :statuscode 401: Authentication Error. Please Login.
        """

        self.reqparse.add_argument('name', required=True, type=text_type, help='Must provide account name', location='json')
        self.reqparse.add_argument('cidr', required=True, type=text_type, help='Network CIDR required.', location='json')
        self.reqparse.add_argument('notes', required=False, type=text_type, help='Add context.', location='json')
        args = self.reqparse.parse_args()

        name = args['name']
        cidr = args.get('cidr', True)
        notes = args.get('notes', None)

        whitelist_entry = NetworkWhitelistEntry()
        whitelist_entry.name = name
        whitelist_entry.cidr = cidr
        if notes:
            whitelist_entry.notes = notes

        db.session.add(whitelist_entry)
        db.session.commit()
        db.session.refresh(whitelist_entry)

        whitelistentry_marshaled = marshal(whitelist_entry.__dict__, WHITELIST_FIELDS)
        whitelistentry_marshaled['auth'] = self.auth_dict
        return whitelistentry_marshaled, 201
コード例 #5
0
ファイル: whitelist.py プロジェクト: darrow/security_monkey
    def post(self):
        """
            .. http:post:: /api/1/whitelistcidrs

            Create a new CIDR whitelist entry.

            **Example Request**:

            .. sourcecode:: http

                POST /api/1/whitelistcidrs HTTP/1.1
                Host: example.com
                Accept: application/json

                {
                    "name": "Corp",
                    "notes": "Corporate Network",
                    "cidr": "1.2.3.4/22"
                }

            **Example Response**:

            .. sourcecode:: http

                HTTP/1.1 201 Created
                Vary: Accept
                Content-Type: application/json

                {
                    "id": 123,
                    "name": "Corp",
                    "notes": "Corporate Network",
                    "cidr": "1.2.3.4/22"
                }

            :statuscode 201: created
            :statuscode 401: Authentication Error. Please Login.
        """
        auth, retval = __check_auth__(self.auth_dict)
        if auth:
            return retval

        self.reqparse.add_argument('name', required=True, type=unicode, help='Must provide account name', location='json')
        self.reqparse.add_argument('cidr', required=True, type=unicode, help='Network CIDR required.', location='json')
        self.reqparse.add_argument('notes', required=False, type=unicode, help='Add context.', location='json')
        args = self.reqparse.parse_args()

        name = args['name']
        cidr = args.get('cidr', True)
        notes = args.get('notes', None)

        whitelist_entry = NetworkWhitelistEntry()
        whitelist_entry.name = name
        whitelist_entry.cidr = cidr
        if notes:
            whitelist_entry.notes = notes

        db.session.add(whitelist_entry)
        db.session.commit()
        db.session.refresh(whitelist_entry)

        whitelistentry_marshaled = marshal(whitelist_entry.__dict__, WHITELIST_FIELDS)
        whitelistentry_marshaled['auth'] = self.auth_dict
        return whitelistentry_marshaled, 201
コード例 #6
0
    def pre_test_setup(self):
        ElasticSearchServiceAuditor(
            accounts=['TEST_ACCOUNT']).OBJECT_STORE.clear()
        self.es_items = [
            ElasticSearchServiceItem(region="us-east-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test",
                                     config=CONFIG_ONE),
            ElasticSearchServiceItem(region="us-west-2",
                                     account="TEST_ACCOUNT",
                                     name="es_test_2",
                                     config=CONFIG_TWO),
            ElasticSearchServiceItem(region="eu-west-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test_3",
                                     config=CONFIG_THREE),
            ElasticSearchServiceItem(region="us-east-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test_4",
                                     config=CONFIG_FOUR),
            ElasticSearchServiceItem(region="us-east-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test_5",
                                     config=CONFIG_FIVE),
            ElasticSearchServiceItem(region="eu-west-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test_6",
                                     config=CONFIG_SIX),
            ElasticSearchServiceItem(region="eu-west-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test_7",
                                     config=CONFIG_SEVEN),
            ElasticSearchServiceItem(region="eu-west-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test_8",
                                     config=CONFIG_EIGHT),
            ElasticSearchServiceItem(region="us-east-1",
                                     account="TEST_ACCOUNT",
                                     name="es_test_9",
                                     config=CONFIG_NINE),
        ]

        account_type_result = AccountType(name='AWS')
        db.session.add(account_type_result)
        db.session.commit()

        account = Account(identifier="012345678910",
                          name="TEST_ACCOUNT",
                          account_type_id=account_type_result.id,
                          notes="TEST_ACCOUNT",
                          third_party=False,
                          active=True)

        db.session.add(account)
        db.session.commit()

        # Add some test network whitelists into this:
        # es_auditor.network_whitelist = []
        WHITELIST_CIDRS = [
            ("Test one", "192.168.1.1/32"),
            ("Test two", "100.0.0.0/16"),
        ]
        for cidr in WHITELIST_CIDRS:
            whitelist_cidr = NetworkWhitelistEntry()
            whitelist_cidr.name = cidr[0]
            whitelist_cidr.notes = cidr[0]
            whitelist_cidr.cidr = cidr[1]
            db.session.add(whitelist_cidr)
            db.session.commit()