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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
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 | Ej tillämpligt |
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 |
Ansluta till Cloud Gateway med minst privilegierade token
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 Service Connect. 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 | Ej tillämpligt |
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 | Ej tillämpligt |
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. |
Ansluta till Händelsehubb med hjälp av SAS-nycklar som har de lägsta behörigheter som krävs
Title | Details |
---|---|
Komponent | Azure Event Hub |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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:
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 | Ej tillämpligt |
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:
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 | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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 | Ej tillämpligt |
Referenser | Ej tillämpligt |
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. |