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

Configurar perfis do IAM para solicitações do EMRFS para o Amazon S3

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 perfil de instância do Amazon EC2. O mesmo perfil de instância do Amazon EC2 é usado independentemente do usuário ou do grupo que está executando a aplicação ou do local 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 um perfil de serviço diferente para instâncias de cluster do EC2 com base no usuário ou no 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 o uso de perfis de serviço para instâncias de cluster do EC2. consulte Perfil de serviço para instâncias do EC2 do cluster (perfil de instância do EC2).

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 para o acesso, o EMRFS fará com que as instâncias do EC2 do cluster assumam o perfil do IAM correspondente para a solicitação. As permissões do IAM anexadas ao perfil se aplicam no lugar das permissões do IAM anexadas ao perfil de serviço para instâncias do EC2 do 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://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

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 retornará ao uso do perfil de serviço para instâncias do EC2 do 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 Perfil de serviço para instâncias do EC2 do cluster (perfil de instância do EC2).

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 os perfis para as instâncias do Amazon EC2 funcionam? no Guia do usuário do IAM. Ao criar políticas de permissão, recomendamos começar com a política gerenciada anexada ao perfil do Amazon EMR padrão para o EC2 e depois editar 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 Perfil de serviço para instâncias do EC2 do cluster (perfil de instância do EC2).

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

Cada perfil que o EMRFS usa deve ter uma política de confiança que permite que o perfil do Amazon EMR para o EC2 do cluster o assuma. Da mesma forma, o perfil do Amazon EMR para o EC2 do cluster deve ter uma política de confiança que permita que os perfis do EMRFS o assumam.

O exemplo de política de confiança a seguir está anexado a funções para o EMRFS. A instrução permite que o perfil padrão do Amazon EMR para o EC2 assuma o perfil. 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 perfis do IAM para EMRFS que você especificar for aplicável, o EMRFS retornará para o perfil 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 obter mais informações, consulte Personalizar perfis do IAM 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 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.

Especificar perfis do IAM para solicitações do EMRFS para o Amazon S3 usando a 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 Criar uma configuração de segurança.

    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_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 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://mybucket/ corresponde a s3://mybucket/mydir e s3://mybucket/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 um perfil do Amazon EMR personalizado para o EC2, EC2_Role_EMR_Restrict_S3, que é especificada usando o argumento InstanceProfile do parâmetro --ec2-attributes.

    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-5.36.1 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration