Configurar perfis do IAM para solicitações do EMRFS 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 perfis do IAM para solicitações do EMRFS para o Amazon S3

nota

O recurso de mapeamento de perfis do EMRFS descrito nesta página foi aprimorado com a introdução da solução Amazon S3 Access Grants no Amazon EMR 6.15.0. Para uma solução de controle de acesso escalável para os seus dados no Amazon S3, recomendamos usar o S3 Access Grants com o Amazon EMR.

Quando uma aplicação em execução em um cluster faz referência a dados usando o formato s3://mydata, o Amazon EMR usa o EMRFS para fazer a solicitação. Para interagir com o Amazon S3, o EMRFS assume as políticas de permissões 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 tiver um cluster com vários usuários que precisam de diferentes níveis de acesso aos dados no Amazon S3 por meio do EMRFS, você poderá definir uma configuração de segurança com perfis do IAM para o EMRFS. O EMRFS pode 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 perfil do IAM para o EMRFS pode ter permissões diferentes para acesso aos 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).

Há suporte para uso de perfis personalizados do IAM para o EMRFS nas versões 5.10.0 e posteriores do Amazon EMR. Se usar uma versão anterior ou se tiver requisitos além dos fornecidos pelos perfis do IAM para EMRFS, você poderá criar um provedor de credenciais personalizadas. Para obter mais informações, consulte Authorizing access to EMRFS data in Amazon S3.

Ao usar uma configuração de segurança para especificar perfis do IAM para EMRFS, você configura mapeamentos de perfil. Cada mapeamento de perfil especifica um perfil do IAM que corresponde a identificadores. Esses identificadores determinam a base para o acesso ao Amazon S3 por meio do EMRFS. Os identificadores podem ser usuários, grupos ou prefixos do Amazon S3 que indicam um local de dados. Quando o EMRFS faz uma solicitação ao Amazon S3, se a solicitação corresponder à base de acesso, o EMRFS faz com que as instâncias de EC2 cluster assumam a função do IAM correspondente para a solicitação. As permissões do IAM anexadas a essa função se aplicam em vez das permissões do IAM 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. Os usuários e os grupos são passados para o EMRFS no contexto do aplicativo que o usa (por exemplo, a personificação de usuário do YARN). O prefixo do Amazon S3 pode ser um especificador do bucket de qualquer profundidade (por exemplo s3://amzn-s3-demo-bucket ou s3://amzn-s3-demo-bucket/myproject/mydata). Você pode especificar vários identificadores em um único mapeamento de função, mas todos devem ser do mesmo tipo.

Importante

Os perfis do IAM para o EMRFS fornecem isolamento no nível da aplicação entre os usuários da aplicação. 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 uma aplicação de cluster faz uma solicitação ao Amazon S3 por meio do EMRFS, o EMRFS avalia os mapeamentos do perfil de cima para baixo na ordem em que aparecem na configuração de segurança. Se uma solicitação feita por meio do EMRFS não corresponder a nenhum identificador, o EMRFS volta a usar a função de serviço para instâncias de cluster. EC2 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 funções do IAM para EMRFS, planeje e crie perfis e as políticas de permissão a serem anexadas aos perfis. Para obter mais informações, consulte Como funcionam as funções das EC2 instâncias? no Guia do usuário do IAM. Ao criar políticas de permissões, recomendamos que você comece com a política gerenciada anexada à função padrão do Amazon EMR e EC2, 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 usada pelo EMRFS deve ter uma política de confiança que permita que a função Amazon EMR do cluster a assuma. EC2 Da mesma forma, a função do Amazon EMR do cluster EC2 deve ter uma política de confiança que permita que as funções do EMRFS a assumam.

O exemplo de política de confiança a seguir está anexado a funções para o EMRFS. A declaração permite que a função padrão do Amazon EMR assuma EC2 a função. Por exemplo, se você tiver duas funções do EMRFS fictícias EMRFSRole_First e EMRFSRole_Second, esta declaração de política será adicionada às políticas de confiança para 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 a seguir de declaração de política de confiança é adicionado à EMR_EC2_DefaultRole para permitir que as duas funções do EMRFS 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" } ] }
Atualizar a política de confiança de um perfil do IAM

Abra o console do IAM 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 o perfil permitir acesso a um local no Amazon S3 que é criptografado usando uma AWS KMS key, especifique o perfil como um usuário de chaves. Isso concede permissões ao perfil para usar a chave do KMS. Para obter mais informações, consulte Políticas de chaves no AWS KMS no Guia do desenvolvedor do AWS Key Management Service .

Definir uma configuração de segurança com perfis do IAM para EMRFS

Importante

Se nenhuma das funções do IAM para o EMRFS que você especificar se aplicar, o EMRFS retornará à função do Amazon EMR para. EC2 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 Personalização de perfis do IAM com o Amazon EMR e Especificar perfis personalizados do IAM ao criar um cluster.

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

    1. No console do Amazon EMR, 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 Usa perfis do IAM para solicitações do EMRFS ao Amazon S3.

    4. Selecione um perfil do IAM a ser aplicado e, em Base para acesso, selecione um tipo de identificador (Usuários, Grupos ou Prefixos do 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 Crie uma configuração de segurança com o console do Amazon EMR ou com o AWS CLI.

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

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

    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 estrutura JSON no arquivo MyEmrfsSecConfig.json, que é salvo no mesmo diretório onde 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 Crie uma configuração de segurança com o console do Amazon EMR ou com o AWS CLI.

    Veja a seguir um exemplo de trecho JSON para especificar perfis do IAM personalizados para o 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_demo_s3_buckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://amzn-s3-demo-bucket1/","s3://amzn-s3-demo-bucket2/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
    Parameter 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 o mapeamento de perfil for avaliado como true para uma chamada do EMRFS para dados no Amazon S3, nenhum outro mapeamento de perfil será avaliado, e o EMRFS usará o perfil do IAM especificado para a solicitação. O mapeamento de perfil tem os seguintes parâmetros obrigatórios:

       "Role":

    Especifica o identificador ARN de um perfil do IAM no formato arn:aws:iam::account-id:role/role-name. Essa é o perfil do IAM que o Amazon EMR assume se a solicitação do EMRFS para o Amazon S3 corresponder a qualquer um dos Identifiers especificados.

       "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 solicitação do EMRFS se origina com os usuários especificados, o perfil do IAM é assumido.

    • "Prefix" especifica que o identificador é um local do Amazon S3. O perfil do IAM é assumido para chamadas para os locais com os prefixos especificados. Por exemplo, o prefixo s3://amzn-s3-demo-bucket/ corresponde a s3://amzn-s3-demo-bucket/mydir e s3://amzn-s3-demo-bucket/yetanotherdir.

    • "Group" especifica que os identificadores são um ou mais grupos do Hadoop. O perfil do IAM será assumido se a solicitação for originada de um usuário dos 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 função personalizada do Amazon EMR para EC2,EC2_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.6.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration