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á.
Use scripts de sessão em frotas com várias sessões
Ao usar scripts de sessão em frotas com várias sessões, há requisitos e considerações adicionais para garantir desempenho e segurança ideais.
Requisitos
Em uma frota de sessão única, em uma determinada instância, é garantido que os SessionTerminationganchos SessionStarte funcionem apenas uma vez. Isso ocorre porque há um mapeamento 1:1 das sessões para as instâncias. Ao usar frotas de várias sessões, há um mapeamento N:M de sessões para instâncias, em que cada sessão é executada por conta própria e gancho. SessionStartSessionTermination Isso significa que os SessionTerminationganchos SessionStarte podem ser executados várias vezes em uma determinada instância e em muitas ordens diferentes. Para obter a melhor experiência, o seguinte deve ser válido para seus scripts de sessão quando usados em frotas de várias sessões:
-
Os scripts são idempotentes.
Quando uma ação já foi executada, os scripts devem lidar com mais de uma execução na mesma instância com um tratamento adequado.
-
Os scripts são independentes.
Como os scripts são executados por sessão, se uma sessão estiver sendo executada SessionTerminationenquanto outra estiver em execução SessionStart, eles não devem interferir entre si ou com a experiência de outras sessões.
-
Os scripts são performantes.
Em instâncias de várias sessões, várias sessões podem ser provisionadas simultaneamente. Isso significa que pode haver várias execuções simultâneas dos scripts da sessão. Os scripts devem ser eficientes, não consumir recursos excessivos e não afetar a experiência de outros usuários na instância ou a estabilidade das sessões.
Muitos desses requisitos podem ser atendidos mantendo a lógica do script de sessão focada na sessão específica do usuário para a qual o script está sendo executado.
Considerações sobre segurança
AppStream As imagens 2.0 não devem ser configuradas para permitir a permissão de gravação em arquivos de script de sessão por nenhum usuário. Isso introduz um vetor de ataque crítico para usuários mal-intencionados, onde eles podem modificar arquivos de script. Esses arquivos poderiam então ser SYSTEM executados como outro usuário, dependendo da sua configuração.
Importante
É sua responsabilidade garantir que suas imagens AppStream 2.0 estejam configuradas com segurança. Isso é especialmente importante para instâncias de várias sessões, nas quais vários usuários estão usando a mesma instância. Se as imagens não forem configuradas com segurança, há um risco de segurança para todos os usuários dessa instância.
O seguinte deve ser válido para seus arquivos de imagens e scripts de sessão:
-
Os usuários não têm permissão para modificar arquivos de script de sessão.
-
Os usuários não têm permissão para modificar o script de sessão config.json. O comportamento padrão na imagem restringe o acesso aos administradores.
Os executáveis dos scripts de sessão devem ser armazenados em um local seguro, onde estejam protegidos contra modificações em tempo de execução.
Se o serviço detectar que um script de sessão executável foi modificado, ele falhará em qualquer execução subsequente desse hook nessa instância, fará o upload dos arquivos de log para o Amazon S3 (se o registro no Amazon S3 estiver ativado) e você verá a seguinte mensagem:
O script da sessão não foi executado porque o executável foi modificado após o provisionamento da instância. A execução foi ignorada por motivos de segurança.
Se seu caso de uso exigir a modificação do executável do script de sessão em tempo de execução (por exemplo, se você apontar para um EXE arquivo modificado por um processo de atualização automática em tempo de execução), isso falhará nas verificações acima. Nesse caso, use um script para redirecionar a execução para o executável modificado. Deixe o script inalterado em tempo de execução quando o serviço realizar verificações de segurança.
Se seus arquivos de script de sessão forem excessivamente grandes (mais de 100 MB), isso pode causar atrasos no provisionamento da instância e da sessão, e as verificações de segurança levarão mais tempo (dependendo do tipo de instância e dos recursos disponíveis). Se seu caso de uso exigir scripts de sessão grandes, considere usar scripts menores para redirecionar a execução. Isso melhorará as experiências de provisionamento de instâncias e sessões.
Observe que o serviço está verificando apenas o executável definido nos scripts de sessão config.json, e esse é apenas um mecanismo alternativo/melhor esforço. É sua responsabilidade garantir que todos os caminhos de código nos executáveis dos scripts de sessão sejam seguros e não possam ser modificados pelos usuários finais.