BR112020014044A2 - sistema de computador para uso em um sistema de servidor, controlador, método para operar um sistema de computador e programa de computador - Google Patents

sistema de computador para uso em um sistema de servidor, controlador, método para operar um sistema de computador e programa de computador Download PDF

Info

Publication number
BR112020014044A2
BR112020014044A2 BR112020014044-9A BR112020014044A BR112020014044A2 BR 112020014044 A2 BR112020014044 A2 BR 112020014044A2 BR 112020014044 A BR112020014044 A BR 112020014044A BR 112020014044 A2 BR112020014044 A2 BR 112020014044A2
Authority
BR
Brazil
Prior art keywords
logic block
computer system
controller
storage
interface
Prior art date
Application number
BR112020014044-9A
Other languages
English (en)
Inventor
Henry Harrison
David Garfield
Original Assignee
Garrison Technology Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Garrison Technology Ltd filed Critical Garrison Technology Ltd
Publication of BR112020014044A2 publication Critical patent/BR112020014044A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

Um sistema de computador (100) que permite que uma instalação de armazenamento (500) seja compartilhada por múltiplos usuários diferentes de um sistema de Infraestrutura como um Serviço (IaaS), mantendo a separação de segurança entre os usuários. Um controlador (150) configurado para uso no sistema de computador e um método e programa de computador correspondentes também são fornecidos. O sistema de computador, (100) compreende um bloco lógico (101) que compreende uma ou mais unidades de processamento que executam instruções, o bloco lógico (101) configurado para emitir solicitações de leitura e gravação para armazenamento através de uma primeira interface (102); e um controlador (150) que está configurado para implementar um link de comunicações para armazenamento (500); implementar um link de comunicações (300) em um segundo sistema de computador (200) e receber informações que identificam um usuário atual do bloco lógico (101) do segundo sistema de computador (200); e receber as solicitações de leitura e gravação para armazenamento do bloco lógico (101) através da primeira interface (102), e concluir as solicitações. A primeira interface (102) é uma interface física dedicada entre o bloco lógico (101) e o controlador (150), pelo qual o controlador (150) pode determinar que as comunicações através da primeira interface (102) são comunicações com o bloco lógico (101). O controlador (150) está configurado para concluir as solicitações de leitura e gravação para armazenamento usando um ou mais locais de armazenamento do armazenamento (500) que o usuário atual do bloco lógico (101) identificado pelo segundo sistema de computador (200) tem permissão para uso.

Description

“SISTEMA DE COMPUTADOR PARA USO EM UM SISTEMA DE SERVIDOR, CONTROLADOR, MÉTODO PARA OPERAR UM SISTEMA DE COMPUTADOR E PROGRAMA DE COMPUTADOR” CAMPO DA INVENÇÃO
[001] A invenção refere-se a sistemas e métodos de computador para compartilhar com segurança recursos de armazenamento usados por vários usuários diferentes.
ANTECEDENTES DA INVENÇÃO
[002] Infraestrutura como um Serviço (IaaS) é oferecida por vários fornecedores de ‘nuvem’ como a Amazon® Elastic Compute Cloud®, Microsoft® e Digital Ocean®. Com os serviços de IaaS, um pool central de infraestrutura de computação física é usado por múltiplos clientes independentes (ou ‘usuários’) com separação de segurança para garantir que os dados e processos de qualquer cliente determinado sejam isolados dos de qualquer outro cliente.
[003] Esse isolamento precisa pertencer a um determinado ponto no tempo e em diferentes pontos no tempo. Isto porque a infraestrutura de computação que foi utilizada por um cliente (cliente A) em um primeiro tempo (T1) pode ser subsequentemente utilizada por outro cliente (cliente B) a um tempo posterior (T2). Não deve ser possível que os processos do cliente B obtenham acesso aos dados do cliente A ou que os processos do cliente A persistam até o tempo (T2) e obtenham acesso aos dados do cliente B (ou modifiquem o comportamento dos processos do cliente B).
[004] A IaaS existente reforça esse isolamento usando uma camada de virtualização ou camada de hipervisor. A tecnologia de virtualização permite que o provedor de IaaS defina ‘máquinas virtuais’ isoladas, cada uma das quais pode ser usada por um cliente diferente. Além de isolar as máquinas virtuais umas das outras em qualquer ponto no tempo determinado, a tecnologia de virtualização também é responsável por fornecer isolamento entre os pontos no tempo, reforçando que qualquer máquina virtual possa acessar apenas os dados que pertencem ao cliente que está usando essa máquina virtual naquele ponto no tempo.
[005] Em alguns casos, no entanto, o nível de isolamento fornecido pela virtualização pode ser insuficiente para os requisitos de segurança dos clientes. As vulnerabilidades nas tecnologias de virtualização (por exemplo, a vulnerabilidade VENOM) podem permitir que um cliente mal-intencionado obtenha acesso aos dados e processos pertencentes a outros clientes que operam máquinas virtuais no mesmo hospedeiro físico.
[006] Para resolver algumas dessas preocupações, os clientes podem receber seus próprios equipamentos físicos dedicados (incluindo recursos de processamento e, potencialmente, periféricos como armazenamento persistente), em vez de uma máquina virtual, para fornecer um nível mais forte de isolamento entre os clientes.
[007] No entanto, embora isso forneça isolamento adequado em um determinado ponto no tempo, ele próprio não fornece isolamento entre os pontos no tempo. Por exemplo, se equipamento físico dedicado (P1) é usado pelo cliente A no ponto (T1) e depois pelo cliente B no ponto (T2), processos do cliente A pode persistir para o tempo (T2) e ter acesso aos dados do cliente B.
Como outro exemplo, se (P1) incluir armazenamento persistente, o cliente B terá acesso aos dados armazenados pelo cliente A no armazenamento persistente.
Mesmo que o cliente A tivesse criptografado seus dados, seria possível que o cliente B substituísse os dados criptografados para que, quando o cliente A voltasse a usar (P1) no ponto (T3), seus dados não estivessem mais disponíveis.
[008] Além disso, o cliente A pode desejar obter acesso aos seus dados em um ponto (T3), se alocado equipamento físico diferente (P2). Para que isso seja possível, os dados do cliente A precisam ser armazenados em algumas instalações de armazenamento compartilhado acessíveis a partir de (P1) no tempo (T1) e de P2 no tempo (T3). Isso pode ser fornecido por um dispositivo de armazenamento conectado à rede (NAS) que é conectado a uma rede que também se conecta a (P1) e (P2). Neste caso, para alcançar isolamento adequado entre clientes, qualquer dado equipamento físico deve unicamente ser capaz de acessar os dados armazenados na unidade de armazenamento compartilhado, que é de propriedade do cliente para quem o dado equipamento físico é alocado naquele tempo.
[009] Existem várias abordagens para tentar impor esse requisito de isolamento. Por exemplo, dispositivos de armazenamento que usam protocolos de armazenamento em rede como iSCSI ou NBD podem fornecer a capacidade de impor controles de acesso com base na identidade de rede do equipamento físico que os acessa. Tais protocolos são, no entanto, geralmente comparativamente complexos, contando com outros protocolos de nível inferior, como TCP, IP e Ethernet.
[0010] Devido a essa complexidade, o suporte a esses protocolos geralmente será implementado de uma maneira que contenha vulnerabilidades de segurança que possam ser exploradas por um invasor. Se um cliente estiver suficientemente preocupado com a segurança e não quiser confiar na tecnologia de virtualização, é improvável que esteja satisfeito com o nível de segurança fornecido por esses controles de acesso.
[0011] O Pedido de Patente do Reino Unido com o número de publicação GB 2545010 descreve um sistema de computador IaaS no qual os clientes podem receber seu próprio bloco lógico físico dedicado em um determinado ponto no tempo, dessa forma, proporcionando isolamento entre os clientes em um determinado ponto no tempo. Para fornecer isolamento entre os pontos no tempo, cada bloco lógico é pré-configurado para solicitar instruções de inicialização de um controlador de armazenamento especializado na inicialização ou redefinição do bloco lógico, e o controlador de armazenamento é capaz de inicializar e redefinir os blocos lógicos usando um conexão de controle. Ao inicializar ou redefinir um bloco lógico usando a conexão de controle, o controlador de armazenamento pode colocar cada bloco lógico em um estado resultante da execução das instruções de inicialização que ele fornece. Ao executar etapas para impedir que o bloco lógico escreva instruções de inicialização no controlador de armazenamento, o estado conhecido resultante da execução das instruções de inicialização é um estado “bom conhecido”, pois o software em execução no bloco lógico não pode alterar as instruções de inicialização que ele executa na inicialização ou redefinição. Dessa forma, toda vez que um cliente é atribuído a um bloco lógico, a lógica pode ser ativada ou redefinida e o cliente saberá que o bloco lógico começa nesse estado “bom conhecido”.
[0012] Embora o sistema descrito no documento GB 2545010 forneça isolamento entre os clientes em um determinado ponto no tempo e entre os pontos no tempo, e possa ser implementado com alta segurança, ele fornece aos clientes acesso limitado ao armazenamento persistente. Onde cada bloco lógico é fornecido com o seu próprio armazenamento persistente, o nível de isolamento entre clientes em pontos no tempo seria significativamente reduzido, e também não permitiria que um cliente acessasse seus próprios dados se eles forem alocados um bloco lógico diferente em um momento posterior. Fornecer os blocos lógicos com um recurso de armazenamento compartilhado resolve o último problema, mas, neste caso, um cliente pode ser capaz de acessar ou substituir os dados armazenados de outro cliente, reduzindo o nível de isolamento entre os clientes em um determinado ponto no tempo e em múltiplos pontos no tempo.
DESCRIÇÃO RESUMIDA DA INVENÇÃO
[0013] As formas de realização descritas neste documento permitem que múltiplos clientes diferentes de um sistema IaaS compartilhem uma instalação de armazenamento, enquanto fornecem isolamento entre os clientes em um ponto no tempo e entre pontos no tempo.
[0014] A invenção é definida nas reivindicações independentes às quais a referência é agora direcionada. As características preferidas são definidas nas reivindicações dependentes.
[0015] De acordo com um aspecto da presente invenção, é fornecido um sistema de computador para uso em um sistema de servidor que fornece recursos de computação para múltiplos usuários diferentes. O sistema de computador compreende um bloco lógico (que também pode ser chamado de bloco de processamento) que compreende uma ou mais unidades de processamento que executam instruções, o bloco lógico configurado para emitir solicitações de leitura e gravação para armazenamento por uma primeira interface (que pode também chamada de primeira conexão). O sistema de computador compreende ainda um controlador configurado para implementar um link de comunicações para armazenamento; implementar um link de comunicações para um segundo sistema de computador e receber informações identificando um usuário atual do bloco lógico do segundo sistema de computador; e receber as solicitações de leitura e gravação para armazenamento do bloco lógico na primeira interface e para concluir as solicitações. A primeira interface é uma interface física dedicada entre o bloco lógico e o controlador, pela qual o controlador pode determinar que as comunicações na primeira interface são comunicações com o bloco lógico. O controlador está configurado para concluir as solicitações de leitura e gravação para armazenamento usando um ou mais locais de armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar.
[0016] Fornecendo uma interface física dedicada (ou seja, uma conexão física dedicada) entre o bloco lógico e o controlador (ou seja, uma interface ponto a ponto física (ou seja, uma conexão física ponto a ponto) entre o bloco lógico e o controlador), o controlador é capaz de distinguir completamente de forma confiável entre os dados que são recebidos do bloco lógico e os dados que não são recebidos do bloco lógico. Em outras palavras, o bloco lógico não pode passar por uma entidade diferente com sucesso, nem ser representada por uma entidade diferente, porque o controlador determina que as comunicações são do bloco lógico não baseado em dados que ele recebe, mas a partir da interface física sobre a qual ele recebe os dados. Isso não pode ser alterado sem acessar os internos físicos do sistema. Isso é particularmente relevante quando o sistema de computador compreende uma pluralidade de blocos lógicos, cada um com sua própria interface física dedicada ao controlador, pois significa que o controlador pode diferenciar entre blocos lógicos de uma maneira completamente segura e confiável.
[0017] Além disso, como o controlador recebe a identidade do usuário atual do bloco lógico (ou seja, o cliente que está atualmente atribuído ao bloco lógico) de um segundo sistema de computador que é completamente independente do bloco lógico, o controlador pode ter certeza absoluta de que o bloco lógico não pode influenciar a determinação do usuário pelo controlador.
De fato, na medida em que o segundo sistema de computador é confiável, o controlador pode ter certeza absoluta da identidade do usuário atual.
[0018] Em combinação, isso significa que, quando o controlador recebe solicitações de leitura ou gravação para armazenamento, o controlador é capaz de identificar locais de armazenamento de um recurso de armazenamento compartilhado que pode ter certeza de que é permitido para uso pela fonte das solicitações. Dessa maneira, as formas de realização permitem que uma instalação de armazenamento seja compartilhada por múltiplos usuários diferentes, mantendo um alto grau de isolamento entre os usuários do bloco lógico.
[0019] O controlador pode ser configurado, em resposta à recepção de informações do segundo sistema de computador, identificando um usuário subsequente do bloco lógico, para concluir as solicitações do bloco lógico para leitura e gravação para armazenamento usando um ou mais locais de armazenamento pré-definidos do armazenamento que o usuário subsequente do bloco lógico tem permissão para usar. O usuário subsequente, por vezes aqui referido como um novo usuário, é um usuário diferente em relação ao usuário atual, e pode ser um usuário “novo” no sentido de que eles são um usuário diferente que o usuário atual/ anterior; para evitar dúvidas, o usuário subsequente segue o usuário atual/ anterior, mas pode ter usado o bloco lógico antes. Como as instruções relativas a um novo usuário de um bloco lógico são recebidas do segundo sistema de computador, que é independente do bloco lógico, o sistema de computador não pode ser enganado pelo software executado no bloco lógico para ler dados ou gravar dados em locais de armazenamento que o usuário atual verdadeiro do bloco lógico não tem permissão para acessar.
[0020] O sistema de computador pode ainda compreender uma conexão de controle entre o bloco lógico e o controlador, com o controlador sendo configurado para usar a conexão de controle para inicializar ou redefinir o bloco lógico. O controlador pode ser configurado para inicializar ou redefinir o bloco lógico em resposta ao recebimento de uma instrução do segundo sistema de computador. O software em execução no bloco lógico não pode sobreviver sendo desligado ou redefinido, assim ele fornece a capacidade de ‘descarregar’ (flush) o bloco lógico do software em execução no bloco lógico. Isso pode ser útil ao preparar o bloco lógico para uso por um cliente diferente ou se acredita-se que o bloco lógico esteja executando um malware.
[0021] O controlador pode ser configurado para inicializar ou redefinir o bloco lógico em resposta ao recebimento de uma instrução do segundo sistema de computador para configurar o bloco lógico para uso por um usuário subsequente. A redefinição do bloco lógico ajuda a impedir que os processos de um usuário anterior do bloco lógico afetem os processos e os dados do bloco lógico subsequente.
[0022] A instrução para configurar o bloco lógico para uso por um usuário subsequente pode compreender informações identificando o usuário subsequente do bloco lógico. O controlador precisa conhecer a identidade do usuário subsequente do bloco lógico se ele deve atender as solicitações emitidas pelo usuário subsequente do bloco lógico para ler e gravar dados no armazenamento, mantendo a separação de segurança entre os diferentes usuários.
[0023] A instrução para configurar o bloco lógico para uso por um usuário subsequente pode compreender uma instrução para o controlador parar de comunicar solicitações de leitura e gravação para armazenamento do bloco lógico para armazenamento, antes de redefinir o bloco lógico.
[0024] O bloco lógico pode ser configurado, por exemplo, logicamente com fio (hardwired), para especificar um ou mais locais de armazenamento pré-definidos quando emite solicitações de leitura e gravação para armazenamento pela primeira interface. Nesse caso, o controlador pode ser configurado para converter o local de armazenamento pré-definido especificado pelo bloco lógico para um local de armazenamento específico do usuário que o usuário do bloco lógico identificado pelo segundo sistema de computador pode usar e concluir as solicitações usando o local de armazenamento específico do usuário. Dessa maneira, o bloco lógico sempre especifica os mesmos locais de armazenamento, independentemente do usuário do bloco lógico, para que os locais de armazenamento específicos do usuário não precisem ser comunicados ao bloco lógico. Isso pode simplificar o processo de alternância entre usuários do bloco lógico. Também pode melhorar a segurança porque o bloco lógico, que pode ser comprometido durante o uso, não conhece nenhum local de armazenamento específico do usuário e, portanto, não pode tentar comunicá-lo fora do sistema do computador. A ligação por fio lógica do bloco lógico para especificar os locais de armazenamento fornece segurança adicional, pois o comportamento não pode ser alterado pelo software em execução no bloco lógico.
[0025] O controlador pode ser configurado para fornecer o bloco lógico com locais de armazenamento específicas do usuário que o usuário atual do bloco lógico identificado pelo segundo sistema de computador é permitido que seja usado, caso em que o bloco lógico pode ser configurado para especificar estes locais de armazenamento específicos do usuário quando ele emite solicitações de leitura e gravação para armazenamento. Isso pode reduzir os requisitos de processamento e a complexidade do controlador, pois o controlador não precisa converter os locais de armazenamento que recebe do bloco lógico. Nesse caso, o controlador também pode ser configurado para verificar se os locais de armazenamento especificados pelo bloco lógico correspondem aos locais de armazenamento específicos do usuário associados ao usuário atual do bloco lógico identificado pelo segundo sistema de computador. Isso fornece imposição de segurança, pois o bloco lógico pode ser comprometido durante o uso e especificar locais de armazenamento que o usuário não tem permissão para acessar.
[0026] O bloco lógico pode ser configurado, por exemplo, ligado logicamente por fios (logically hardwired), para solicitar os locais de armazenamento específicos do usuário, é permitido usar o controlador na inicialização ou redefinição do bloco lógico. A integração desse comportamento na sequência de inicialização do bloco lógico fornece um sistema mais robusto.
[0027] O controlador pode compreender uma interface de rede para comunicação com uma rede e o controlador pode ser configurado para enviar dados de rede recebidos via interface de rede para o bloco lógico e para enviar dados de rede recebidos do bloco lógico para a rede via interface de rede.
A adição de uma interface de rede ao sistema do computador fornece ao bloco lógico funcionalidades adicionais e fornece um único ponto de gerenciamento de segurança para armazenamento e acesso à rede.
[0028] O controlador pode ser configurado para impor regras pré- definidas de acesso à rede específicas do usuário nos dados na rede enviados e recebidos do bloco lógico através da primeira interface de acordo com o usuário atual do bloco lógico identificado pelo segundo sistema de computador.
Isso não apenas reduz ainda mais o risco de o bloco lógico ser comprometido durante o uso, como também permite que a exposição do bloco lógico a ameaças externas seja adaptada aos requisitos do usuário do bloco lógico, sem precisar alterar a configuração do bloco lógico.
[0029] O bloco lógico pode ser configurado para enviar e receber dados de rede pela primeira interface. Alternativamente, o bloco lógico pode ser configurado para enviar e receber dados de rede através de uma segunda interface (que também pode ser referida como uma segunda conexão) entre o bloco lógico e o controlador. Onde dados de rede e dados de armazenamento são enviados pela mesma primeira interface, o primeiro e o segundo protocolos podem ser multiplexados através da primeira interface, por exemplo, usando a multiplexação por divisão de tempo. Alternativamente, o primeiro protocolo de comunicação pode ser ligado através do segundo protocolo de comunicação, ou o segundo protocolo de comunicação pode ser ligado através do primeiro protocolo de comunicação. Onde os dados da rede e os dados de armazenamento são enviados através de interfaces físicas dedicadas separadas, o bloco lógico pode ser configurado para emitir solicitações de leitura e gravação para armazenamento através da primeira interface, de acordo com um primeiro protocolo de comunicação, e o bloco lógico é configurado para enviar e receber dados de rede através da primeira interface, de acordo com um segundo protocolo de comunicação.
[0030] O envio de dados de rede e dados de armazenamento pela mesma interface pode reduzir o número de conexões físicas entre o controlador e o bloco lógico, que por sua vez pode salvar pinos de hardware para outros usos, como a conexão de mais blocos lógicos ao controlador. No entanto, o envio de dados de rede e dados de armazenamento através de interfaces físicas separadas também é uma possibilidade.
[0031] O armazenamento pode compreender armazenamento baseado em rede e o controlador pode ser configurado para concluir as solicitações de leitura e gravação para armazenar no armazenamento baseado em rede pela interface de rede.
[0032] O bloco lógico pode ser configurado, por exemplo, ligado logicamente por fios, para solicitar instruções de inicialização do controlador através da primeira interface na inicialização ou redefinição do bloco lógico. O bloco lógico pode ser ligado logicamente por fios usando um ou mais de um ASIC, PLD ou instruções armazenadas na memória somente leitura. As instruções da ROM podem ser armazenadas dentro do bloco lógico. A pré- configuração do bloco lógico para solicitar instruções de inicialização do controlador na inicialização ou redefinição do bloco lógico permite que o controlador controle o estado inicial do bloco lógico quando o bloco lógico é alternado para um novo usuário. Isso também reduz o risco de um bloco lógico ser “emparedado” como resultado do bloco lógico fazer alterações nas instruções de inicialização que ele executa ao inicializar ou redefinir.
[0033] O controlador pode ser configurado, em resposta ao recebimento da solicitação de instruções de inicialização do bloco lógico, para concluir a solicitação usando um ou mais locais de armazenamento do armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador pode usar, a fim de fornecer instruções de inicialização específicas do usuário ao bloco lógico. Isso permite que um determinado usuário do bloco lógico inicialize seu bloco lógico em um estado específico do usuário.
Embora esse estado possa ser desejado pelo usuário, ele também pode ser afetado por malware. No entanto, o fato de o controlador sempre retornar dados de locais de armazenamento específicos do usuário significa que outros usuários ainda estão isolados (em um determinado momento e em múltiplos pontos no tempo) do estado afetado.
[0034] Adicionalmente ou alternativamente, o controlador pode ser configurado, em resposta ao recebimento da solicitação de instruções de inicialização do bloco lógico, para fornecer instruções de inicialização pré- definidas fornecidas pelo segundo sistema de computador ao bloco lógico. Isso permite que o bloco lógico seja inicializado em um estado “bom conhecido” que resulta da execução das instruções de inicialização fornecidas pelo segundo sistema de computador, o que pode ser conhecido por serem instruções de inicialização “limpas”. Isso pode permitir que as instruções de inicialização sejam atualizadas de maneira segura. Além disso, se as instruções de inicialização específicas do usuário do próprio usuário foram comprometidas de alguma forma, isso permite que o bloco lógico seja inicializado em um estado bom conhecido, quando as instruções de inicialização específicas do usuário podem ser reparadas.
[0035] O bloco lógico pode compreender ainda seu próprio armazenamento persistente. Isso fornece funcionalidade adicional ao usuário do bloco lógico.
[0036] Quando o bloco lógico compreende o seu próprio armazenamento persistente, e onde o sistema de computador compreende uma conexão de controle entre o bloco lógico e o controlador, o controlador pode ser configurado, em resposta à recepção de uma instrução do segundo sistema de computador para configurar o bloco lógico para ser usado por um novo usuário através de: inicialização ou redefinição do bloco lógico de modo que o bloco lógico solicita instruções de inicialização do controlador; fornecimento de instruções de inicialização pré-definidas fornecidas pelo segundo sistema de computador para o bloco lógico, as instruções de inicialização pré-definidas compreendendo instruções que fazem com que o bloco lógico substitua o próprio armazenamento persistente do bloco lógico de forma que o conteúdo do próprio armazenamento persistente do bloco lógico não seja recuperável pelo bloco lógico; redefinição de forma que o bloco lógico solicita instruções de inicialização do controlador; e comunicação da solicitação a um ou mais locais de armazenamento pré-definidos do armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar, a fim de fornecer instruções de inicialização específicas do usuário ao bloco lógico.
[0037] Enquanto fornece ao bloco lógico seu próprio armazenamento persistente, ele fornece funcionalidade adicional aos usuários do sistema do computador, isso reduz potencialmente o isolamento entre diferentes usuários em diferentes pontos no tempo. No entanto, utilizando a conexão de controle e a sequência de inicialização com fio dessa maneira, o controlador é capaz de garantir que os dados armazenados no armazenamento persistente do bloco lógico por um usuário não possam ser acessados ou não afetem um usuário subsequente do bloco lógico.
[0038] Como alternativa, em vez de redefinir o bloco lógico após a execução das instruções de inicialização que causam a substituição de seu próprio armazenamento persistente, as instruções de inicialização podem compreender uma instrução final que faz com que o bloco lógico solicite outro conjunto de instruções de inicialização. O controlador pode então comunicar essa solicitação a um ou mais locais de armazenamento pré-definidos do armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar, a fim de fornecer instruções de inicialização específicas do usuário ao bloco lógico. Essa abordagem, na qual o controlador não precisa redefinir o bloco lógico uma segunda vez, pode ser mais simples de implementar.
[0039] O bloco lógico pode ser configurado para emitir solicitações de leitura e gravação para armazenamento através da primeira interface, de acordo com um protocolo de armazenamento, como o eMMC. A utilização de um protocolo de armazenamento simples, tal como o eMMC permite que o controlador seja implementado de uma forma de alta segurança, por exemplo, utilizando um FGPA ou ASIC, ou usando o software formalmente verificável. Isso reduz o risco de um bloco lógico comprometido poder comprometer o controlador usando comunicações através da primeira interface.
[0040] O bloco lógico pode não ter interfaces fora do sistema do computador, exceto através do controlador. Isso garante que o controlador seja capaz de fornecer separação de segurança entre os usuários do sistema do computador.
[0041] Os locais de armazenamento podem ser intervalos de dados, como intervalos de bytes ou intervalos de blocos.
[0042] O armazenamento pode compreender um ou mais dentre: um ou mais meios de armazenamento acessíveis através de uma interface de rede do controlador; uma ou mais mídias de armazenamento acessíveis por meio do link de comunicações com o sistema de computador de gerenciamento; e uma ou mais mídias de armazenamento no sistema do computador.
[0043] O sistema de computador pode ainda compreender um ou mais blocos lógicos adicionais, cada um compreendendo uma ou mais unidades de processamento que executam instruções. Cada um dos blocos lógicos adicionais pode ser configurado para emitir solicitações de leitura e gravação para o armazenamento sobre uma respectiva interface física específica entre o respectivo bloco lógico e o controlador, de tal forma que o controlador pode determinar com que bloco lógico que está em comunicação. O controlador pode ser ainda configurado, para os blocos lógicos adicionais, para receber informações que identificam um usuário atual do respectivo bloco lógico adicional do segundo sistema de computador; e receber solicitações para leitura e gravação para armazenamento a partir do respectivo bloco lógico adicional e concluir as respectivas solicitações usando os respectivos locais de armazenamento pré-definidos do armazenamento que o usuário atual do respectivo bloco lógico identificado pelo segundo sistema de computador tem permissão para uso.
[0044] O sistema de computador pode ainda compreender o segundo sistema de computador.
[0045] O segundo sistema de computador pode ser configurado para fornecer ao controlador os locais de armazenamento que cada um de uma pluralidade de usuários diferentes do sistema de computador pode usar.
[0046] O segundo sistema de computador pode ser configurado para fornecer ao controlador regras de acesso à rede específicas do usuário.
[0047] O controlador também é fornecido separadamente.
[0048] Um método correspondente de operação de um sistema de computador que compreende um controlador e um bloco lógico que compreende uma ou mais unidades de processamento que executam instruções também é fornecido. O método compreende receber, pelo controlador, a partir de um segundo sistema de computador, informações que identificam um usuário atual do bloco lógico; receber, pelo controlador, a partir do bloco lógico, através de uma primeira interface, solicitações para leitura e gravação para armazenamento, a primeira interface sendo uma interface física dedicada entre o bloco lógico e o controlador, pelo qual o controlador pode determinar que as comunicações através da primeira interface são comunicações com o bloco lógico; e concluir as solicitações de leitura e gravação para armazenamento usando um ou mais locais de armazenamento do armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar.
[0049] Um programa de computador que, quando executado em um controlador, faz com que ele execute o método também é fornecido.
BREVE DESCRIÇÃO DOS DESENHOS
[0050] As formas de realização da invenção serão agora descritas mais detalhadamente apenas a título de exemplo e com referência às figuras anexas nas quais: - A Figura 1 é um diagrama esquemático de um primeiro e segundo sistema de computador de acordo com uma forma de realização; - A Figura 2 é um diagrama esquemático adicional de um primeiro e segundo sistema de computador de acordo com uma forma de realização, mostrando detalhes adicionais ao da Figura 1, incluindo uma conexão de controle para inicializar ou redefinir os blocos lógicos; - A Figura 3 é um diagrama esquemático adicional de um primeiro e segundo sistema de computador de acordo com uma forma de realização, em que os blocos lógicos têm seu próprio armazenamento persistente; e - A Figura 4 é um diagrama esquemático adicional de um primeiro e segundo sistema de computador de acordo com uma forma de realização, no qual o controlador de interface também encaminha as comunicações para e a partir dos blocos lógicos por meio de uma rede.
[0051] O número de referência semelhante é usado para elementos semelhantes em toda a descrição e figuras.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0052] A Figura 1 mostra um primeiro sistema de computador (100)
e um segundo sistema de computador (200). Para fins de referência, o primeiro sistema de computador será referido como um sistema de computador IaaS (100) e o segundo sistema de computador será referido como um sistema de gerenciamento de computador (200).
[0053] O sistema de computador IaaS (100) compreenderá tipicamente um ou mais blocos lógicos (101a; 101b; 101c), cada qual compreendendo uma ou mais unidades de processamento e alguma RAM (não mostrada), e um controlador de interface especializado (150). Um bloco lógico (101a; 101b; 101c) também pode ser chamado de bloco de processamento, circuito de processamento ou circuito lógico, pois ele executa funções de processamento. Cada bloco lógico (101a; 101b; 101c) está conectado ao controlador de interface (150) através de sua própria interface dedicada, ponto a ponto, física (102a; 102b; 102c). O termo ‘interface’ é usado neste contexto para se referir à conexão entre um bloco lógico (101a; 101b; 101c) e o controlador de interface (150). Enquanto cada um dos blocos lógicos (101a; 101b; 101c) pode incluir ou ter outras conexões com outros componentes dedicados dentro do sistema de computador IaaS (tal como armazenamento persistente dedicado, como será descrito abaixo com referência à Figura 3), os blocos lógicos (101a; 101b; 101c) não possuem nenhuma outra conexão com componentes que são compartilhados pelos blocos lógicos (101a; 101b; 101c), nem quaisquer conexões com a parte externa do sistema de computador IaaS (100), exceto através do controlador de interface (150).
[0054] As conexões entre os blocos lógicos (101a; 101b; 101c) e o controlador de interface (150) são estabelecidos de tal maneira que os blocos lógicos (101a; 101b; 101c) podem emitir solicitações ao controlador de interface (150) para leitura e gravação para armazenamento usando um protocolo de comunicação adequado, tal como um protocolo de armazenamento.
[0055] O controlador de interface (150) é capaz de se comunicar com os blocos lógicos (101a; 101b; 101c) através de sua respectiva interface física dedicada (102a; 102b; 102c) de acordo com o protocolo escolhido. O controlador de interface (150) é, portanto, capaz de receber as solicitações de leitura e gravação emitidas pelos blocos lógicos (101a; 101b; 101c) e, tendo atendido as solicitações de maneira apropriada (como será explicado em mais detalhes abaixo), retorna dados para os blocos lógicos (101a; 101b; 101c) sobre sua interface física dedicada (102a; 102b; 102c), se necessário, para concluir as solicitações.
[0056] Os blocos lógicos (101a; 101b; 101c) e o controlador de interface (150) podem ser implementados em pacotes de chips separados, por exemplo, matrizes de grade de esferas. Neste caso, uma interface física dedicada entre um bloco lógico e o controlador de interface (150) pode ser alcançada criando conexões metálicas em uma PCB entre os pinos do pacote de blocos lógicos e pinos apropriados e dedicados no pacote do controlador de interface. Outros blocos lógicos seriam então conectados a outros pinos no pacote do controlador de interface para obter suas respectivas interfaces físicas dedicadas.
[0057] Alternativamente, os blocos lógicos (101a; 101b; 101c) e o controlador de interface (150) podem ser implementados como circuitos separados dentro de um único substrato de silício. Neste caso, uma interface física dedicada entre um bloco lógico e o controlador de interface (150) pode ser alcançada através da criação de trilhas condutoras adequadas no substrato, por exemplo, utilizando litografia.
[0058] De preferência, um protocolo de armazenamento muito simples, como o eMMC, é escolhido para comunicações entre o controlador de interface (150) e os blocos lógicos (101a; 101b; 101c) através de sua respectiva interface física dedicada (102a; 102b; 102c). A escolha de um protocolo muito simples permite que a funcionalidade do controlador de interface seja implementada com alta segurança. Isto torna-o muito difícil para partes maliciosas usem o protocolo como um meio de comprometer a função do controlador de interface (150), usando software malicioso que pode executar na blocos lógicos (101a; 101b; 101c). Um exemplo de uma abordagem de alta garantia é a implementação do controlador de interface (150) em hardware, por exemplo, usando um FPGA ou ASIC. A funcionalidade de tais implementações baseadas em hardware não pode ser modificada sem acesso aos componentes internos do dispositivo, tornando-os particularmente seguros. Outro exemplo de uma abordagem de alta garantia é a implementação do controlador de interface usando software desenvolvido usando métodos formais. Embora seja possível usar um protocolo mais complexo, isso será mais arriscado, difícil e caro de implementar de maneira com alta segurança.
[0059] O controlador de interface (150) também implementa um link de comunicações (300) para o sistema de computador de gerenciamento (200).
Isso pode ser alcançado de várias maneiras diferentes, mas o importante é que o link de comunicações (300) seja independente de qualquer uma das interfaces físicas dedicadas (102a; 102b; 102c). Dessa maneira, a blocos lógicos (101a; 101b; 101c) não podem influenciar quais dados são recebidos pelo controlador de interface (150) a partir do segundo sistema de computador (200) através do link de comunicações (300).
[0060] Em algumas implementações, o link de comunicações (300) é um link para uma rede de gerenciamento (300) da qual o sistema de computador de gerenciamento (200) faz parte. Em outras implementações, o segundo sistema de computador (200) é realmente uma parte do sistema de computador IaaS (100). Independentemente, o link de comunicações (300) entre o controlador de interface (150) e o sistema de computador de gerenciamento (200) é independente de qualquer uma das interfaces físicas dedicadas (102a; 102b; 102c) entre o controlador de interface (150) e os blocos lógicos (101a;
101b; 101c).
[0061] O link de comunicações (300) pode ser implementado como uma conexão física com fio entre o sistema de computador IaaS (100) e o sistema de computador de gerenciamento (200), ou como uma conexão de rede com e/ ou sem fio. O link de comunicações pode ser implementado de tal maneira que as comunicações através deste link (300) não possam ser acessadas por outros componentes do sistema de computador IaaS (100). Por exemplo, em uma implementação, o controlador de interface (150) contém uma porta de comunicação física que é conectada via um cabo ao sistema de computador de gerenciamento (200). Em outra implementação, o controlador de interface (150) implementa um link criptografado para o sistema de computador de gerenciamento (200) de tal maneira que outros componentes do sistema de computador de inicialização IaaS (100) possam acessar o tráfego criptografado, mas não terá acesso à chave necessária para descriptografar ou criptografar.
[0062] O sistema de computador de gerenciamento (200) está tipicamente associado a um operador do sistema de computador IaaS (100). Por exemplo, o sistema de computador de gerenciamento (200) pode ser responsável por gerenciar a atribuição do uso do(s) bloco(s) lógico(s) (101a; 101b; 101c) para clientes do sistema de computador IaaS (100).
Alternativamente ou adicionalmente, essas informações podem ser fornecidas ao sistema de computador de gerenciamento (200) ou inseridas por um operador ou outra entidade associada ao operador do sistema de computador IaaS (100).
Dessa maneira, o sistema de computador de gerenciamento (200) conhece a identidade dos usuários dos blocos lógicos (101a; 101b; 101c) a qualquer momento e pode comunicar esta informação ao controlador de interface (150) através do link de comunicações (300).
[0063] O controlador de interface (150) também implementa um link de comunicações para o armazenamento (500), o que permite ao controlador de interface (150) ler e gravar dados no armazenamento (500), a fim de atender às solicitações dos blocos lógicos (101a; 101b; 101c).
[0064] Embora a Figura 1 mostre o armazenamento (500) como sendo um único dispositivo de armazenamento fora do sistema de computador IaaS (100) e do sistema de computador de gerenciamento (200), deve-se considerar que este é apenas um exemplo: a localização precisa do armazenamento (500) não é importante, e o armazenamento compartilhado (500) pode assumir a forma de múltiplos dispositivos de armazenamento, possivelmente em locais diferentes, tanto dentro como fora do sistema de computador IaaS (100) e do sistema de computador de gerenciamento (200). O importante é que os blocos lógicos (101a; 101b; 101c) não podem ler ou gravar diretamente do/ para o armazenamento compartilhado (500), e deve fazê-lo através do controlador de interface (150), emitindo solicitações através de suas interfaces físicas dedicadas (102a; 102b; 102c).
[0065] O armazenamento (500) é um recurso de armazenamento compartilhado, pois atende às necessidades de armazenamento de múltiplos usuários diferentes do sistema de computador IaaS (100). Será entendido que os usuários diferentes podem ser usuários do mesmo bloco lógico em momentos diferentes e/ ou usuários de diferentes blocos lógicos no mesmo ou em momentos diferentes.
[0066] Para fornecer separação de segurança entre os diferentes usuários do sistema de computador IaaS (100), cada usuário possui locais de armazenamento (por exemplo, intervalos de blocos ou de bytes) do armazenamento (500) que eles podem usar (ou seja, ler e gravar), mas que outro usuário não tem permissão para usar. Em uso, o controlador de interface (150) tem conhecimento dos locais de armazenamento que os usuários atuais dos blocos lógicos (101a; 101b; 101c) (como indicado pelo sistema de computador de gerenciamento (200)) têm permissão para usar.
[0067] O controlador de interface (150) pode obter conhecimento desses locais de armazenamento de várias maneiras diferentes. Em algumas implementações, os locais de armazenamento são pré-atribuídos aos diferentes usuários do sistema de computador IaaS (100) e o controlador de interface (150) é pré-configurado (pelo sistema de computador de gerenciamento (200), por exemplo) para que ele conheça os locais de armazenamento que cada um dos usuários diferentes tem permissão para usar. Em outras implementações, quando o sistema de computador de gerenciamento (200) fornece ao controlador de interface (150) a identidade do usuário atual de um bloco lógico, ele também fornece ao controlador de interface (150) os locais de armazenamento que o usuário do bloco lógico tem permissão para usar. Além disso, o controlador de interface (150) pode ser capaz de atribuir locais de armazenamento não atribuídos anteriormente a usuários novos ou existentes do sistema de computador IaaS (100).
[0068] Além disso, o controlador de interface (150) responde às solicitações de leitura e gravação que recebe de um bloco lógico através de sua respectiva interface física dedicada usando apenas (isto é, acessando ou gravando) os locais de armazenamento que o usuário atual do bloco lógico (como indicado pelo sistema de computador de gerenciamento (200)) tem a permissão de usar. A implementação precisa desse aspecto pode variar. Por exemplo, em algumas implementações, antes que um usuário de um bloco lógico emita quaisquer solicitações de leitura/ gravação, o controlador de interface (150) fornece ao bloco lógico os locais de armazenamento (por exemplo, faixas de blocos ou bytes) que o usuário do bloco lógico (como indicado pelo sistema de computador de gerenciamento (200)) tem a permissão de usar.
Posteriormente, o controlador de interface (150) verificará que os locais de armazenamento especificados pelo bloco lógico nas solicitações de leitura e gravação correspondem aos locais de armazenamento que o usuário tem permissão para usar e somente solicitações de proxy verificadas. Em outras implementações, cada bloco lógico é pré-configurado (por exemplo, ligado logicamente por fios) para especificar locais de armazenamento arbitrários (por exemplo, pré-definidos), independentemente do usuário do bloco lógico. Por exemplo, o bloco lógico pode usar locais de armazenamento programados em uma ROM que está dentro do bloco lógico, ou esses locais de armazenamento podem ser fornecidos pelos circuitos ligados por fio do bloco lógico. Nestas formas de realização, o controlador de interface (150) converte os locais de armazenamento arbitrário especificados nas solicitações que são emitidas pelo bloco lógico em locais de armazenamento que o usuário do bloco lógico tem permissão para usar.
[0069] Para ilustrar a operação do sistema IaaS (100) e do sistema de computador de gerenciamento (200) descrito acima, um exemplo será agora fornecido.
[0070] Em um determinado tempo (T1), a um cliente (cliente A) do sistema de computador IaaS (100) foi atribuído um determinado bloco lógico (bloco lógico (101a), por exemplo) para uso. Se o sistema de computador IaaS (100) inclui mais de um bloco lógico, um outro cliente (cliente B) também pode ter sido atribuído a outro dos blocos lógicos (bloco lógico (101b), por exemplo) no ponto (T1).
[0071] O controlador de interface (150) recebe informações do sistema de computador de gerenciamento (200) que identifica o cliente A como o usuário atual (no ponto (T1)) do bloco lógico (101a). Da mesma forma, o controlador de interface (150) recebe informações do sistema de computador de gerenciamento (200) que identifica o cliente B como o usuário atual do bloco lógico (101b). Uma vez que o link de comunicações (300) entre o controlador de interface (150) e o sistema de computador de gerenciamento (200) é completamente independente das interfaces físicas dedicadas (102a; 102b)
entre o controlador de interface (150) e os blocos lógicos (101a; 101b), a blocos lógicos (101a; 101b) não podem influenciar a informação de identidade que o controlador de interface (150) recebe do sistema de computador de gerenciamento (200). O controlador de interface (150), portanto, conhece de maneira confiável a identidade dos usuários atuais dos blocos lógicos (101a; 101b). O sistema de computador de gerenciamento (200) também pode identificar os locais de armazenamento que o cliente A e o cliente B têm permissão para usar. Alternativamente, o controlador de interface (150) pode ter sido pré-configurado com a informação.
[0072] Para ler e gravar dados no recurso de armazenamento compartilhado (500), o bloco lógico (101a) do cliente A emite solicitações de leitura e gravação via controlador de interface (150) através da interface física dedicada (102a) do bloco lógico (101a). Da mesma forma, para ler dados e gravar dados no recurso de armazenamento compartilhado (500), o bloco lógico (101b) do cliente B emite solicitações de leitura e gravação através do controlador de interface (150) através da interface física dedicada (102b) do bloco lógico (101b).
[0073] O controlador de interface (150) recebe as solicitações de leitura e gravação emitidas pelo bloco lógico (101a) através da interface física dedicada (102a). Devido à natureza física dedicada da interface (102a), o controlador de interface (150) pode ter absoluta certeza de que as solicitações que recebe através da interface (102a) foram emitidas pelo bloco lógico (101a).
Em outras palavras, o controlador de interface (150) baseia a sua determinação da fonte das solicitações na interface sobre a qual recebe as solicitações, em vez do conteúdo dos dados que recebe. Isso significa que o bloco lógico (101a) não pode se passar por outra entidade (tal como o bloco lógico (101b)), e da mesma forma outras entidades (como o bloco lógico (101b)) não podem se passar pelo bloco lógico (101a). Da mesma forma, o controlador de interface
(150) recebe as solicitações de leitura e gravação emitidas pelo bloco lógico (101b) através da interface física dedicada (102b). Devido à natureza física dedicada da interface (102b), o controlador de interface (150) pode ter certeza absoluta de que as solicitações que recebe pela interface (102b) foram emitidas pelo bloco lógico (101b).
[0074] O controlador de interface (150) é então capaz de associar as solicitações recebidas do bloco lógico (101a) através da interface (102a) com um usuário, ou seja, o usuário atual do bloco lógico (101a), conforme indicado pelo sistema de computador de gerenciamento (200): cliente A. Da mesma forma, o controlador de interface (150) é capaz de associar as solicitações recebidas do bloco lógico (101b) através da interface (102b) a um usuário, ou seja, o usuário atual do bloco lógico (101b), conforme indicado pelo sistema de computador de gerenciamento (200): cliente B.
[0075] Finalmente, o controlador de interface (150) atende às solicitações de leitura e gravação emitidas pelo cliente A. Ao fazer isso, o controlador de interface (150) usa apenas (leitura/ gravação para) locais de armazenamento do armazenamento compartilhado (500) que o cliente A tem permissão para usar, e nunca lerá ou gravará nos locais de armazenamento compartilhado que o cliente A não tem permissão para uso. Da mesma forma, o controlador de interface (150) atende às solicitações de leitura e gravação emitidas pelo cliente B, utilizando apenas locais de armazenamento do armazenamento compartilhado (500) que o cliente B tem permissão para usar.
Dessa maneira, o sistema de computador IaaS (100) permite que múltiplos clientes diferentes do sistema de computador IaaS (100) compartilhem um recurso de armazenamento (500), mas mantém o isolamento entre os diferentes clientes.
[0076] Em um momento posterior, (T2), o controlador de interface (150) recebe informações do sistema de computador de gerenciamento (200)
que identifica um novo usuário, cliente C, do bloco lógico (101a). O controlador de interface (150) responderá, portanto, às solicitações subsequentes de leitura e gravação que são emitidas pelo bloco lógico (101a) usando apenas locais de armazenamento do armazenamento compartilhado (500) que o cliente C tem permissão para usar. Em outras palavras, quando o usuário atual de um bloco lógico do sistema de computador IaaS muda do Cliente A para o Cliente C, o controlador de interface (150) interrompe o proxy de solicitações de leitura/ gravação para locais de armazenamento que o Cliente A tem permissão para usar e, em vez disso, faz o proxy de solicitações de leitura/ gravação para locais de armazenamento que o cliente C tem permissão para usar.
[0077] A Figura 2 ilustra uma forma de realização na qual o sistema de computador IaaS (100) compreende ainda conexões de controle (103a; 103b; 103c).
[0078] Como pode ser visto, o sistema de computador IaaS (100) da Figura 2 inclui os mesmos componentes, conexões e interfaces que o sistema de computador IaaS (100) da Figura 1, mas inclui ainda conexões de controle (103a; 103b; 103c) que conectam os blocos lógicos (101a; 101b; 101c) ao controlador de interface (150). O controlador de interface (150) pode usar as conexões de controle (103a; 103b; 103c) para inicializar o respectivo bloco lógico (101a; 101b; 101c), desligar os respectivos blocos lógicos ou redefinir os respectivos blocos lógicos. Em particular, as conexões de controle (103a; 103b; 103c) permitem que o controlador de interface (150) independentemente inicialize os blocos lógicos a partir de um estado inativo, ou independentemente redefina os blocos lógicos.
[0079] O termo “redefinição”, conforme aqui utilizado, inclui um ciclo de energia de um bloco lógico (101a; 101b; 101c) (uma sequência de desligamento de um bloco lógico seguido de inicialização do bloco lógico) e o que pode ser chamado de “redefinição de hardware”. Uma redefinição de hardware é um método no nível do hardware forçando um bloco lógico a executar seu processo inicial de inicialização sem passar por uma sequência de desligamento/ inicialização.
[0080] O termo “inicialização”, conforme usado neste documento, refere-se à inicialização de um bloco lógico a partir de um estado inativo e desligado, em que o bloco lógico está no estado inativo por um tempo relativamente longo. Será apreciado que, sempre que um bloco lógico for inicializado, a inicialização será precedida, em algum ponto, por um desligamento. No entanto, o termo “inicialização” é usado aqui em contraste com uma redefinição do ciclo de energia, onde a inicialização ocorre em um tempo relativamente curto após o desligamento anterior.
[0081] Cada conexão de controle (103a; 103b; 103c) pode conectar o controlador de interface (150) aos pinos de entrada de tensão de um ou mais circuitos integrados que implementam seu respectivo bloco lógico (101a; 101b; 101c). Desta maneira, o controlador de interface (150) pode controlar se a tensão é aplicada ou não aos um ou mais circuitos integrados que implementam um bloco lógico (101a; 101b; 101c) e, portanto, controla o estado de energia do respectivo bloco lógico (101a; 101b; 101c).
[0082] Alternativamente ou adicionalmente, cada conexão de controle (103a; 103b; 103c) pode conectar o controlador de interface (150) a um pino de redefinição de hardware de um circuito integrado implementando seu respectivo bloco lógico (101a; 101b; 101c). Puxar a voltagem baixa no pino de redefinição de hardware e retornar a voltagem para alta fará com que o respectivo bloco lógico (101a; 101b; 101c) reinicie.
[0083] O controlador de interface (150) pode incluir um Circuito Integrado de Gerenciamento de Energia (PMIC), não mostrado na Figura 2. Onde o controlador de interface inclui um PMIC, as conexões de controle (103a; 103b; 103c) podem conectar o PMIC aos pinos de entrada de tensão e/ ou ao pino de redefinição de hardware de um ou mais circuitos integrados que implementam os respectivos blocos lógicos (101a; 101b; 101c).
[0084] De acordo com algumas formas de realização, o controlador de interface (150) está configurado para usar uma conexão de controle (103a; 103b; 103c) para inicializar ou reiniciar um respectivo bloco lógico (101a; 101b; 101c) em resposta à recepção de uma instrução do sistema de computador de gerenciamento (200), a fim de preparar o respectivo bloco lógico (101a; 101b; 101c) para uso por um cliente diferente do sistema IaaS (100). Os processos de software em execução em um bloco lógico antes da inicialização ou redefinição não sobrevivem à inicialização ou redefinição, portanto, isso tem o efeito de liberar o bloco lógico antes de seu uso por um novo cliente, o que ajuda a isolar diferentes clientes em diferentes pontos no tempo.
[0085] Nestas formas de realização, o sistema de computador de gerenciamento (200) pode instruir o controlador de interface (150) a realizar as seguintes etapas para preparar um bloco lógico (101a; 101b; 101c) para uso por um cliente diferente (cliente B): i. Parar temporariamente o proxy de solicitações de leitura e gravação a partir do bloco lógico para a instalação de armazenamento compartilhado; ii. Redefinir o bloco lógico usando a respectiva conexão de controle; e iii. Responder às solicitações subsequentes de leitura e gravação do bloco lógico, de modo que ele possa somente ler e gravar nos locais de armazenamento da instalação de armazenamento compartilhado que são alocados ao cliente B.
[0086] Como será entendido a partir da descrição acima da Figura 1, a etapa 3 pode envolver o controlador de interface (150) convertendo locais de armazenamento arbitrários e pré-definidos especificados pelo bloco lógico em locais de armazenamento que o cliente B tem permissão para usar. Os locais de armazenamento arbitrários e pré-definidos podem ser fornecidos pelo circuito ligado por fios dos blocos lógicos (101a; 101b; 101c), ou serem armazenados na ROM dos blocos lógicos (101a; 101b; 101c).
[0087] Alternativamente, após a redefinição de um bloco lógico, o controlador de interface (150) pode fornecer ao bloco lógico os locais de armazenamento que o usuário do bloco lógico (conforme identificado pelo sistema de computador de gerenciamento (200)) tem permissão para usar e pode subsequentemente verificar o locais de armazenamento especificados pelo bloco lógico em suas solicitações de leitura e gravação. Em tais formas de realização, o circuito ligado por fios dos blocos lógicos (101a; 101b; 101c) ou instruções armazenadas em sua ROM podem fazer com que os blocos lógicos (101a; 101b; 101c) procurem locais de armazenamento do controlador de interface (150) através de suas interfaces físicas dedicadas (102a; 102b; 102c) ao inicializar ou redefinir.
[0088] De preferência, a blocos lógicos (101a; 101b; 101c) são ligado logicamente por fios para buscar instruções de inicialização do controlador de interface (150) através de suas respectivas interfaces físicas dedicadas (102a; 102b; 102c) imediatamente após a inicialização ou redefinição dos blocos lógicos (101a; 101b; 101c). Desta maneira, o controlador de interface (150) tem controle sobre as instruções de inicialização executadas pelos blocos lógicos (101a; 101b; 101c) quando o usuário atual de um bloco lógico é alterado. Como será explicado em mais detalhes abaixo com referência à Figura 3, isso pode ser usado para colocar um bloco lógico em um estado “bom conhecido” que resulta da execução de instruções de inicialização que são conhecidas por “limpas” e/ ou fornecer um bloco lógico com instruções de inicialização específicas do usuário, de acordo com o usuário do bloco lógico identificado pelo sistema de computador de gerenciamento (200). Independentemente, é importante que a sequência de inicialização dos blocos lógicos (101a; 101b; 101c) não depende de nenhum armazenamento persistente dedicado dentro de um bloco lógico, pois isso pode reduzir o nível de isolamento entre os usuários em múltiplos pontos no tempo.
[0089] Será entendido que o termo “ligado logicamente por fios”, conforme usado aqui, refere-se a várias implementações nas quais o comportamento de um bloco lógico na inicialização ou redefinição não pode ser alterado pelo software sendo executado no bloco lógico em um ponto anterior à inicialização ou redefinição. Em vez disso, o comportamento só pode ser alterado acessando as partes internas do dispositivo. Exemplos de funcionalidade ligada logicamente por fios inclui o uso de ASICs, PLDs e instruções de software armazenadas em uma ROM.
[0090] Note-se que a Figura 2 mostra o sistema de computador de gerenciamento (200) como parte de uma rede de gerenciamento (300) que está conectada ao controlador de interface (150) do sistema de computador IaaS (100). No entanto, será apreciado que este não é necessariamente o caso e que o sistema de computador de gerenciamento (200) poderia, por exemplo, fazer parte do sistema de computador IaaS (100), como descrito acima com referência à Figura 1.
[0091] A Figura 3 ilustra uma forma de realização na qual um bloco lógico (101) do sistema de computador IaaS (100) tem acesso ao armazenamento persistente dedicado (104) e possivelmente a outros periféricos (105). Deve ser apreciado que, embora a Figura 3 mostre um único bloco lógico (101), isso é apenas para facilitar de ilustração. Em uma das formas de realização descritas neste documento, o número de blocos lógicos pode ser um ou qualquer número maior que um.
[0092] Embora fornecer os blocos lógicos (101) do sistema de computador IaaS (100) com seu próprio armazenamento persistente (104) não seja essencial, pode ser desejável em algumas circunstâncias, porque permite que os clientes armazenem dados mais localmente durante sua sessão de uso do sistema de computador IaaS. Isso pode ser mais conveniente para os usuários e também pode melhorar o desempenho do sistema, pois as solicitações de leitura e gravação geralmente serão concluídas mais rapidamente se forem feitas para armazenamento persistente dedicado (104).
No entanto, fornecer um bloco lógico (101) com armazenamento persistente dedicado (104) tem o potencial para reduzir o isolamento entre os clientes em múltiplos pontos no tempo. Em particular, se o cliente A usar o bloco lógico (101) no tempo (T1) e gravar dados no armazenamento persistente (104) e, em seguida, o cliente B usar o bloco lógico (101) no tempo (T2), o cliente B poderá acessar ou alterar os dados do cliente A. Da mesma forma, os processos do cliente A poderiam persistir até o tempo (T2) e acessar os dados do Cliente B.
As formas de realização permitem o fornecimento de armazenamento persistente dedicado (104) para o bloco lógico (101), mantendo a separação de segurança entre os pontos no tempo.
[0093] Primeiramente, a sequência de inicialização do bloco lógico (101) não deve depender do armazenamento persistente (104) fornecido. Por exemplo, como descrito acima, o bloco lógico (101) pode ser ligado logicamente por fios para buscar suas instruções de inicialização através da interface física dedicada (102) na inicialização ou redefinição, removendo assim qualquer dependência de dados que possam ser armazenados no armazenamento persistente.
[0094] Em segundo lugar, devem ser tomadas medidas para impedir que o cliente B acesse os dados do cliente A. Enquanto isto pode ser alcançado através da exigência de que os clientes criptografem dados que são armazenados no armazenamento persistente (104), uma abordagem alternativa é garantir que os dados do cliente A não sejam recuperáveis após o uso do bloco lógico (101) ser atribuído ao cliente B.
Para conseguir isso, em uma implementação, quando o usuário do bloco lógico (101) deve ser alternado do cliente A para o cliente B:
i.
O sistema de computador de gerenciamento (200) instrui o controlador de interface (150) a usar a conexão de controle (103) para redefinir o bloco lógico (101). Isso faz com que o bloco lógico (101) solicite instruções de inicialização através da interface física dedicada (102);
ii.
O controlador de interface (150) fornece ao bloco lógico
(101) instruções de inicialização que, quando executadas, fazem com que o bloco lógico substitua o armazenamento persistente (104) para que os dados do cliente A não sejam mais recuperáveis.
Essas instruções de inicialização podem ser definidas pelo sistema do computador de gerenciamento (200) e o controlador de interface (150) pode fornecer as instruções conectando o bloco lógico (101) de uma maneira somente leitura ao armazenamento que contém as instruções de inicialização;
iii.
O sistema de computador de gerenciamento (200) instrui o controlador de interface (150) a usar a conexão de controle (103) para redefinir o bloco lógico (101). Isso faz com que o bloco lógico (101) solicite instruções de inicialização pela interface física dedicada (102). Alternativamente, em vez de instruir o controlador de interface (150) a redefinir novamente o bloco lógico
(101), as instruções fornecidas pelo controlador (150) na etapa (ii) acima podem incluir uma instrução final que, quando executada, faz com que o bloco lógico
(101) procure outro conjunto de instruções de inicialização.
Em outras palavras,
as instruções fornecidas pelo controlador (150) na etapa (ii) podem ser um
‘carregador de inicialização’ (bootloader), que faz com que o bloco lógico (101)
busque o resto da imagem de inicialização’, fornecida na etapa (iv) a seguir, depois de ter substituído o armazenamento persistente (104) para que os dados do cliente A não possam mais ser recuperados; e iv. O controlador de interface (150) fornece ao bloco lógico (101) instruções de inicialização para operação. Estas podem ser instruções de inicialização específicas do usuário que são armazenadas na instalação de armazenamento compartilhado (500), em locais de armazenamento que o cliente B tem permissão para usar. Alternativamente, elas podem ser instruções de inicialização ‘limpas’ definidas pelo sistema de computador de gerenciamento (200), de modo que o bloco lógico (101) seja inicializado para um estado “conhecido”.
[0095] Dessa maneira, as formas de realização permitem que um sistema de computador IaaS usado por diferentes clientes forneça armazenamento persistente dedicado e compartilhado aos usuários, mantendo um alto grau de isolamento entre os clientes em um determinado ponto no tempo e em múltiplos pontos no tempo.
[0096] A Figura 4 ilustra uma forma de realização na qual o sistema de computador IaaS (100) está conectado a uma rede (400), como a Internet, através de uma interface de rede do controlador de interface (150).
[0097] Além de atender a solicitações de leitura e gravação de dados nos recursos de armazenamento compartilhado, como descrito acima, o controlador de interface (150) pode ser responsável pelo roteamento das comunicações entre os blocos lógicos (101a; 101b; 101c) para qualquer outro computador que esteja fora do sistema de computador IaaS (100) através da rede (400).
[0098] Para conseguir isso, o sistema de computador IaaS pode ainda compreender outra interface física dedicada (não mostrada) entre cada bloco lógico (101a; 101b; 101c) e o controlador de interface. Os blocos lógicos (101a; 101b; 101c) podem então enviar e receber dados de rede (tais como pacotes de dados de rede) de e para o controlador de interface (150) através desta interface física dedicada adicional de acordo com um protocolo apropriado.
Alternativamente, os blocos lógicos (101a; 101b; 101c) podem enviar e receber dados da rede através da mesma interface através da qual emitirem solicitações de leitura e gravação para o armazenamento, ou seja, as interfaces físicas dedicadas (102a; 102b; 102c). Isso pode ser feito através da multiplexação de dois protocolos diferentes (um para armazenamento e outro para dados de rede) na mesma interface física (102a; 102b; 102c), por exemplo, usando multiplexação por divisão de tempo. Como alternativa, isso pode ser feito encapsulando um protocolo de armazenamento por meio de um protocolo de rede (por exemplo, usando iSCSI) ou direcionando um protocolo de armazenamento por meio de um protocolo de rede (por exemplo, usando SDIO).
[0099] O controlador de interface (150) enviará tipicamente dados de rede para e dos blocos lógicos (101a; 101b; 101c) usando um protocolo relativamente simples, a fim de reduzir o risco de o controlador ser comprometido por comunicações com os blocos lógicos (101a; 101b; 101c). No entanto, as comunicações entre a interface de rede do controlador de interface (150) e a rede (400) podem usar protocolos de nível superior, como HTTP.
[00100] O controlador de interface (150) também pode impor regras de acesso à rede nas comunicações em rede em que os blocos lógicos (101a; 101b; 101c) enviam e recebem através do controlador de interface de rede, incluindo as regras de acesso à rede específico do usuário com base na identidade do usuário atual dos blocos lógicos (como identificado pelo sistema de computador de gerenciamento (200)). Por exemplo, o cliente A pode solicitar que apenas as comunicações TCP destinadas à porta (22) e originárias de um endereço IP específico sejam encaminhadas para o bloco lógico, enquanto o cliente B pode solicitar que as comunicações TCP da porta (80) sejam encaminhadas para o bloco lógico, independentemente do endereço de origem. O controlador de interface (150) pode ser configurado com essas regras específicas do usuário, possivelmente pelo sistema de computador de gerenciamento (200), em um ponto anterior ao uso. Adicionalmente ou alternativamente, o sistema de computador de gerenciamento (200) pode fornecer ao controlador de interface (150) as regras específicas do usuário no momento em que informa o controlador de interface da identidade do usuário atual/ novo de um bloco lógico.
[00101] Note-se que, embora a Figura 4 não mostre armazenamento persistente dedicado ou outros periféricos conectados aos blocos lógicos (101a; 101b; 101c), isso é apenas para facilitar a ilustração. O armazenamento persistente dedicado (104) pode estar presente em qualquer uma das formas de realização descritas neste documento.
[00102] Note-se também que a Figura 4 ilustra que o armazenamento compartilhado (500), descrito acima com referência às Figuras 1 a 3, pode realmente assumir a forma de um ou mais dispositivos de armazenamento compartilhado (500a; 500b; 500c), e eles podem estar localizados em qualquer lugar em relação ao sistema, desde que possam ser acessados apenas pelos blocos lógicos (101a; 101b; 101c) via controlador de interface (150). Por exemplo, o armazenamento compartilhado pode incluir armazenamento anexado à rede (NAS) (500ª), armazenamento (500b) que faz parte da rede de gerenciamento (300) e armazenamento (500c) que faz parte do sistema de computador IaaS (100).
[00103] Descritos acima são várias formas de realização com múltiplas características opcionais. Deve-se considerar que, com exceção de quaisquer características mutuamente exclusivas, qualquer combinação de uma ou mais das características opcionais é possível.

Claims (41)

REIVINDICAÇÕES
1. SISTEMA DE COMPUTADOR (100) PARA USO EM UM SISTEMA DE SERVIDOR que fornece recursos de computação para múltiplos usuários diferentes, caracterizado pelo sistema de computador compreender: - um bloco lógico (101) compreendendo uma ou mais unidades de processamento que executam instruções, o bloco lógico configurado para emitir solicitações de leitura e gravação para armazenamento através de uma primeira interface (102); e - um controlador (150) configurado para: implementar um link de comunicações para armazenamento (500); implementar um link de comunicações (300) para um segundo sistema de computador (200) e receber informações identificando um usuário atual do bloco lógico, a partir do segundo sistema de computador; e receber as solicitações de leitura e gravação para armazenamento a partir do bloco lógico através da primeira interface e concluir as solicitações; em que a primeira interface (102) é uma interface física dedicada entre o bloco lógico e o controlador, pela qual o controlador pode determinar que as comunicações através da primeira interface são comunicações com o bloco lógico; e em que o controlador está configurado para concluir as solicitações de leitura e gravação para armazenamento usando um ou mais locais de armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar.
2. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 1, caracterizado pelo controlador ser configurado, em resposta ao recebimento de informações do segundo sistema de computador que identifica um usuário subsequente do bloco lógico, para concluir as solicitações do bloco lógico para leitura e gravação para armazenamento usando um ou mais locais de armazenamento pré-definidos do armazenamento que o usuário subsequente do bloco lógico tem permissão para uso.
3. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 2, caracterizado por compreender ainda uma conexão de controle entre o bloco lógico e o controlador, em que o controlador está configurado para usar a conexão de controle para inicializar ou redefinir o bloco lógico.
4. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 3, caracterizado pelo controlador estar configurado para inicializar ou redefinir o bloco lógico em resposta a receber instruções para inicializar ou redefinir o bloco lógico do segundo sistema de computador.
5. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 3 a 4, caracterizado pelo controlador estar configurado para inicializar ou redefinir o bloco lógico em resposta ao recebimento de uma instrução do segundo sistema de computador para configurar o bloco lógico para uso por um usuário subsequente do bloco lógico.
6. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 5, caracterizado pela instrução para configurar o bloco lógico para uso por um usuário subsequente compreender informação identificando o usuário subsequente do bloco lógico.
7. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 5 a 6, caracterizado pela instrução para configurar o bloco lógico para uso pelo usuário subsequente compreender uma instrução para o controlador parar de comunicar solicitações de leitura e de escrita para armazenamento a partir do bloco da lógica para armazenamento, antes de redefinir o bloco lógico.
8. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo bloco lógico ser configurado para especificar um ou mais locais de armazenamento pré-definidos quando ele emite solicitações de leitura e gravação para armazenamento através da primeira interface e em que o controlador está configurado para converter o local de armazenamento pré-definido especificado pelo bloco lógico para um local de armazenamento específico do usuário que o usuário do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar, e concluir as solicitações usando o local de armazenamento específico do usuário.
9. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 8, caracterizado pelo bloco lógico ser ligado logicamente por fios (hardwired) para especificar os um ou mais locais de armazenamento pré- definidos quando emite solicitações de leitura e gravação para armazenamento.
10. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo controlador ser configurado para fornecer o bloco lógico com locais de armazenamento específicas do usuário, em que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para uso, e em que o bloco lógico é configurado para especificar os locais de armazenamento específicos do usuário quando ele emite solicitações de leitura e gravação para armazenamento.
11. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 10, caracterizado pelo controlador ser ainda configurado para verificar se os locais de armazenamento especificados pelo bloco lógico correspondem aos locais de armazenamento específicos do usuário associados ao usuário atual do bloco lógico identificado pelo segundo sistema de computador.
12. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 10 a 11, caracterizado pelo bloco lógico estar configurado para solicitar os locais de armazenamento específicos do usuário em que tem permissão para uso a partir do controlador ao inicializar ou redefinir o bloco lógico.
13. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 12, caracterizado pelo bloco lógico ser ligado logicamente por fios para solicitar os locais de armazenamento específicos do usuário que que tem permissão para uso a partir do controlador ao inicializar ou redefinir o bloco lógico.
14. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 13, caracterizado pelo controlador compreender uma interface de rede para comunicar com uma rede, e em que o controlador é configurado para enviar os dados de rede recebidos da rede através da interface de rede para o bloco lógico através da primeira interface e enviar dados de rede recebidos do bloco lógico através da primeira interface para a rede através da interface de rede.
15. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 14, caracterizado pelo controlador ser configurado para impor as regras de acesso da rede específicos do usuário pré-definidas sobre os dados de rede enviados para e recebidos do bloco lógico através da primeira interface de acordo com o usuário atual do bloco lógico identificado pela segunda sistema de computador.
16. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 14 a 15, caracterizado pelo bloco lógico estar configurado para enviar e receber dados de rede através da primeira interface.
17. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 14 a 16, caracterizado pelo bloco lógico ser configurado para emitir as solicitações de leitura e de gravação para armazenamento através da primeira interface de acordo com um primeiro protocolo de comunicação, e em que o bloco lógico é configurado para enviar e receber dados de rede através da primeira interface de acordo com um segundo protocolo de comunicação.
18. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 17, caracterizado pelos primeiro e segundo protocolos de comunicação serem multiplexados através da primeira interface.
19. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 17, caracterizado pelo primeiro protocolo de comunicação ser direcionado através do segundo protocolo de comunicação, ou em que o segundo protocolo de comunicação é direcionado através do primeiro protocolo de comunicação.
20. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 14 a 15, caracterizado pelo bloco lógico ser configurado para enviar e receber dados da rede através de uma segunda interface entre o bloco lógico e o controlador.
21. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 14 a 20, caracterizado pelo armazenamento compreender armazenamento baseado em rede, e em que o controlador é configurado para completar as solicitações para leitura e gravação para armazenamento, utilizando o armazenamento baseado em rede através da interface de rede.
22. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 21, caracterizado pelo bloco lógico estar configurado para solicitar instruções de inicialização do controlador através da primeira interface ao inicializar ou redefinir o bloco lógico.
23. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 22, caracterizado pelo bloco lógico ser ligado logicamente por fios para solicitar instruções de inicialização do controlador após inicialização ou redefinição do bloco lógico.
24. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 9, 13 e 22, caracterizado pelo bloco lógico ser ligado logicamente por fios usando um ou mais de um ASIC, um PLD ou instruções armazenadas em Memória Somente Leitura.
25. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 22 a 24, caracterizado pelo controlador ser configurado, em resposta à recepção da solicitação de instruções de inicialização do bloco lógico, para concluir a solicitação usando um ou mais locais de armazenamento pré-definidos do armazenamento o qual o usuário atual do bloco lógico identificado pelo segundo sistema do computador tem permissão para uso, a fim de fornecer instruções de inicialização específicas do usuário ao bloco lógico.
26. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 22 a 24, caracterizado pelo controlador ser configurado, em resposta à recepção da solicitação de instruções de inicialização a partir do bloco lógico, para fornecer instruções de inicialização pré-definidas pelo segundo sistema de computador para o bloco lógico.
27. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 26, caracterizado pelo bloco lógico compreender ainda seu próprio armazenamento persistente.
28. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 27, caracterizado por compreender ainda uma conexão de controle entre o bloco lógico e o controlador, em que o controlador está configurado para usar a conexão de controle para inicializar ou redefinir o bloco lógico, e em que o controlador está configurado, em resposta ao recebimento de uma instrução do segundo sistema de computador para configurar o bloco lógico para uso por um usuário subsequente, para: - inicializar ou redefinir o bloco lógico para que o bloco lógico solicite instruções de inicialização do controlador; - fornecer instruções de inicialização pré-definidas fornecidas pelo segundo sistema de computador ao bloco lógico, as instruções de inicialização pré-definidas compreendendo instruções que fazem com que o bloco lógico substitua o armazenamento persistente do próprio bloco lógico, para que o conteúdo do armazenamento persistente do próprio bloco lógico não seja mais recuperável pelo bloco lógico; - redefinir o bloco lógico para que o bloco lógico solicite instruções de inicialização do controlador; e - concluir a solicitação de leitura ou gravação para armazenamento usando um ou mais locais de armazenamento pré-definidos do armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar, a fim de fornecer instruções de inicialização específicas do usuário para o bloco lógico.
29. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 27, caracterizado por compreender ainda uma conexão de controle entre o bloco lógico e o controlador, em que o controlador está configurado para usar a conexão de controle para inicializar ou redefinir o bloco lógico e em que o controlador está configurado, em resposta ao recebimento de uma instrução do segundo sistema de computador para configurar o bloco lógico para uso por um usuário subsequente, para: - inicializar ou redefinir o bloco lógico para que o bloco lógico solicite instruções de inicialização do controlador; - fornecer instruções de inicialização pré-definidas fornecidas pelo segundo sistema de computador ao bloco lógico, as instruções de inicialização pré-definidas compreendendo instruções que fazem com que o bloco lógico substitua o armazenamento persistente do próprio bloco lógico, para que o conteúdo do armazenamento persistente do próprio bloco lógico não seja mais recuperável pelo bloco lógico, e isso ainda faz com que o bloco lógico solicite mais um conjunto de instruções de inicialização do controlador; e - concluir a solicitação de leitura ou gravação para armazenamento usando um ou mais locais de armazenamento pré-definidos do armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar, a fim de fornecer instruções de inicialização específicas do usuário para o bloco lógico.
30. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 29, caracterizado pelo bloco lógico estar configurado para emitir solicitações de leitura e gravação para armazenamento através da primeira interface de acordo com um protocolo de armazenamento, como o eMMC.
31. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 30, caracterizado pelo controlador ser implementado em hardware, como o uso de um FGPA ou ASIC.
32. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 31, caracterizado pelo controlador ser implementado usando software formalmente verificável.
33. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 32, caracterizado pelo bloco lógico não ter interfaces para fora do sistema de computador, exceto através do controlador.
34. SISTEMA DE COMPUTADOR, de qualquer uma das reivindicações 1 a 33, caracterizado pelos locais de armazenamento serem intervalos de dados, tais como intervalos de bytes ou intervalos de blocos.
35. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 34, caracterizado pelo armazenamento compreender um ou mais de: - um ou mais meios de armazenamento acessíveis através de uma interface de rede do controlador; - um ou mais meios de armazenamento acessíveis através do link de comunicações ao sistema de computador de gerenciamento; e
- uma ou mais mídias de armazenamento dentro do sistema do computador.
36. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 35, caracterizado por compreender ainda um ou mais blocos lógicos adicionais, cada um compreendendo uma ou mais unidades de processamento que executam instruções, - em que cada um dos blocos lógicos adicionais está configurado para emitir solicitações de leitura e gravação para armazenamento através de uma interface física dedicada entre o respectivo bloco lógico e o controlador, pelo qual o controlador pode determinar com qual bloco lógico está se comunicando; - em que o controlador está ainda configurado, para os blocos lógicos adicionais, para: receber informações que identificam um usuário atual do respectivo bloco lógico adicional a partir do segundo sistema de computador; e receber solicitações para leitura e gravação para armazenamento a partir do respectivo bloco lógico adicional e concluir as respectivas solicitações usando os respectivos locais de armazenamento pré-definidos do armazenamento que o usuário atual do respectivo bloco lógico identificado pelo segundo sistema de computador tem permissão para usar.
37. SISTEMA DE COMPUTADOR, de acordo com qualquer uma das reivindicações 1 a 36, caracterizado por compreender ainda o segundo sistema de computador.
38. SISTEMA DE COMPUTADOR, de acordo com a reivindicação 36, caracterizado pelo segundo sistema de computador estar configurado para fornecer ao controlador os locais de armazenamento que cada um de múltiplos usuários diferentes do sistema de computador tem a permissão de usar.
39. CONTROLADOR, caracterizado por ser configurado para uso em qualquer uma das reivindicações 1 a 38.
40. MÉTODO PARA OPERAR UM SISTEMA DE COMPUTADOR, o sistema de computador compreendendo um controlador e um bloco lógico compreendendo uma ou mais unidades de processamento que executam instruções, caracterizado pelo método compreender: receber, pelo controlador, de um segundo sistema de computador, informações que identificam um usuário atual do bloco lógico; receber, pelo controlador, do bloco lógico, através de uma primeira interface, solicitações para leitura e gravação para armazenamento, a primeira interface sendo uma interface física dedicada entre o bloco lógico e o controlador, pelo qual o controlador pode determinar que as comunicações através da primeira interface são comunicações com o bloco lógico; e concluir as solicitações de leitura e gravação para armazenamento usando um ou mais locais de armazenamento do armazenamento que o usuário atual do bloco lógico identificado pelo segundo sistema de computador tem permissão para usar.
41. PROGRAMA DE COMPUTADOR, caracterizado por quando executado em um controlador, conforme definido na reivindicação 39, faz com que ele execute o método, conforme definido na reivindicação 40.
BR112020014044-9A 2018-01-12 2019-01-07 sistema de computador para uso em um sistema de servidor, controlador, método para operar um sistema de computador e programa de computador BR112020014044A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1800530.6 2018-01-12
GB1800530.6A GB2570143B (en) 2018-01-12 2018-01-12 Secure sharing of storage resources
PCT/EP2019/050262 WO2019137876A1 (en) 2018-01-12 2019-01-07 Secure sharing of storage resources

Publications (1)

Publication Number Publication Date
BR112020014044A2 true BR112020014044A2 (pt) 2020-12-01

Family

ID=61256242

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020014044-9A BR112020014044A2 (pt) 2018-01-12 2019-01-07 sistema de computador para uso em um sistema de servidor, controlador, método para operar um sistema de computador e programa de computador

Country Status (7)

Country Link
US (1) US11294581B2 (pt)
EP (1) EP3738024A1 (pt)
JP (1) JP7244527B2 (pt)
CN (1) CN111886573A (pt)
BR (1) BR112020014044A2 (pt)
GB (1) GB2570143B (pt)
WO (1) WO2019137876A1 (pt)

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5077737A (en) * 1989-08-18 1991-12-31 Micron Technology, Inc. Method and apparatus for storing digital data in off-specification dynamic random access memory devices
US6125435A (en) * 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
KR20070023514A (ko) * 2005-08-24 2007-02-28 히다치 글로벌 스토리지 테크놀로지스 네덜란드 비.브이. 데이터 기억 장치 및 그 사용자 데이터의 기록 제어 방법
JP4692251B2 (ja) 2005-12-01 2011-06-01 株式会社日立製作所 アクセスを提供するコンピュータシステム及びその管理方法
JP2008102774A (ja) * 2006-10-19 2008-05-01 Sony Corp データ記憶装置及びデータ制御方法
KR100800589B1 (ko) * 2006-12-20 2008-02-04 엘지전자 주식회사 정보 처리 장치 및 그 운용방법
JP4990828B2 (ja) * 2008-03-25 2012-08-01 株式会社日立製作所 ストレージ装置及びこれの制御方法
US8954685B2 (en) * 2008-06-23 2015-02-10 International Business Machines Corporation Virtualized SAS adapter with logic unit partitioning
JP5294742B2 (ja) 2008-07-14 2013-09-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 機器の間のアクセスを管理する装置及び方法
JP4572250B2 (ja) 2008-09-11 2010-11-04 株式会社日立製作所 計算機切り替え方法、計算機切り替えプログラム及び計算機システム
GB2470895A (en) * 2009-06-08 2010-12-15 Mark Klarzynski Virtualisation of block level storage by compartmentalising data into virtual block files to establish a virtual block file system
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
US20120102564A1 (en) * 2010-10-25 2012-04-26 Openpeak Inc. Creating distinct user spaces through mountable file systems
US8577885B2 (en) * 2010-12-09 2013-11-05 International Business Machines Corporation Partitioning management of system resources across multiple users
US20130074178A1 (en) * 2011-09-15 2013-03-21 Sandisk Technologies Inc. Preventing access of a host device to malicious data in a portable device
CN102522123B (zh) * 2011-12-06 2014-05-07 苏州国芯科技有限公司 利用数据产生器模块来提高存储设备读写测试效率的方法
US9178886B2 (en) * 2012-08-29 2015-11-03 Red Hat Israel, Ltd. Flattening permission trees in a virtualization environment
WO2014091535A1 (ja) 2012-12-10 2014-06-19 株式会社日立製作所 計算機システム及び記憶部の暗号化方法
JP2014123254A (ja) * 2012-12-21 2014-07-03 International Business Maschines Corporation メディア上のファイルをユーザ単位で分割管理する方法、プログラム、及びストレージ・システム
FR3021137B1 (fr) * 2014-05-19 2016-07-01 Keolabs Dispositif d'interface utilisateur
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
GB2545010B (en) 2015-12-03 2018-01-03 Garrison Tech Ltd Secure boot device
US9904485B2 (en) * 2016-03-31 2018-02-27 Intel Corporation Secure memory controller

Also Published As

Publication number Publication date
US20200379658A1 (en) 2020-12-03
GB2570143A (en) 2019-07-17
GB2570143B (en) 2020-04-08
JP2021510871A (ja) 2021-04-30
US11294581B2 (en) 2022-04-05
WO2019137876A1 (en) 2019-07-18
EP3738024A1 (en) 2020-11-18
GB201800530D0 (en) 2018-02-28
CN111886573A (zh) 2020-11-03
JP7244527B2 (ja) 2023-03-22

Similar Documents

Publication Publication Date Title
US10691839B2 (en) Method, apparatus, and system for manageability and secure routing and endpoint access
US9934022B2 (en) Secured firmware updates
US11469964B2 (en) Extension resource groups of provider network services
US9823934B2 (en) Firmware updates during limited time period
US9405908B2 (en) Systems, methods, and apparatus to virtualize TPM accesses
US8971538B1 (en) Firmware validation from an external channel
US11537421B1 (en) Virtual machine monitor providing secure cryptographic operations
US10177934B1 (en) Firmware updates inaccessible to guests
US9565207B1 (en) Firmware updates from an external channel
US11831687B2 (en) Systems and methods for authenticating platform trust in a network function virtualization environment
WO2020145944A1 (en) Securing node groups
WO2023196074A2 (en) Hosting dpu management operating system using dpu software stack
BR112020014044A2 (pt) sistema de computador para uso em um sistema de servidor, controlador, método para operar um sistema de computador e programa de computador
US10542001B1 (en) Content item instance access control
CN110115012B (zh) 一种秘密信息的分发方法和设备
CN113039757B (zh) 提供商网络服务扩展
Avaznejad Disk Encryption on Talos Operating System

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]