Dela via


Säkerhetsram: Auktorisering | Mitigations

Produkt/tjänst Artikel
Gränsen för datorförtroende
Webbprogram
Databas
IoT Cloud Gateway
Azure Event Hubs
Azure Document DB
Azure Trust Boundary
Förtroendegräns för Service Fabric
Dynamics CRM
Dynamics CRM-portalen
Azure Storage
Mobil klient
WCF
Webb-API
IoT-enhet
IoT-fältgateway

Se till att rätt ACL:er har konfigurerats för att begränsa obehörig åtkomst till data på enheten

Title Details
Komponent Gränsen för datorförtroende
SDL-fas Distribution
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg Se till att rätt ACL:er har konfigurerats för att begränsa obehörig åtkomst till data på enheten

Kontrollera att känsligt användarspecifikt programinnehåll lagras i användarprofilkatalogen

Title Details
Komponent Gränsen för datorförtroende
SDL-fas Distribution
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg Kontrollera att känsligt användarspecifikt programinnehåll lagras i användarprofilkatalogen. Detta för att förhindra att flera användare av datorn kommer åt varandras data.

Se till att de distribuerade programmen körs med minsta möjliga behörighet

Title Details
Komponent Gränsen för datorförtroende
SDL-fas Distribution
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg Kontrollera att det distribuerade programmet körs med minsta möjliga behörighet.

Framtvinga sekventiell stegordning vid bearbetning av affärslogikflöden

Title Details
Komponent Webbprogram
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg För att verifiera att den här fasen kördes igenom av en äkta användare vill du framtvinga att programmet endast bearbetar affärslogikflöden i sekventiell stegordning, där alla steg bearbetas i realistisk mänsklig tid och inte bearbetas i fel ordning, överhoppade steg, bearbetade steg från en annan användare eller för snabbt skickade transaktioner.

Implementera hastighetsbegränsningsmekanism för att förhindra uppräkning

Title Details
Komponent Webbprogram
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg Kontrollera att känsliga identifierare är slumpmässiga. Implementera CAPTCHA-kontroll på anonyma sidor. Se till att fel och undantag inte ska avslöja specifika data

Se till att rätt auktorisering är på plats och att principen om minsta behörighet följs

Title Details
Komponent Webbprogram
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg

Principen innebär att endast ge ett användarkonto de privilegier som är nödvändiga för att användarna ska fungera. En säkerhetskopieringsanvändare behöver till exempel inte installera programvara. Därför har säkerhetskopieringsanvändaren endast behörighet att köra säkerhetskopierings- och säkerhetskopieringsrelaterade program. Andra behörigheter, till exempel installation av ny programvara, blockeras. Principen gäller även för en privat datoranvändare som vanligtvis arbetar på ett normalt användarkonto och öppnar ett privilegierat lösenordsskyddat konto (dvs. en superanvändare) endast när situationen absolut kräver det.

Den här principen kan också tillämpas på dina webbprogram. I stället för att enbart beroende på rollbaserade autentiseringsmetoder som använder sessioner, vill vi i stället tilldela behörigheter till användare med hjälp av ett databasbaserat autentiseringssystem. Vi använder fortfarande sessioner för att identifiera om användaren var korrekt inloggad, först nu i stället för att tilldela användaren en specifik roll som vi tilldelar honom behörighet att kontrollera vilka åtgärder han har behörighet att utföra i systemet. En stor del av den här metoden är också att när en användare måste tilldelas färre privilegier tillämpas ändringarna i farten eftersom tilldelningen inte är beroende av den session som annars måste upphöra först.

Beslut om affärslogik och resursåtkomstauktorisering bör inte baseras på parametrar för inkommande begäranden

Title Details
Komponent Webbprogram
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg När du kontrollerar om en användare är begränsad till att granska vissa data bör åtkomstbegränsningarna bearbetas på serversidan. UserID ska lagras i en sessionsvariabel vid inloggning och ska användas för att hämta användardata från databasen

Exempel

SELECT data 
FROM personaldata 
WHERE userID=:id < - session var 

Nu kan en möjlig angripare inte manipulera och ändra programåtgärden eftersom identifieraren för att hämta data hanteras på serversidan.

Se till att innehåll och resurser inte kan räknas upp eller nås via kraftfull surfning

Title Details
Komponent Webbprogram
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg

Känsliga statiska filer och konfigurationsfiler bör inte lagras i webbroten. För att innehåll inte ska vara offentligt bör antingen lämpliga åtkomstkontroller tillämpas eller tas bort av själva innehållet.

Dessutom kombineras kraftfull surfning vanligtvis med Brute Force-tekniker för att samla in information genom att försöka komma åt så många URL:er som möjligt för att räkna upp kataloger och filer på en server. Angripare kan söka efter alla varianter av vanliga filer. En sökning efter lösenordsfiler skulle till exempel omfatta filer som psswd.txt, password.htm, password.dat och andra varianter.

För att minimera detta bör funktioner för identifiering av råstyrkeförsök inkluderas.

Se till att konton med minst privilegier används för att ansluta till databasservern

Title Details
Komponent Databas
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser SQL-behörighetshierarki, SQL-skyddsbara filer
Steg Konton med minst privilegier bör användas för att ansluta till databasen. Programinloggning bör begränsas i databasen och bör endast köra valda lagrade procedurer. Programmets inloggning ska inte ha någon direkt tabellåtkomst.

Implementera säkerhet på radnivå RLS för att förhindra klientorganisationer från att komma åt varandras data

Title Details
Komponent Databas
SDL-fas Skapa
Tillämpliga tekniker Sql Azure, OnPrem
Attribut SQL-version – V12, SQL-version – MsSQL2016
Referenser SQL Server-säkerhet på radnivå (RLS)
Steg

Säkerhet på radnivå ger kunder möjlighet att styra åtkomsten till rader i en databastabell baserat på egenskaperna för användaren som kör en fråga (t.ex. grupmedlemskap eller körningskontext).

Säkerhet på radnivå (RLS) förenklar utformningen och kodningen av säkerhet i ditt program. RLS låter dig implementera begränsningar för dataåtkomst för raden. Därmed får medarbetare endast tillgång till de datarader som är relevanta för deras avdelning, eller kunder får endast dataåtkomst till data som berör deras företag.

Logiken för åtkomstbegränsning finns på databasnivån i stället för från data på en annan programnivå. Databassystemet tillämpar åtkomstbegränsningarna varje gång dataåtkomst görs från valfri nivå. Detta gör säkerhetssystemet mer tillförlitligt och robust genom att minska säkerhetssystemets yta.

Observera att RLS som en out-of-the-box-databasfunktion endast gäller för SQL Server från och med 2016, Azure SQL Database och SQL Managed Instance. Om den färdiga RLS-funktionen inte implementeras bör du se till att dataåtkomsten begränsas med hjälp av vyer och procedurer

Sysadmin-rollen ska bara ha giltiga nödvändiga användare

Title Details
Komponent Databas
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser SQL-behörighetshierarki, SQL-skyddsbara filer
Steg Medlemmar i sysAdmin-rollen för fast server bör vara mycket begränsade och innehålla aldrig konton som används av program. Granska listan över användare i rollen och ta bort eventuella onödiga konton

Anslut till Cloud Gateway med hjälp av token med minst privilegier

Title Details
Komponent IoT Cloud Gateway
SDL-fas Distribution
Tillämpliga tekniker Allmän
Attribut Gatewayval – Azure IoT Hub
Referenser Åtkomstkontroll för Iot Hub
Steg Ge minst behörighet till olika komponenter som ansluter till Cloud Gateway (IoT Hub). Typiskt exempel är – Enhetshanterings-/etableringskomponenten använder registryread/write, Event Processor (ASA) använder Tjänsten Anslut. Enskilda enheter ansluter med enhetsautentiseringsuppgifter

Använda en SAS-nyckel med endast sändningsbehörigheter för att generera enhetstoken

Title Details
Komponent Azure Event Hub
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Översikt över Event Hubs-autentisering och säkerhetsmodell
Steg En SAS-nyckel används för att generera enskilda enhetstoken. Använd en SAS-nyckel med endast sändningsbehörigheter när du genererar enhetstoken för en viss utgivare

Använd inte åtkomsttoken som ger direkt åtkomst till händelsehubben

Title Details
Komponent Azure Event Hub
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Översikt över Event Hubs-autentisering och säkerhetsmodell
Steg En token som ger direkt åtkomst till händelsehubben ska inte ges till enheten. Om du använder en minst privilegierad token för enheten som endast ger åtkomst till en utgivare kan du identifiera och neka den om den visar sig vara en falsk eller komprometterad enhet.

Anslut till Event Hub med sas-nycklar som har de minsta behörigheter som krävs

Title Details
Komponent Azure Event Hub
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Översikt över Event Hubs-autentisering och säkerhetsmodell
Steg Ge behörigheter med minst behörighet till olika serverdelsprogram som ansluter till händelsehubben. Generera separata SAS-nycklar för varje serverdelsprogram och ange endast de behörigheter som krävs – Skicka, ta emot eller hantera till dem.

Använda resurstoken för att ansluta till Azure Cosmos DB när det är möjligt

Title Details
Komponent Azure Document DB
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg En resurstoken är associerad med en Azure Cosmos DB-behörighetsresurs och samlar in relationen mellan användaren av en databas och den behörighet som användaren har för en specifik Azure Cosmos DB-programresurs (t.ex. samling, dokument). Använd alltid en resurstoken för att komma åt Azure Cosmos DB om klienten inte kan vara betrodd med hantering av huvudnycklar eller skrivskyddade nycklar , till exempel ett slutanvändarprogram som en mobil- eller skrivbordsklient. Använd huvudnyckeln eller skrivskyddade nycklar från serverdelsprogram som kan lagra dessa nycklar på ett säkert sätt.

Aktivera detaljerad åtkomsthantering till Azure-prenumeration med Hjälp av Azure RBAC

Title Details
Komponent Azure Trust Boundary
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Tilldela Azure-roller för att hantera åtkomst till dina Azure-prenumerationsresurser
Steg Rollbaserad åtkomstkontroll i Azure (Azure RBAC) möjliggör detaljerad åtkomsthantering för Azure. Med Hjälp av Azure RBAC kan du endast bevilja den mängd åtkomst som användarna behöver för att utföra sina jobb.

Begränsa klientens åtkomst till klusteråtgärder med hjälp av Service Fabric RBAC

Title Details
Komponent Förtroendegräns för Service Fabric
SDL-fas Distribution
Tillämpliga tekniker Allmän
Attribut Miljö – Azure
Referenser Rollbaserad åtkomstkontroll för Service Fabric för Service Fabric-klienter
Steg

Azure Service Fabric stöder två olika typer av åtkomstkontroll för klienter som är anslutna till ett Service Fabric-kluster: administratör och användare. Med åtkomstkontroll kan klusteradministratören begränsa åtkomsten till vissa klusteråtgärder för olika användargrupper, vilket gör klustret säkrare.

Administratörer har fullständig åtkomst till hanteringsfunktioner (inklusive läs-/skrivfunktioner). Användare har som standard endast läsbehörighet till hanteringsfunktioner (till exempel frågefunktioner) och möjlighet att lösa program och tjänster.

Du anger de två klientrollerna (administratör och klient) när klustret skapas genom att ange separata certifikat för var och en.

Utför säkerhetsmodellering och använd säkerhet på fältnivå där det behövs

Title Details
Komponent Dynamics CRM
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg Utför säkerhetsmodellering och använd säkerhet på fältnivå där det behövs

Utför säkerhetsmodellering av portalkonton med tanke på att säkerhetsmodellen för portalen skiljer sig från resten av CRM

Title Details
Komponent Dynamics CRM-portalen
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg Utför säkerhetsmodellering av portalkonton med tanke på att säkerhetsmodellen för portalen skiljer sig från resten av CRM

Bevilja detaljerad behörighet för en rad entiteter i Azure Table Storage

Title Details
Komponent Azure Storage
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut StorageType – tabell
Referenser Delegera åtkomst till objekt i ditt Azure Storage-konto med hjälp av SAS
Steg I vissa affärsscenarier kan Azure Table Storage krävas för att lagra känsliga data som vänder sig till olika parter. Till exempel känsliga uppgifter som rör olika länder/regioner. I sådana fall kan SAS-signaturer skapas genom att ange partitions- och radnyckelintervallen, så att en användare kan komma åt data som är specifika för ett visst land/en viss region.

Aktivera rollbaserad åtkomstkontroll i Azure (Azure RBAC) till Azure Storage-konto med hjälp av Azure Resource Manager

Title Details
Komponent Azure Storage
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Skydda ditt lagringskonto med rollbaserad åtkomstkontroll i Azure (Azure RBAC)
Steg

När du skapar ett nytt lagringskonto väljer du en distributionsmodell för Klassisk eller Azure Resource Manager. Den klassiska modellen för att skapa resurser i Azure tillåter endast all-or-nothing-åtkomst till prenumerationen och i sin tur lagringskontot.

Med Azure Resource Manager-modellen placerar du lagringskontot i en resursgrupp och styr åtkomsten till hanteringsplanet för det specifika lagringskontot med hjälp av Microsoft Entra-ID. Du kan till exempel ge specifika användare möjlighet att komma åt lagringskontonycklarna, medan andra användare kan visa information om lagringskontot, men inte komma åt lagringskontonycklarna.

Implementera implicit jailbreak eller rotidentifiering

Title Details
Komponent Mobil klient
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg

Programmet bör skydda sin egen konfiguration och användardata om telefonen är rotad eller om fängelset är trasigt. Rotning/fängelsebrott innebär obehörig åtkomst, vilket vanliga användare inte gör på sina egna telefoner. Därför bör programmet ha implicit identifieringslogik vid programstart för att identifiera om telefonen har rotats.

Identifieringslogik kan bara komma åt filer som normalt bara rotanvändare kan komma åt, till exempel:

  • /system/app/Superuser.apk
  • /sbin/su
  • /system/bin/su
  • /system/xbin/su
  • /data/local/xbin/su
  • /data/local/bin/su
  • /system/sd/xbin/su
  • /system/bin/failsafe/su
  • /data/local/su

Om programmet kan komma åt någon av dessa filer anger det att programmet körs som rotanvändare.

Referens för svag klass i WCF

Title Details
Komponent WCF
SDL-fas Skapa
Tillämpliga tekniker Generic, NET Framework 3
Attribut Inte tillgängligt
Referenser MSDN, Fortify Kingdom
Steg

Systemet använder en svag klassreferens, vilket kan göra det möjligt för en angripare att köra obehörig kod. Programmet refererar till en användardefinierad klass som inte är unikt identifierad. När .NET läser in den här svagt identifierade klassen söker CLR-typinläsaren efter klassen på följande platser i den angivna ordningen:

  1. Om sammansättningen av typen är känd söker inläsaren igenom konfigurationsfilens omdirigeringsplatser, GAC, den aktuella sammansättningen med hjälp av konfigurationsinformation och programbaskatalogen
  2. Om sammansättningen är okänd söker inläsaren igenom den aktuella sammansättningen, mscorlib och platsen som returneras av TypeResolve-händelsehanteraren
  3. Den här CLR-sökordningen kan ändras med krokar, till exempel mekanismen för vidarebefordran av typ och händelsen AppDomain.TypeResolve

Om en angripare utnyttjar CLR-sökordningen genom att skapa en alternativ klass med samma namn och placera den på en annan plats som CLR läser in först, kör CLR oavsiktligt koden som tillhandahålls av angriparen

Exempel

Elementet <behaviorExtensions/> i WCF-konfigurationsfilen nedan instruerar WCF att lägga till en anpassad beteendeklass i ett visst WCF-tillägg.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name=""myBehavior"" type=""MyBehavior"" />
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

Att använda fullständigt kvalificerade (starka) namn identifierar unikt en typ och ökar säkerheten i systemet ytterligare. Använd fullständigt kvalificerade sammansättningsnamn när du registrerar typer i filerna machine.config och app.config.

Exempel

Elementet <behaviorExtensions/> i WCF-konfigurationsfilen nedan instruerar WCF att lägga till en starkt refererad anpassad beteendeklass till ett visst WCF-tillägg.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name=""myBehavior"" type=""Microsoft.ServiceModel.Samples.MyBehaviorSection, MyBehavior,
            Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"" />
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

Auktoriseringskontroll för WCF-Implement

Title Details
Komponent WCF
SDL-fas Skapa
Tillämpliga tekniker Generic, NET Framework 3
Attribut Inte tillgängligt
Referenser MSDN, Fortify Kingdom
Steg

Den här tjänsten använder inte någon auktoriseringskontroll. När en klient anropar en viss WCF-tjänst tillhandahåller WCF olika auktoriseringsscheman som kontrollerar att anroparen har behörighet att köra tjänstmetoden på servern. Om auktoriseringskontroller inte är aktiverade för WCF-tjänster kan en autentiserad användare uppnå behörighetseskalering.

Exempel

Följande konfiguration instruerar WCF att inte kontrollera auktoriseringsnivån för klienten när tjänsten körs:

<behaviors>
    <serviceBehaviors>
        <behavior>
            ...
            <serviceAuthorization principalPermissionMode=""None"" />
        </behavior>
    </serviceBehaviors>
</behaviors>

Använd ett tjänstauktoriseringsschema för att kontrollera att anroparen för tjänstmetoden har behörighet att göra det. WCF tillhandahåller två lägen och tillåter definitionen av ett anpassat auktoriseringsschema. Läget UseWindowsGroups använder Windows-roller och -användare och läget UseAspNetRoles använder en ASP.NET rollprovider, till exempel SQL Server, för att autentisera.

Exempel

Följande konfiguration instruerar WCF att se till att klienten ingår i gruppen Administratörer innan du kör Lägg till tjänst:

<behaviors>
    <serviceBehaviors>
        <behavior>
            ...
            <serviceAuthorization principalPermissionMode=""UseWindowsGroups"" />
        </behavior>
    </serviceBehaviors>
</behaviors>

Tjänsten deklareras sedan som följande:

[PrincipalPermission(SecurityAction.Demand,
Role = ""Builtin\\Administrators"")]
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}

Implementera rätt auktoriseringsmekanism i ASP.NET webb-API

Title Details
Komponent Webb-API
SDL-fas Skapa
Tillämpliga tekniker Generic, MVC5
Attribut N/A, identitetsprovider – ADFS, identitetsprovider – Microsoft Entra-ID
Referenser Autentisering och auktorisering i ASP.NET webb-API
Steg

Rollinformation för programanvändarna kan härledas från Microsoft Entra-ID eller ADFS-anspråk om programmet förlitar sig på dem som identitetsprovider eller själva programmet kan tillhandahålla det. I något av dessa fall bör implementeringen av anpassad auktorisering verifiera användarrollsinformationen.

Rollinformation för programanvändarna kan härledas från Microsoft Entra-ID eller ADFS-anspråk om programmet förlitar sig på dem som identitetsprovider eller själva programmet kan tillhandahålla det. I något av dessa fall bör implementeringen av anpassad auktorisering verifiera användarrollsinformationen.

Exempel

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class ApiAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
        public async override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
        {
            if (actionContext == null)
            {
                throw new Exception();
            }

            if (!string.IsNullOrEmpty(base.Roles))
            {
                bool isAuthorized = ValidateRoles(actionContext);
                if (!isAuthorized)
                {
                    HandleUnauthorizedRequest(actionContext);
                }
            }

            base.OnAuthorization(actionContext);
        }

public bool ValidateRoles(actionContext)
{
   //Authorization logic here; returns true or false
}

}

Alla kontrollanter och åtgärdsmetoder som behöver skyddas ska vara dekorerade med attributet ovan.

[ApiAuthorize]
public class CustomController : ApiController
{
     //Application code goes here
}

Utföra auktoriseringskontroller på enheten om den stöder olika åtgärder som kräver olika behörighetsnivåer

Title Details
Komponent IoT-enhet
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg

Enheten bör ge anroparen behörighet att kontrollera om anroparen har de behörigheter som krävs för att utföra den begärda åtgärden. Till exempel kan vi säga att enheten är ett Smart Door Lock som kan övervakas från molnet, plus att den tillhandahåller funktioner som fjärrlåsning av dörren.

Smart Door Lock ger endast upplåsningsfunktioner när någon fysiskt kommer nära dörren med ett kort. I det här fallet bör implementeringen av fjärrkommandot och kontrollen göras på ett sådant sätt att den inte tillhandahåller några funktioner för att låsa upp dörren eftersom molngatewayen inte har behörighet att skicka ett kommando för att låsa upp dörren.

Utföra auktoriseringskontroller i fältgatewayen om den stöder olika åtgärder som kräver olika behörighetsnivåer

Title Details
Komponent IoT-fältgateway
SDL-fas Skapa
Tillämpliga tekniker Allmän
Attribut Inte tillgängligt
Referenser Inte tillgängligt
Steg Fältgatewayen bör ge anroparen behörighet att kontrollera om anroparen har de behörigheter som krävs för att utföra den begärda åtgärden. Till exempel bör det finnas olika behörigheter för ett användargränssnitt/API för administratörer som används för att konfigurera en fältgateway v/s-enheter som ansluter till den.