Beispiel #1
0
 def get_removed_field(self, secret):
     field_name = validations.get_input('Informe o nome do campo a ser removido:')
     if validations.get_yes_or_no('O campo ' + field_name + ' (' + secret['data'][field_name]  + ') será removido.\nConfirmar?' ):
         if field_name in secret['data']:
             secret['data'].pop(field_name, None)
         else:
             print('[INFO] - A chave informada não está presente na secret')    
     return secret
Beispiel #2
0
    def get_policies(self):
        redo = True
        policies = dict()
        
        while redo:
            print("""\
    """+self.clear+"""==============================================================\n
        Informe uma policy para ser adicionada ao token:\n
            Digite 1 para acesso à secret (default)
            Digite 2 para acesso ao S3 (Amazon)
            Digite 3 para acesso ao Dynamo (Amazon)
            Digite 4 para retornar ao menu principal
            Digite 0 para sair

            Policies já adicionadas: """ + ', '.join(list(policies.keys())) + """
    """)

            opt = validations.get_option(0,5)

            if opt == 0:
                exit(0)

            elif opt == 1:
                if 'read' in policies.keys():
                    print('Essa policy já foi adicionada!')
                else: 
                    capabilities = self.get_capabilities('read')
                    policies.update({'read': capabilities })

            elif opt == 2:
                if 'aws-s3' in policies.keys():
                    print('Essa policy já foi adicionada!')
                # elif aws_s3_role == '':
                #     print('Não existe uma role da aws configurada para essa policy (verifique o arquivo config.yaml)')
                else: 
                    capabilities = self.get_capabilities('aws-s3')
                    policies.update({'aws-s3': capabilities  })

            elif opt == 3:
                if 'aws-dynamo' in policies.keys():
                    print('Essa policy já foi adicionada!')
                # elif aws_dynamo_role == '':
                #     print('Não existe uma role da aws configurada para essa policy (verifique o arquivo config.yaml)')
                else: 
                    capabilities = self.get_capabilities('aws-dynamo')
                    policies.update({'aws-dynamo': capabilities  })

            elif opt == 4:
                # redo = False
                # main()
                exit(0)

            elif opt == 5:
                exit(0)

            if not validations.get_yes_or_no('\n\nDeseja adicionar alguma outra policy?', 'n'):
                redo = False
        return policies
Beispiel #3
0
    def get_capabilities(self, policy_type):
        capabilities = []
        if policy_type == 'read':
            if not self.get_yes_or_no('\nA policy utilizará alguma permissão além da default (leitura da secret)?', 'n'):
                capabilities.append('read')
            else:
                redo = True
                while redo:
                    print("""\
    """+self.clear+"""==============================================================\n
        Informe uma permissão para ser adicionada à policy:\n
            Digite 1 para permissão de leitura (read)
            Digite 2 para permissão de atualização (update)
            Digite 3 para permissão de criação (create)
            Digite 4 para permissão de deleção (delete)
            Digite 5 para permissão de listagem (list)

            Permissões já adicionadas: """ + ', '.join(capabilities) + """
        """)
                    opt = validations.get_option(1,6)

                    if opt == 1:
                        if 'read' in capabilities:
                            print('Essa policy já foi adicionada!')
                        else:
                            capabilities.append('read')
                            print('Policy adicionada.')
                    elif opt == 2:
                        if 'update' in capabilities:
                            print('Essa policy já foi adicionada!')
                        else:
                            capabilities.append('update')
                            print('Policy adicionada.')
                    elif opt == 3:
                        if 'create' in capabilities:
                            print('Essa policy já foi adicionada!')
                        else:
                            capabilities.append('create')
                            print('Policy adicionada.')
                    elif opt == 4:
                        if 'delete' in capabilities:
                            print('Essa policy já foi adicionada!')
                        else:
                            capabilities.append('delete')
                            print('Policy adicionada.')
                    elif opt == 5:
                        if 'list' in capabilities:
                            print('Essa policy já foi adicionada!')
                        else:
                            capabilities.append('list')
                            print('Policy adiciona da.')

                    if not validations.get_yes_or_no('\n\nDeseja adicionar alguma outra permissão à policy?', 'n'):
                        redo = False
        else:
            capabilities.append('update')
        return capabilities
Beispiel #4
0
    def get_field_updates(self, secret):
        print("""\n\n============================================================================================================
    Durante a atualização das chaves e valores, tanto o nome quanto o valor do campo podem ser sobrescritos
    Para inserir um par novo, informe o nome de um campo não existente na secret
=============================================================================================================\n\n""")

        new_field_name = ''
        changes = dict()
        redo = True

        while redo:
            old_field_name = validations.get_input('Informe o nome do campo a ser atualizado:')                

            if old_field_name in secret['data'] and validations.get_yes_or_no('\nDeseja alterar o nome do campo?', 'n'):    
                new_field_name = validations.get_input('\nInforme o nome novo para o campo:')
            else:
                new_field_name = old_field_name

            new_field_value = validations.get_input('\nInforme o valor novo do campo:')
            if validations.get_yes_or_no('\nConfirmar atualização?'):
                changes[old_field_name] = { 'new_name': new_field_name, 'new_value': new_field_value}
            else:
                break

            redo = validations.get_yes_or_no('\nDeseja atualizar mais alguma chave?','n')

        for old_key, key_pair in changes.items():

            if old_key in secret['data']:
                if old_key == key_pair['new_name']:
                    secret['data'][old_key] = key_pair['new_value']
                else:
                    secret['data'].pop(old_key, None)
                    secret['data'][key_pair['new_name']] = key_pair['new_value']
            else:
                secret['data'][key_pair['new_name']] = key_pair['new_value']
                    
        return secret
Beispiel #5
0
 def get_yes_or_no(self, message, valid='s'):
     return validations.get_yes_or_no(message, valid)
Beispiel #6
0
 def confirm_environment_change(self, environment_name):
     return validations.get_yes_or_no('\n\nConfirmar a execução para o ambiente %s?' % environment_name)