Configurar IAM funções para EMRFS solicitações para o Amazon S3 - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar IAM funções para EMRFS solicitações para o Amazon S3

nota

A capacidade de mapeamento de EMRFS funções descrita nesta página foi aprimorada com a introdução do Amazon S3 Access Grants no Amazon EMR 6.15.0. Para uma solução de controle de acesso escalável para seus dados no Amazon S3, recomendamos que você use o S3 Access Grants com a Amazon. EMR

Quando um aplicativo executado em um cluster faz referência a dados usando o s3://mydata formato, a Amazon EMR usa EMRFS para fazer a solicitação. Para interagir com o Amazon S3, EMRFS assume as políticas de permissões que estão anexadas ao seu perfil de instância da Amazon EC2. O mesmo perfil de EC2 instância da Amazon é usado independentemente do usuário ou grupo que executa o aplicativo ou da localização dos dados no Amazon S3.

Se você tiver um cluster com vários usuários que precisam de diferentes níveis de acesso aos dados no Amazon S3EMRFS, você pode definir uma configuração de segurança com IAM funções para. EMRFS EMRFSpode assumir uma função de serviço diferente para EC2 instâncias de cluster com base no usuário ou grupo que faz a solicitação ou com base na localização dos dados no Amazon S3. Cada IAM função do EMRFS pode ter permissões diferentes para acesso a dados no Amazon S3. Para obter mais informações sobre a função de serviço para EC2 instâncias de cluster, consulteFunção de serviço para EC2 instâncias de cluster (perfil de EC2 instância).

O uso de IAM funções personalizadas para EMRFS é suportado nas EMR versões 5.10.0 e posteriores da Amazon. Se você usa uma versão anterior ou tem requisitos além das IAM funções a serem EMRFS fornecidas, você pode criar um provedor de credenciais personalizado. Para obter mais informações, consulte Autorização do acesso aos EMRFS dados no Amazon S3.

Ao usar uma configuração de segurança para especificar IAM funçõesEMRFS, você configura mapeamentos de funções. Cada mapeamento de função especifica uma IAM função que corresponde aos identificadores. Esses identificadores determinam a base para o acesso ao Amazon EMRFS S3 por meio de. Os identificadores podem ser usuários, grupos ou prefixos do Amazon S3 que indicam um local de dados. Quando EMRFS faz uma solicitação ao Amazon S3, se a solicitação corresponder à base de acesso, EMRFS as EC2 instâncias de cluster assumem a IAM função correspondente para a solicitação. As IAM permissões associadas a essa função se aplicam em vez das IAM permissões anexadas à função de serviço para EC2 instâncias de cluster.

Os usuários e os grupos em um mapeamento de função são usuários e grupos do Hadoop definidos no cluster. Usuários e grupos são transmitidos EMRFS no contexto do aplicativo que os usa (por exemplo, representação de YARN usuário). O prefixo do Amazon S3 pode ser um especificador do bucket de qualquer profundidade (por exemplo s3://mybucket ou s3://mybucket/myproject/mydata). Você pode especificar vários identificadores em um único mapeamento de função, mas todos devem ser do mesmo tipo.

Importante

IAMfunções para EMRFS fornecer isolamento em nível de aplicativo entre os usuários do aplicativo. Isso não fornece isolamento no nível do host entre os usuários no host. Qualquer usuário com acesso ao cluster pode ignorar o isolamento para assumir qualquer uma das funções.

Quando um aplicativo de cluster faz uma solicitação ao Amazon S3 por meio deleEMRFS, EMRFS avalia os mapeamentos de funções na ordem de cima para baixo em que aparecem na configuração de segurança. Se uma solicitação feita por meio de EMRFS nenhum identificador corresponder a nenhum identificador, EMRFS volte a usar a função de serviço para EC2 instâncias de cluster. Por esse motivo, recomendamos que as políticas anexadas ao perfil limitem as permissões ao Amazon S3. Para obter mais informações, consulte Função de serviço para EC2 instâncias de cluster (perfil de EC2 instância).

Configurar funções do

Antes de definir uma configuração de segurança com IAM funções paraEMRFS, planeje e crie as funções e as políticas de permissão a serem anexadas às funções. Para obter mais informações, consulte Como funcionam as funções das EC2 instâncias? no Guia do IAM usuário. Ao criar políticas de permissões, recomendamos que você comece com a política gerenciada anexada à EMR função padrão da Amazon eEC2, em seguida, edite essa política de acordo com seus requisitos. O nome de perfil padrão é EMR_EC2_DefaultRole, e a política gerenciada padrão a ser editada é AmazonElasticMapReduceforEC2Role. Para obter mais informações, consulte Função de serviço para EC2 instâncias de cluster (perfil de EC2 instância).

Atualizar políticas de confiança para permissões para assumir perfil

Cada função EMRFS usada deve ter uma política de confiança que permita que a EMR função Amazon do cluster EC2 a assuma. Da mesma forma, a EMR função do cluster na Amazon EC2 deve ter uma política de confiança que permita que as EMRFS funções a assumam.

O exemplo de política de confiança a seguir está anexado às funções deEMRFS. A declaração permite que a EMR função padrão da Amazon assuma EC2 a função. Por exemplo, se você tiver duas EMRFS funções fictícias EMRFSRole_First e EMRFSRole_Second essa declaração de política for adicionada às políticas de confiança de cada uma delas.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::AWSAcctID:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" } ] }

Além disso, o exemplo de declaração de política de confiança a seguir é adicionado ao EMR_EC2_DefaultRole para permitir que as duas EMRFS funções fictícias a assumam.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": ["arn:aws:iam::AWSAcctID:role/EMRFSRole_First", "arn:aws:iam::AWSAcctID:role/EMRFSRole_Second"] }, "Action":"sts:AssumeRole" } ] }
Para atualizar a política de confiança de uma IAM função

Abra o IAM console em https://console.aws.amazon.com/iam/.

  1. Selecione Roles (funções), insira o nome da função em Search (Pesquisar) e, em seguida, selecione o Role name (Nome da função).

  2. Escolha Trust relationships (Relacionamentos de confiança), Edit trust relationship (Editar relacionamento de confiança).

  3. Adicione uma instrução de confiança de acordo com o Documento da política, de acordo com as diretrizes acima e selecione Atualizar política de confiança.

Especificar um perfil como um usuário da chave

Se uma função permitir o acesso a um local no Amazon S3 que é criptografado usando um AWS KMS key, certifique-se de que a função seja especificada como usuário principal. Isso dá permissão à função para usar a KMS chave. Para obter mais informações, consulte Políticas principais em AWS KMS no AWS Key Management Service Guia do desenvolvedor.

Defina uma configuração de segurança com IAM funções para EMRFS

Importante

Se nenhuma das IAM funções especificadas se aplicar, EMRFS volte para a EMR função da Amazon paraEC2. EMRFS Considere a possibilidade de personalizar esse perfil para restringir permissões para o Amazon S3 conforme apropriado para suas aplicação e especificar esse perfil personalizado em vez de EMR_EC2_DefaultRole ao criar um cluster. Para ter mais informações, consulte Personalize IAM funções e Especifique IAM funções personalizadas ao criar um cluster.

Para especificar IAM funções para EMRFS solicitações ao Amazon S3 usando o console
  1. Crie uma configuração de segurança que especifica os mapeamentos de função:

    1. No EMR console da Amazon, selecione Configurações de segurança, Criar.

    2. Digite um nome em Name (Nome) para a configuração de segurança. Esse nome é usado para especificar a configuração de segurança ao criar um cluster.

    3. Escolha Usar IAM funções para EMRFS solicitações ao Amazon S3.

    4. Selecione uma IAMfunção a ser aplicada e, em Base para acesso, selecione um tipo de identificador (usuários, grupos ou prefixos S3) na lista e insira os identificadores correspondentes. Se você usar vários identificadores, separe-os com uma vírgula e sem espaço. Para obter mais informações sobre cada tipo de identificador, consulte a JSON configuration reference abaixo.

    5. Escolha Add role (Adicionar função) para configurar mapeamentos de funções adicionais, conforme descrito na etapa anterior.

    6. Configure outras opções de configuração de segurança conforme apropriado e escolha Create (Criar). Para obter mais informações, consulte Criar uma configuração de segurança.

  2. Especifique a configuração de segurança criada acima ao criar um cluster. Para obter mais informações, consulte Especificar uma configuração de segurança para um cluster.

Para especificar IAM funções para EMRFS solicitações ao Amazon S3 usando o AWS CLI
  1. Use o aws emr create-security-configuration comando, especificando um nome para a configuração de segurança e os detalhes da configuração de segurança no JSON formato.

    O comando de exemplo mostrado a seguir cria uma configuração de segurança com o nome EMRFS_Roles_Security_Configuration. Ele é baseado em uma JSON estrutura no arquivoMyEmrfsSecConfig.json, que é salva no mesmo diretório em que o comando é executado.

    aws emr create-security-configuration --name EMRFS_Roles_Security_Configuration --security-configuration file://MyEmrFsSecConfig.json.

    Use as diretrizes a seguir para a estrutura do arquivo MyEmrFsSecConfig.json. Você pode especificar essa estrutura juntamente com estruturas de outras opções de configuração de segurança. Para obter mais informações, consulte Criar uma configuração de segurança.

    Veja a seguir um exemplo de JSON trecho para especificar IAM funções personalizadas EMRFS em uma configuração de segurança. Ele demonstra mapeamentos de perfil para os três tipos diferentes de identificadores, seguidos por uma referência de parâmetro.

    { "AuthorizationConfiguration": { "EmrFsConfiguration": { "RoleMappings": [{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1", "IdentifierType": "User", "Identifiers": [ "user1" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_MyBuckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://MyBucket/","s3://MyOtherBucket/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
    Parâmetro Descrição

    "AuthorizationConfiguration":

    Obrigatório.

    "EmrFsConfiguration":

    Obrigatório. Contém mapeamentos de perfil.

      "RoleMappings":

    Obrigatório. Contém uma ou mais definições de mapeamento de perfil. Os mapeamentos de perfil são avaliados na ordem em que aparecem, de cima para baixo. Se um mapeamento de função for avaliado como verdadeiro para uma EMRFS chamada de dados no Amazon S3, nenhum outro mapeamento de função será avaliado EMRFS e usará a função IAM especificada para a solicitação. O mapeamento de perfil tem os seguintes parâmetros obrigatórios:

       "Role":

    Especifica o ARN identificador de uma IAM função no formatoarn:aws:iam::account-id:role/role-name. Essa é a IAM função que a Amazon EMR assume se a EMRFS solicitação para o Amazon S3 corresponder a qualquer uma das Identifiers especificadas.

       "IdentifierType":

    Pode ser um dos seguintes:

    • "User" especifica que os identificadores são um ou mais usuários do Hadoop, que podem ser usuários de contas Linux ou entidades principais do Kerberos. Quando a EMRFS solicitação se origina com o usuário ou usuários especificados, a IAM função é assumida.

    • "Prefix" especifica que o identificador é um local do Amazon S3. A IAM função é assumida para chamadas para o local ou locais com os prefixos especificados. Por exemplo, o prefixo s3://mybucket/ corresponde a s3://mybucket/mydir e s3://mybucket/yetanotherdir.

    • "Group" especifica que os identificadores são um ou mais grupos do Hadoop. A IAM função é assumida se a solicitação for originada de um usuário no grupo ou grupos especificados.

       "Identifiers":

    Especifica um ou mais identificadores do tipo de identificador adequado. Separe múltiplos identificadores por vírgulas sem espaços.

  2. Use o comando aws emr create-cluster para criar um cluster e especifique a configuração de segurança que você criou na etapa anterior.

    O exemplo a seguir cria um cluster com aplicativos Hadoop de núcleo padrão instalados. O cluster usa a configuração de segurança criada acima como EMRFS_Roles_Security_Configuration e também usa uma EMR função personalizada da Amazon para EC2EC2_Role_EMR_Restrict_S3,, que é especificada usando o InstanceProfile argumento do --ec2-attributes parâmetro.

    nota

    Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

    aws emr create-cluster --name MyEmrFsS3RolesCluster \ --release-label emr-7.2.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration